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

15 réflexions sur « [Tuto] Module GSM SIM800L – Envoyer un SMS »

  1. Ping : Model GSM SIM800L - DIYMaroc Blog

  2. Bonjour, merci pour ton aide à l’utilisation d’une carte gsm.
    Voila, je présente mon projet qui est celui d’une boite aux lettres inteligentes. Je souhaite placer deux led verte et rouge m’indiquant si il y a eu un mouvement, c’est à dire une lettre ou un colis déposé.
    S’il y a eu un mouvement, la led verte s’allume pendant 1h puis la rouge prend le relais. En plus, après un mouvement, un sms m’est envoyé à l’aide d’une carte GSM, sim800l par exemple;
    J’aurai besoin de votre aide pour le code arduino ainsi que le circuit electronique
    Merci par avance
    Vincent

  3. /*
    Détecteur de présence – capteur PIR + LED
    Arduino IDE 1.0.3
    */

    #define PIR 10
    #define LED 8
    #define LEDB 9
    int val = 0; // état du capteur
    int pirState = LOW; // précédent état du capteur
    #include
    SoftwareSerial sim800l(7, 8); // RX, TX
    String SIM_PIN_CODE = String( « 7727 » );

    void setup()
    {
    pinMode(PIR, INPUT);
    pinMode(LED, OUTPUT);
    pinMode(LEDB, OUTPUT);
    sim800l.begin(9600); // Démarrage du modem
    Serial.begin(9600); // Initialisation de la communication série
    delay(5000); // Délai pour la connexion

    if(sim800l.available())
    Serial.write(sim800l.read());
    }

    void loop()
    {
    Serial.println(digitalRead(PIR));
    val = digitalRead(PIR);

    if (val == HIGH) // si on détecte un mouvement
    {
    if (pirState == LOW) // on regarde s’il y a eu changement d’état
    {
    //delay(10000); // on fait clignoter la led
    digitalWrite(LED, HIGH);
    digitalWrite(LEDB, LOW);
    delay(5000);
    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=\ »+33689578107\ »\r »);
    delay(100);
    // Entrez votre message ici
    sim800l.print(« Courrier \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é.

    pirState = HIGH; // on stocke l’état
    }
    }
    else // si on ne détecte pas de mouvement
    {
    if (pirState == HIGH)
    {
    digitalWrite(LED, LOW);
    digitalWrite(LEDB, HIGH);
    pirState = LOW;
    }
    }
    }

  4. Bonjour, mon projet consiste a envoyer un message d’alerte d’une application java, ce message contient des donnée saisie dans cette application et je dois les envoyés vers le gsm du responsable, est ce que je peux faire une communication entre mon programme java et le modéle sms qui existe dans arduino ?

  5. Bonjour mon projet consiste a envoyer un message d’alerte des qu’il y a une surconsommation d’eau, j’utilise le module SIM800L pour l’Arduino UNO

  6. Bonjour,
    je travaille sur le sujet gestion d’énergie domestique , et j’utilise l’arduino comme une unité de contrôle , j’ai besoin de code qui permet d’affricher une alerte SMS (j’utilise le modem SIM900) , quand la valeur seuil est atteinte (la valeur seuil pour la partie capteur est de 1,5mv )

  7. Bonjour tout le monde ,espérant que vous allez bien.Au fait j’ai un projet a réaliser <<Envoie d'un sms avec alerte sonar en cas d’intrusion dans une maison.
    J'ai besoin de votre aide pour le programme ainsi que l'installation électronique nécessaire a faire.

  8. Bonjour et merci mille fois pour ce tuto clair, précis et fonctionnel.
    J’ai reçu deux modules SIM800C et les deux fonctionnent parfaitement pour toutes les commandes AT décrites ici et dans la section « prise en main », sauf une.
    En effet, quand je rentre AT+CREG j’ai comme réponse « AT+CREG ERROR ».
    Savez-vous pourquoi ?

    En dehors de ça j’envoie des sms avec votre exemple et je vous en remercie encore.
    Il y a toutefois une bizarrerie dans cet exemple :
    // Importation des librairies
    #include
    #include
    SoftwareSerial sim800l(7,8); // RX,TX

    Au lieu de :
    // Importation des librairies
    #include SoftwareSerial sim800l(7,8); // RX,TX

    Bien amicalement, David.

  9. Bonjour,
    J’ai le module sim800l EVB acheté sur Amazon
    https://www.amazon.fr/Sim800l-Module-Micro-Quadri-bande-Arduino/dp/B01FK3OPQ6
    j’arrive à envoyer des commande AT mais le module ne se connecte à aucun réseau !
    AT

    OK

    Call Ready

    SMS Ready

    ATI

    SIM800 R14.18

    OK

    AT+CREG?

    +CREG: 0,2

    OK

    AT+COPS ?

    +COPS: 0

    OK

    J’ai utilisé deux carte sim free et bouyg, je l’ai aussi alimenté en 5v d’une alimentation labo, une alimentation 5v 3A d’un chargeur et le 5v de l’arduino uno et toujours la même chose. Pourtant les deux carte sim en question fonctionne parfaitement sur mon téléphone !

    Des proposition SVP ?

    • J’ai eu le même problème, tout est rentré dans l’ordre lorsque j’ai mis la SIM dans dans le bon sens. C’est à dire le biseau vers l’extérieur. Il n’y a pas de détrompage dans le support de la SIM.

  10. J’ai eu le même problème, tout est rentré dans l’ordre lorsque j’ai mis la SIM dans dans le bon sens. C’est à dire le biseau vers l’extérieur. Il n’y a pas de détrompage dans le support de la SIM.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *