Ce que vous apprendrez

Les points à développer:

  • Ce qu'est un module GSM SIM800L
  • Le câblage avec Arduino
  • Le code simple pour le test 

Prérequis

aucun

Contenu du cours

Le Module GSM sim800L est un mini module qui permet l’envoi et la réception des SMS, l’émission et la réception d’appels vocaux, la connexion à internet dans le but d’accéder à une base de données ou au contenu d’une page et la transmission GPRS offrant un débit de données plus élevé que le GSM mais complémentaire à celui-ci etc.

Le module prend en charge le débit en bauds de 1200 bps à 115200 bps avec détection Auto-Baud. Le module possède à l’arrière une prise SIM compatible avec les micro SIM.

Il utilise une interface de communication série, supporte les commandes AT avancées 3GPP TS 27.007, 27.005 et SIMCOM. Il prend également en charge la technologie A-GPS, qui aide à maintenir la position interne du réseau cellulaire.


Quelques caractéristiques: 

Ø  - Modèle du module: SIM800L

Ø  - Tension de fonctionnement: 3.4 ~ 4.4V

Ø  - Courant de fonctionnement : 200mA à 2A

Ø  - Plage de température de Travail : -40° C ~ 85°C 

Ø  - Taille du Module: 2.5cm x 2.3cm

 

Présentation du Module GSM Sim 800L


Ce module comporte 12 broches. Dans ce tutoriel, nous utiliserons 5.

·     * GND: Connectée à la masse du circuit ;

·     * TXD: Servant au module de transmettre des données ;

·     * RXD: Servant au module de recevoir des données ;

·    * VCC: Connectée à la borne positive de la source de courant (pouvant délivrer jusqu’à 2A tout en respectant la plage de tension de 3,4 V à 4,4V)

·     * NET: Sur cette broche peut être soudée l’antenne hélicoïdale fournie avec le module


Matériels

Tous ces matériels sont disponible chez Youpilab Bénin https://youpilab.com/components

    Câblage




                                            Image : Câblage




    #include <SoftwareSerial.h>

    //Numéro d'envoie (avec le code du pays)
    const String PHONE = "+22995653362";
    //GSM Module RX pin to Arduino 3
    //GSM Module TX pin to Arduino 2
    #define rxPin 2
    #define txPin 3
    SoftwareSerial sim800(rxPin,txPin);
    int LED=8; //,Broche de la LED
     /*Déclaration et Initialisation des Strings*/
    String smsStatus="",senderNumber="",receivedDate="",msg="";
    boolean isReply = false;

    void setup() {
      pinMode(LED, OUTPUT);
      digitalWrite(LED, LOW);
      Serial.begin(115200);
      sim800.begin(9600);
      Serial.println("Initialisation série du logiciel SIM800L");
      sim800.print("AT+CMGF=1\r");
      delay(1000);
    }
    void loop() {
        while(sim800.available()){
          Serial.println("En traitement");
          parseData(sim800.readString());
          }
        while(Serial.available())  {
          sim800.println(Serial.readString());
          }
    } //fin de la boucle loop
    //***************************************************
    void parseData(String buff){
      Serial.println(buff);
      unsigned int len, index;
      //////////////////////////////////////////////////
     //Supprimez la "Commande AT" envoyée de la chaîne de réponse.
      index = buff.indexOf("\r");
      buff.remove(0, index+2);
      buff.trim();
      //////////////////////////////////////////////////
      
      //////////////////////////////////////////////////
      if(buff != "OK"){
        index = buff.indexOf(":");
        String cmd = buff.substring(0, index);
        cmd.trim();
        
        buff.remove(0, index+2);
        
        if(cmd == "+CMTI"){
          //get newly arrived memory location and store it in temp
          index = buff.indexOf(",");
          String temp = buff.substring(index+1, buff.length()); 
          temp = "AT+CMGR=" + temp + "\r"; 
          //get the message stored at memory location "temp"
          sim800.println(temp); 
        }
        else if(cmd == "+CMGR"){
          extractSms(buff);
          doAction();
        }
      }
      else{

    //Continuer

      }
    }

    //************************************************************
    void extractSms(String buff){
       unsigned int index;
       
        index = buff.indexOf(",");
        smsStatus = buff.substring(1, index-1); 
        buff.remove(0, index+2);
        
        senderNumber = buff.substring(0, 13);
        buff.remove(0,19);
        receivedDate = buff.substring(0, 20);
        buff.remove(0,buff.indexOf("\r"));
        buff.trim();   
        index =buff.indexOf("\n\r");
        buff = buff.substring(0, index);
        buff.trim();
        msg = buff;
        buff = "";
        msg.toLowerCase();
    }
    void doAction(){
      if(msg == "on"){  
        digitalWrite(LED, HIGH);
        Reply("LED allumee");
      }
      else if(msg == "off"){
        digitalWrite(LED, LOW);
        Reply("LED eteinte");
      }
      
      smsStatus = "";
      senderNumber="";
      receivedDate="";
      msg="";  
    }

    void Reply(String text)
    {
        sim800.print("AT+CMGF=1\r");
        delay(1000);
        sim800.print("AT+CMGS=\""+PHONE+"\"\r");
        delay(1000);
        sim800.print(text);
        delay(100);
        sim800.write(0x1A); //ascii code for ctrl-26 //sim800.println((char)26); //ascii code for ctrl-26
        delay(1000);
        Serial.println("Envoie de confirmation réussi");
    }

    NB : Précaution : Assurez-vous que les branchements sont bien effectués et que l’alimentation requise est respectée.


    Module GSM SIM800L : comment ça marche ?

    Catégorie

    Electronique

    Durée

    01:00:00

    Nombre de vidéos

    0

    Certificat de fin de formation

    NON