[TUTO] Update Firmware SIM8XX

Il existe plusieurs modules GSM de la série SIM800 de chez SIMCOM possédant chacun des spécificités propres : taille, interfaces, fonctions supplémentaires (GNSS, Bluetooth)… etc. Les firmwares de ces modules sont souvent mis à jour, intégrant alors de nouvelles fonctionnalités (ajout de nouvelles commandes, fix de bugs…). Cet article vous présente comment mettre à jour vos modules SIMCOM de la série SIM8XX et ainsi exploiter tout le potentiel de votre matériel.

Ce tutoriel utilise un flashage du firmware par la liaison série du module (RX / TX). Un Arduino en MultiSerial ou convertisseur UART – USB peuvent être utilisés afin d’interfacer le module avec votre ordinateur.

Le module utilisé pour la démonstration est un SIM800L de chez SIMCOM.

Téléchargement de l’outil :

Télécharger la dernière version du firmware du module sur le site officiel de SIMCOM : http://simcom.ee/documents/?dir

Lancer l’exécutable :

Entrer les configurations de la carte :

  • Target : type de carte utilisé (ici un SIM800L)
  • PortType : type de transfert, via liaison USB ou UART (RX / TX)
  • Com : port COM utilisé
  • Baud rate : vitesse de transmission (souvent 9600 ou 115200 par défaut)
  • Image Folder : sélection du firmware à flasher dans le module

Cliquer sur Image Folder afin de sélectionner le .cfg du firmware à flasher :

Vérifier que le module est bien ETEINT puis cliquer sur Start Download. Le module doit être éteint afin que le logiciel puisse flasher le module avant son démarrage complet. Une indication (waiting) apparait, attendant le démarrage du module.

Allumer le module. La barre de téléchargement doit alors se lancer.

Une fois le download correctement effectué, une fenêtre apparaît indiquant le bon déroulement du processus.

Sources d’erreurs possibles :

  • Mauvais port COM sélectionné
  • Erreur de branchement des signaux RX/TX
  • Ordre d’allumage du module
  • Mauvais firmware

nb : pour le cas du SIM800L, deux versions de firmwares existent. Selon la version du module il faut choisir l’une ou l’autre. La commande AT+GMR retourne la version du firmware dans le module :
1308B0XSIM800L16 = mettre la version de firmware disponible sur le site SIMCOM
1418B0XSIM800L24 = mettre la version de firmware suivante : 1418B05SIM800L24

[Tuto] Rétro Pi sur Raspberry Pi 2

Aujourd’hui nous ajoutons au catalogue des manettes rétros de NES, l’occasion parfait de vous parler de Rétro Pi.

Rétro Pi est une distribution pour Raspberry Pi ayant pour but d’émuler d’anciennes consoles de jeux vidéos. Ces distributions sont compatibles tous Raspberry Pi, et permettent de gérer les manettes USB comme les extensions pour boutons d’arcades et joysticks. Nous allons l’installer sur un Raspberry Pi 2 avec 2 manettes NES en USB.

Première étape: Télécharger l’image Retro Pi

Le site Rétro Pi propose une page pour télécharger les différentes images existantes: https://retropie.org.uk/download/

Comme d’habitude, choisissez une carte SD suffisamment grande (4Go dans notre cas), formatez la et gravez l’image dessus.

Deuxième étape: Paramétrer les manettes

Au démarrage de votre Raspberry Pi, celui-ci détecte les manettes et vous propose de les paramètrer.

welcomescreen

Troisième étape: Ajouter quelques ROMs

Pour cela de nombreux sites permettent de télécharger les ROMs de vos jeux favoris. En voici un exemple: http://www.freeroms.com

Pour les ajouter à votre Retro Pi, voici les étapes à suivre:

  • Formater une clé USB (FAT32)
  • Créer un répertoire « retropie » avec votre ordinateur
  • Brancher la clé au Raspberry Pi
  • Attendre qu’elle arrête de clignoter
  • Débrancher du Raspberry Pi et rebrancher à votre ordinateur
  • Des répertoires ont dû être créés, vous pouvez vos ROMS dans « retropie/roms » (attention à bien choisir la console en question)
  • Rebrancher la clé au Raspberry Pi
  • Attendre qu’elle arrête de clignoter
  • Redémarrer la console (Menu « restart emulationstation »)

Profitez!

retropie-original-flat-outline

Letmeknow ouvre ses services d’impression 3D

Nous allons aborder dans cet article les services d’Impression 3D.

Elle se compose de trois prestations détaillées ci-dessous:

IMPRESSION_3D

  • La Conception 3d s’adresse à tous ceux qui souhaitent matérialiser leurs idées et imagination. Notre équipe vous accompagne dans la conception de vos objets 3D (de l’idée à la matérialisation de l’objet). Nous vous conseillons sur l’optimisation des formes, les choix de matière, l’imprimabilité du design, etc..
  • La fabrication de pièces à partir de vos fichiers est également mis en place, certains d’entre vous nous ont peut-être déjà utilisé nos services d’impression via 3d Hubs. Désormais, vous pouvez effectuer vos demandes d’impression via le formulaire présent sur la page Fabrication 3d. Vous paramétrez directement en ligne vos futurs objets.
  • La location de nos imprimantes Craftbot Plus et Dagoma Discovery 200 devient possible. Nous mettons à votre disposition pour la durée qui convient une machine prête à l’usage et du consommable (Option). Les tarifs de location sont disponibles sur la page Location 3d. Pour réaliser vos projets à courts termes, augmenter vos capacités de production, faire un événement impression 3D, ce service est l’alternative parfaite à l’achat d’une imprimante.

De nouveaux services sont en train d’être développés notamment autour de la découpe laser et du fraisage numérique. Patience, ils seront dévoilés très prochainement 😉

Plus d’informations sur : http://letmeknow.fr/shop/content/category/6-impression-3d

Letmeknow ouvre ses services de fabrication électronique

Venez découvrir notre nouvelle rubrique de services sur :   http://letmeknow.fr/shop/content/22-nos-services

Voici venu le temps que beaucoup d’entre vous attendait ou espérait secrètement. Une nouvelle offre vient s’ajouter à notre site internet : Nos Services. En s’apercevant du nombre croissant de demandes, l’équipe de Letmeknow a décidé que le moment était venu d’ajouter une nouvelle corde à son arc.

Ces services sont séparés en quatre domaines d’expertises:

  1. Les Cartes Electroniques
  2. L’impression 3D
  3. La Fraiseuse Numérique ( Disponible prochainement)
  4. La découpeuse laser ( Disponible prochainement)

Sur ce post, nous aborderons premièrement les Cartes Electroniques, trois types de prestations sont proposées concernant cet univers :

CARTES_ELECTRONIQUES

 

  • Les formations par nos équipes expérimentées sous forme de mini-projets en rapport direct avec votre secteur d’activité tels que : la réalisation de prototypes ou la programmation embarquée. La liste de formations n’est pas exhaustive et nos équipes restent ouvertes à toute proposition.
  • Vous avez une idée et vous ne savez pas comment la réaliser ? Quel que soit le produit que vous souhaitez réaliser, nous vous accompagnons pour définir l’idée, concevoir, et réaliser la partie hardware et la partie software de vos produits. Nous avons déjà réalisé plus de 70 projets dans divers domaines ( médical, consumer electronic..) pour des clients de tous les univers (Médicale, service urbain, automobile…).
  • Enfin, nous produisons vos cartes électroniques, le mode de production évolue en fonction du nombre de pièces demandées. Il vous est possible de renseigner vos critères sur le formulaire présent sur la page et de définir votre épaisseur, finition… désirée de cartes électronique.

Pour plus d’information sur ces nouveautés, rendez-vous sur http://letmeknow.fr/shop/content/category/5-pcb

[Tuto] Premier programme avec l’API Particle

Nous allons voir comment utiliser simplement l’API Particle depuis son navigateur. L’objectif va être d’allumer à distance une LED raccordée à un Particle Electron, cela fonctionne de la même manière pour le Core et Photon.

Programme de la carte

Pour le programme à injecter dans l’Electron, on se repose sur l’exemple « web-connected-led.ino »

// -----------------------------------
// Controlling LEDs over the Internet
// -----------------------------------

int led1 = D0;
int led2 = D7;

void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);

Particle.function("led",ledToggle);

digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
}

void loop()
{
}

int ledToggle(String command) {

if (command=="on") {
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
return 1;
}
else if (command=="off") {
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
return 0;
}
else {
return -1;
}
}

Ce programme va automatiquement créer la requête correspondante à la fonction « led ».

Première méthode par utilisation d’une page Web

Nous allons créer un formulaire Web « test.html » dans l’optique d’utiliser la méthode POST dans une page Web. Nous reprenons également la page Web proposé par le tutoriel Particle.

<!-- Replace your-device-ID-goes-here with your actual device ID and replace your-access-token-goes-here with your actual access token-->
<!DOCTYPE>
<html>
<body>
<center>
<form action="https://api.particle.io/v1/devices/your-device-ID-goes-here/led?access_token=your-access-token-goes-here" method="POST">
Tell your device what to do!<br> <br> 
<input type="radio" name="args" value="on">Turn the LED on. <br>
<input type="radio" name="args" value="off">Turn the LED off. <br> <br>
<input type="submit" value="Do it!">
</form>
</center>
</body>
</html>

La réponse reçue après validation du formulaire est du type:

{
  "id": "your-device-ID-goes-here",
  "last_app": "",
  "connected": true,
  "return_value": 1
}

Deuxième méthode par utilisation d’une Chrome App

Il existe sur Chrome des applications permettant de réaliser toutes sortes de choses. Aujourd’hui nous nous intéresserons à l’application Advanced Rest Client. Elle permet de réaliser simplement des requêtes API de type POST.

App chrome

[Tuto] Module GSM SIM800L – Recevoir des données HTTP

Pour voir le montage et la prise en main de ce module SIM800L, vous pouvez suivre le tuto sur cette page: Tuto SIM800L – Montage et prise en main

On souhaite consulter une page web et récupérer son contenu pour pouvoir l’afficher dans le moniteur série. Pour cela, on utilise le réseau GPRS du module. Pour une carte SIM Free, l’APN a renseigné est tout simplement « free ». Pour d’autres opérateurs, il se peut qu’il y ai un identifiant et un mot de passe à renseigner. La commande AT à utiliser est alors : AT+CSTT=<APN>,<identifiant>,<mot de passe>

// Importation des librairies
#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial sim800l(7,8);          //RX, TX
boolean data;

void setup() {
  // Démarrage du modem
  sim800l.begin(9600);
  // Initialisation de la communication série 
  Serial.begin(9600);
  delay(500);
  data = true;
}

void loop() {
  if(data==true){
    getdata();
    data = false;
  }
  if (sim800l.available()>0) 
    Serial.write(sim800l.read());
}


void getdata(){
  Serial.println("Get data HTTP");
  //set up GPRS, connection type
  sim800l.print("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r");
  delay(1000);
  // set the APN
  sim800l.print("AT+SAPBR=3,1,\"APN\",\"free\"\r");
  delay(1000);
  //tries to connect to GPRS
  sim800l.print("AT+SAPBR=1,1\r");
  delay(2000);
  // initialise embedded HTTP ruttine
  sim800l.print("AT+HTTPINIT\r");
  delay(2000);
  // set the HTTP session
  sim800l.print("AT+HTTPPARA=\"CID\",1\r");
  delay(1000); 
  Serial.println("Enter the URL of the website: ");
  char url[100];
  readSerial(url);  // votre URL
  Serial.println(url);
  // set the HTTP URL
  sim800l.print("AT+HTTPPARA=\"URL\",\"");
  sim800l.print(url);
  sim800l.print("\"\r");
  delay(1000);
  // start the session
  sim800l.print("AT+HTTPACTION=0\r");
  delay(10000);
  // read the data of the HTTP server
  sim800l.print("AT+HTTPREAD\r");
  delay(1000);
  // terminate the HTTP server
  sim800l.print("AT+HTTPTERM\r");
  delay(100);
  sim800l.println();
}

