[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é