int readSerial(char result[]) {
  int i = 0;
  while (1) {
    while (Serial.available() > 0) {
      char inChar = Serial.read();
      if (inChar == '\n') {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if (inChar != '\r') {
        result[i] = inChar;
        i++;
      }
    }
  }
}

Récapitulatif des AT commandes utilisées pour recevoir des données HTTP:

CommandeRéponseInfo
AT+CGATT ?+CGATT : <nbr de réseau>Cherche le nombre de réseau disponible
AT+SAPBR=3,1,”CONTYPE”,”GPRS”OKConfigure le profil 1, type de connexion internet : GPRS
AT+SAPBR=3,1,”APN”,”free”OKConfigure le réseau APN
AT+SAPBR=1,1OKTentative de connexion GPRS
AT+HTTPINITOKInitialisation
AT+HTTPPARA=”CID”,1OKConfiguration http
AT+HTTPPARA=”URL”,”<URL>”OKConfigure l’adresse URL
AT+HTTPACTION=0OKLance la session
AT+HTTPREAD+HTTPREAD :<date_len>,<contenu>Lis les données DATA du serveur http
AT+HTTPTERMOKFin
AT+CIFSR<adresse IP>Retourne l’adresse IP

[Tuto] Module GSM SIM800L – Appeler

Pour voir le montage et la prise en main de ce module SIM800L, vous pouvez suivre le tuto sur cette page: Tuto SIM800L – Montage et prise en main.
Ce programme appellera le numéro entré dans le moniteur série et raccrochera tout seul au bout de 10 secondes.

// Importation des librairies
#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial sim800l(7,8);          // RX, TX
boolean call;

void setup(){
  sim800l.begin(9600);  // Démarrage du modem
  Serial.begin(9600);   // Initialisation de la communication série
  delay(500); 
  call = true;
  if(sim800l.available()) 
  Serial.write(sim800l.read());
  } 

void loop(){ 
  if(call==true){
    voicecall();
    call = false;
   }
 } 

void voicecall(){ 
  Serial.println("Make voice call"); 
  Serial.println("Enter the phone number you want to call"); 
  char number[20]; 
  readSerial(number); 
  Serial.print("Calling: "); 
  Serial.println(number); 
  delay(100); 
  sim800l.print("ATD");   // Appel 
 sim800l.print(number); 
  sim800l.print(";\r"); 
  delay(3000); 
  Serial.println("Hung up in 10 sec");
  delay(10000); 
  sim800l.print("ATH\r");    
  // Raccroche Serial.println("Call ended"); 
  sim800l.println(); 
} 

int readSerial(char result[]) { 
  int i = 0; 
  while (1) { 
    while (Serial.available() > 0) { 
    char inChar = Serial.read(); 
    if (inChar == '\n') { 
      result[i] = '\0';
      Serial.flush(); 
      return 0; 
    }
    if (inChar != '\r'){
      result[i] = inChar; i++; 
    } 
   }
  }
}

Récapitulatif des commandes AT nécessaires pour passer un appel:

CommandeRéponseInfo
ATD<n° de tél>OKAppel
ATHOKRaccroche
ATAOKRépond à un appel entrant

[Tuto] Module GSM SIM800L – Recevoir un SMS et le lire

Pour voir le montage et la prise en main de ce module SIM800L, vous pouvez suivre le tuto sur cette page: Tuto SIM800L – Montage et prise en main

Le programme suivant reçoit et affiche dans le moniteur série les SMS contenus sur la carte SIM, à l’aide des commandes AT :

 // Importation des librairies
#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial sim800l(7,8);    // RX, TX
boolean sms;

void setup(){      // début du setup
  // Démarrage du modem
  sim800l.begin(9600);
  // Initialisation de la communication série
  Serial.begin(9600);
  delay(500);    // Délai pour la connexion
  sms = true;
}

void loop(){    // Début du loop
  if(sms==true){
    receivesms();
    sms = false;
  }
  // affichage dans le moniteur série des commandes AT + réponse
  if (sim800l.available()>0)
    Serial.write(sim800l.read());
  }

void receivesms(){
  Serial.println("Receiving text message...");
  sim800l.print("AT+CMGF=1\r");   // Configure le mode SMS
  // Affiche tous les messages
  sim800l.print("AT+CMGL=\"ALL\"\r");
  delay(1000);
  sim800l.println();
receivesms1

En fonction de vos besoin vous pouvez remplacer AT+CMGL= »ALL » par :

  • AT+CMGL= « REC READ » : Affiche tous les messages lus
  • AT+CMGL= « REC UNREAD » : Affiche tous les messages non lus.

Si vous désirez supprimer les SMS contenus sur la carte SIM, il faut exécuter la commander AT+CMGD :

  • AT+CMGD =1 : supprime les SMS déjà lus
  • AT+CMGD=2 : supprime les SMS lus, et envoyés
  • AT+CMGD=3 : supprime les SMS lus, envoyés et non envoyés
  • AT+CMGD=4 : supprimes tous les SMS (lus, non lus, envoyés et non envoyés)

Attention ! Pour pouvoir afficher correctement l’ensemble du contenu de vos messages, vous devez modifier votre librairie Arduino SoftwareSerial.

Trouvez le fichier SoftwareSerial.h et modifiez la ligne de commande :

  #define _SS_MAX_RX_BUFF 64 // RX buffer size

En :

  #define _SS_MAX_RX_BUFF 256 // RX buffer size

Récapitulatif des commandes AT nécessaires pour lire et supprimer des SMS:

CommandeRéponseInfo
AT+CMGL= ”REC UNREAD”+CMGL : <index>, ”REC UNREAD”,”<n° de tél>,””,<Date et heure>

<Message>

OK

Affiche tous les SMS non lus
AT+CMGL= ”REC READ”+CMGL : <index>, ”REC READ”,”<n° de tél>,””,<Date et heure>

<Message>

OK

Affiche tous les SMS lus
AT+CMGL= ”STO UNSENT READ”OKEnregistre les SMS non envoyés
AT+CMGL= ”STO SENT READ”OKEnregistre les SMS envoyés
AT+CMGL=”ALL”+CMGL : <index>, ”ALL”,”<n° de tél>,””,<Date et heure>

<Message>

OK

Affiche tous les messages
AT+CMGD=1OKSupprime les SMS déjà lus
AT+CMGD=2OKSupprime les SMS lus et non envoyés
AT+CMGD=3OKSupprime les SMS lus, envoyés et non envoyés
AT+CMGD=4OKSupprime tous les SMS (lus, non lus, envoyés et non envoyés)

[Tuto] Module GSM SIM800L – Envoyer un SMS

Pour voir le montage et la prise en main de ce module SIM800L, vous pouvez suivre le tuto sur cette page: Tuto SIM800L – Montage et prise en main

Le programme suivant utilise les AT commandes pour envoyer un SMS.

 // Importation des librairies
#include <SoftwareSerial.h>
#include <String.h> 

SoftwareSerial sim800l(7,8); // RX,TX
boolean sms;

void setup(){           // Début du setup
  sim800l.begin(9600);  // Démarrage du modem
  Serial.begin(9600);	// Initialisation de la communication série
  delay(500);		// Délai pour la connexion 
  sms = true;
  
  if(sim800l.available())
  Serial.write(sim800l.read());
  }
  
   void loop(){	// Début du loop
   if(sms==true){
     sendsms();				
     sms = false;
   }
 }
   
  void sendsms(){
    Serial.println("Sending text message...");
    sim800l.print("AT+CMGF=1\r");  // Lance le mode SMS
    delay(100);
    // Entrez votre numéro de téléphone    
    sim800l.print("AT+CMGS=\"+3367617****\"\r");  
    delay(100);
    // Entrez votre message ici    
    sim800l.print("Message ici \r");  
    // CTR+Z en langage ASCII, indique la fin du message
    sim800l.print(char(26));			  
    delay(100);
    sim800l.println();
    Serial.println("Text send");  // Le message est envoyé.
    }

Ou pour modifier les informations (numéro de téléphone, message) dans le moniteur série :

 // Importation des librairies
#include <SoftwareSerial.h>
#include <String.h>
SoftwareSerial sim800l(7,8);
boolean sms;

void setup(){
  sim800l.begin(9600);  // Démarrage du modem
  Serial.begin(9600);   // Initialisation de la communication série
  delay(500);           // Délai connexion
  sms = true;
  if(sim800l.available())
    Serial.write(sim800l.read());
  }

void loop(){
  if(sms==true){   // on ne passe qu’une seule fois dans le loop()
    sendsms();
  sms = false;
}
}

void sendsms(){
  // set SMS mode
  Serial.println("SMS sender");
  sim800l.print("AT+CMGF=1\r");    // initialise le mode SMS
  delay(100);
  // phone number
  Serial.println("Enter the phone number :");
  char number[20] ;
  readSerial(number);
  sim800l.print("AT+CMGS=");
  sim800l.print(number);
  sim800l.print("\"\r");
  // message
  delay(100);
  Serial.print("Enter your message to send to : ");
  Serial.println(number);
  char message[200];
  readSerial(message);
  sim800l.println(message);
  sim800l.print(char(26));
  delay(100);
  sim800l.println();
  Serial.print("Message : ");
  Serial.println(message);
  Serial.println("Text send");
 }

int readSerial(char result[]){
  int i = 0;
  while (1)
  {
  while (Serial.available() > 0){
    char inChar = Serial.read();
    if (inChar == '\n')
    {
  result[i] = '\0';
  Serial.flush();
  return 0;
  }
  if (inChar != '\r'){
    result[i] = inChar;
    i++;
  }}}}

Récapitulatif des commandes AT pour l’envoi d’un SMS

CommandeRéponseInfo
AT+CMGF=1OKConfigure le mode SMS
AT+CMGS=”<numéro de telephone>”  ENTER

> Votre message  CTR+Z

OKEnvoi un SMS au numéro indiqué

[Tuto] Module GSM SIM800L – Prise en main

Le module GSM SIM800L est l’un des plus petits modules GSM du monde avec une taille de 2.2 cm x 1.8 cm. C’est un module puissant qui démarre automatiquement et recherche automatiquement le réseau. Il inclut notamment le Bluetooth 3.0+EDR et la radio FM (récepteur uniquement). Il vous permettra d’échanger des SMS, de passer des appels mais aussi, et c’est nouveau, de récupérer de la data en GPRS 2G+. Ainsi vous pourrez faire transiter des données sur une très longue distance, si par exemple la radio FM ou le Bluetooth ne vous suffit plus.

Librairies : SoftwareSerial.h

Matériel : Arduino, SIM800L, carte SIM, diode 1N4007, jumpers, breadboard

Datasheets : SIM800L | At command

Montage :

Ce module nécessite une alimentation entre 3,4V et 4,4V. L’alimentation 5V de l’Arduino ne lui convient donc pas. Pour contrer ce problème d’alimentation, on ajoute une diode 1N4007 entre le 5V de l’Arduino et le pin VCC du SIM800L. Le SIM800L nécessite un pic de courant d’environ 2A. Le reste du branchement est détaillé ci-dessous. La pin reset doit être relié au 3,3v de l’arduino.

untitled-2
20161003_1223291

Il faut également insérer votre SIM dans le compartiment prévu à cet effet sur le module, comme montré dans la photo ci-dessous. Le sens d’insertion de la carte SIM dans le module à son importance. La carte SIM doit être une micro SIM.

SIM800L

Les AT commands (Commandes Hayes)

Les commandes AT sont définies dans la norme GSM 07.07.AT est l’abréviation de ATtention. Ces 2 caractères sont toujours présents pour commencer une ligne de commande sous forme de texte (codes ASCII). Les commandes permettent la gestion complète du module.

On peut utiliser ces commandes directement dans le moniteur série. Il suffit de compiler, téléverser le programme ci-dessous et d’ouvrir le moniteur série. Vous n’avez plus qu’à entrer les différentes commandes AT pour effectuer ce que vous désirez.

Vous pouvez envoyer ou recevoir des SMS, passer ou recevoir un appel, récupérer des données HTTP en entrant directement dans le moniteur série les commandes nécessaires.

// Connect VCC to +5V
// Connect GND to Ground
// Connect RXD (data into SIM800L) to Digital 8
// Connect TXD (data out from SIM800L) to Digital 7
#include <SoftwareSerial.h>
SoftwareSerial sim800l(7, 8); // RX, TX

void setup() {
 Serial.begin(9600);
 sim800l.begin(9600);
}

void loop(){
 if (sim800l.available())
 Serial.write(sim800l.read());

 if (Serial.available()) {
 while(Serial.available()){
 sim800l.write(Serial.read());
 }
 sim800l.println();
 }
}

Le code PIN

Il se peut que votre carte SIM soit verrouillée à l’aide d’un code PIN. Vous devrez entrer à chaque fois votre code pour déverrouiller votre carte. Ajouter les lignes de commandes suivantes avant le setup() et remplacer les XXXX par votre code PIN.

// Code PIN de la carte SIM

String SIM_PIN_CODE = String( "XXXX" );

Puis, ajoutez dans la boucle setup():

sim800l.print("AT+CPIN=");
sim800l.println( SIM_PIN_CODE );

1er test : Lancer le module et récupérer son IMEI

On peut utiliser les AT commandes pour obtenir l’IMEI. La commande AT+GSN récupère l’IMEI de votre module. Vous pouvez ainsi vérifier que ce que vous obtenez est bien l’IMEI inscrit sur votre module.

On peut trouver dans le logiciel de l’Arduino un programme qui va nous permettre d’afficher l’IMEI de la SIM800L dans le moniteur série. Ce programme se trouve dans Fichier > Exemples > GSM > Tools > TestModem.

Les principales commandes de test :

ATISIM800 R13.08Statut du modem
AT+CREG+CREG : 0,5Statut du réseau.

1er indice : 0 -> GSM

2ème indice : 0 -> pas de réseau

5 -> réseau ok

 

 

AT+CPIN ?+CPIN READYPas de code PIN nécessaire
AT+CSQ+CSQ : <rssi>,<ber>Intensité du signal.

<rssi> : received signal strength indication.

<ber>: bit error rate (%)

0 -> less than 0,2%

AT+COPS ?+COPS : <mode>,<format>,<opérateur>Affiche l’opérateur sélectionné