[Tuto] Module GSM SIM800L - Envoyer un SMS

Posted On: oct. 14, 2015

Categories: Arduino

Tags: arduino , gsm , message , sim800l , sms , tuto , tutorial , tutoriel

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 
#include  

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=1r");  // 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 
#include 
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=1r");    // 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] = '';
  Serial.flush();
  return 0;
  }
  if (inChar != 'r'){
    result[i] = inChar;
    i++;
  }}}}

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

Commande Réponse Info

AT+CMGF=1 OK Configure le mode SMS
AT+CMGS=”<numéro de telephone>”  ENTER


> Votre message  CTR+Z

OK Envoi un SMS au numéro indiqué

Comments

  • Guicle
    nov. 23, 2018
    Bonjour,nj'aimerais savoir s'il est n&eacute;cessaire d'avoir un abonnement avec la carte sim ?
  • Le jip&eacute;
    oct. 23, 2018
    J'ai eu le m&ecirc;me probl&egrave;me, tout est rentr&eacute; dans l'ordre lorsque j'ai mis la SIM dans dans le bon sens. C'est &agrave; dire le biseau vers l'ext&eacute;rieur. Il n'y a pas de d&eacute;trompage dans le support de la SIM.
  • Le Jip&eacute;
    oct. 23, 2018
    J'ai eu le m&ecirc;me probl&egrave;me, tout est rentr&eacute; dans l'ordre lorsque j'ai mis la SIM dans dans le bon sens. C'est &agrave; dire le biseau vers l'ext&eacute;rieur. Il n'y a pas de d&eacute;trompage dans le support de la SIM.
  • Ismail
    août 13, 2018
    Bonjour,nJ'ai le module sim800l EVB achet&eacute; sur Amazon nhttps://www.amazon.fr/Sim800l-Module-Micro-Quadri-bande-Arduino/dp/B01FK3OPQ6nj'arrive &agrave; envoyer des commande AT mais le module ne se connecte &agrave; aucun r&eacute;seau ! nATnnOKnnCall ReadynnSMS ReadynnATInnSIM800 R14.18nnOKnnAT+CREG? nn+CREG: 0,2nnOKnnAT+COPS ?nn+COPS: 0nnOKnnJ'ai utilis&eacute; deux carte sim free et bouyg, je l'ai aussi aliment&eacute; en 5v d'une alimentation labo, une alimentation 5v 3A d'un chargeur et le 5v de l'arduino uno et toujours la m&ecirc;me chose. Pourtant les deux carte sim en question fonctionne parfaitement sur mon t&eacute;l&eacute;phone !nnDes proposition SVP ?
  • David G
    févr. 9, 2018
    Bonjour et merci mille fois pour ce tuto clair, pr&eacute;cis et fonctionnel.nJ'ai re&ccedil;u deux modules SIM800C et les deux fonctionnent parfaitement pour toutes les commandes AT d&eacute;crites ici et dans la section &quot;prise en main&quot;, sauf une.nEn effet, quand je rentre AT+CREG j'ai comme r&eacute;ponse &quot;AT+CREG ERROR&quot;.nSavez-vous pourquoi ?nnEn dehors de &ccedil;a j'envoie des sms avec votre exemple et je vous en remercie encore.nIl y a toutefois une bizarrerie dans cet exemple :n // Importation des librairiesn#include n#include nSoftwareSerial sim800l(7,8); // RX,TXnnAu lieu de :n // Importation des librairiesn#include SoftwareSerial sim800l(7,8); // RX,TXnnBien amicalement, David.
  • Mahamadou Djamilou
    mai 3, 2017
    Bonjour tout le monde ,esp&eacute;rant que vous allez bien.Au fait j'ai un projet a r&eacute;aliser &amp;lt;&amp;lt;Envoie d&amp;#039;un sms avec alerte sonar en cas d&rsquo;intrusion dans une maison.nJ&amp;#039;ai besoin de votre aide pour le programme ainsi que l&amp;#039;installation &eacute;lectronique n&eacute;cessaire a faire.
  • CCH
    avril 9, 2017
    bonjour nje voudrai savoir comment allumee une led via un gsm SIM800Lnmerci de votre aide
  • Miss
    avril 8, 2017
    Bonjour,nje travaille sur le sujet gestion d&rsquo;&eacute;nergie domestique , et j'utilise l'arduino comme une unit&eacute; de contr&ocirc;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 )
  • Lucas
    mars 10, 2017
    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
  • fal\'
    janv. 18, 2017
    bonjour, nje fais presque le meme projet que toi est ce que nous pourrions discuter merci de me contacter n monstro28500@gmail.com
  • ericstar
    mai 14, 2016
    bonjour je realise une alarme a detection de presence qui envoi un sms .svp comment envoyer un sms sans utilis&eacute; l arduino
  • amine
    mai 11, 2016
    Bonjour, mon projet consiste a envoyer un message d'alerte d'une application java, ce message contient des donn&eacute;e saisie dans cette application et je dois les envoy&eacute;s vers le gsm du responsable, est ce que je peux faire une communication entre mon programme java et le mod&eacute;le sms qui existe dans arduino ?
  • Vincent
    mai 8, 2016
    /*n D&eacute;tecteur de pr&eacute;sence - capteur PIR + LEDn Arduino IDE 1.0.3n*/nn#define PIR 10n#define LED 8n#define LEDB 9nint val = 0; // &eacute;tat du capteurnint pirState = LOW; // pr&eacute;c&eacute;dent &eacute;tat du capteurn#include nSoftwareSerial sim800l(7, 8); // RX, TXnString SIM_PIN_CODE = String( &quot;7727&quot; );nnvoid setup()n{n pinMode(PIR, INPUT);n pinMode(LED, OUTPUT);n pinMode(LEDB, OUTPUT);n sim800l.begin(9600); // D&eacute;marrage du modemn Serial.begin(9600); // Initialisation de la communication s&eacute;rien delay(5000); // D&eacute;lai pour la connexion nn n if(sim800l.available())n Serial.write(sim800l.read());n }nnnvoid loop()n{n Serial.println(digitalRead(PIR));n val = digitalRead(PIR);nn if (val == HIGH) // si on d&eacute;tecte un mouvementn {n if (pirState == LOW) // on regarde s'il y a eu changement d'&eacute;tatn {n //delay(10000); // on fait clignoter la ledn digitalWrite(LED, HIGH);n digitalWrite(LEDB, LOW);n delay(5000);n Serial.println(&quot;Sending text message...&quot;);n sim800l.print(&quot;AT+CMGF=1\r&quot;); // Lance le mode SMSn delay(100);n // Entrez votre num&eacute;ro de t&eacute;l&eacute;phone n sim800l.print(&quot;AT+CMGS=\&quot;+33689578107\&quot;\r&quot;); n delay(100);n // Entrez votre message ici n sim800l.print(&quot;Courrier \r&quot;); n // CTR+Z en langage ASCII, indique la fin du messagen sim800l.print(char(26)); n delay(100);n sim800l.println();n Serial.println(&quot;Text send&quot;); // Le message est envoy&eacute;.n n pirState = HIGH; // on stocke l'&eacute;tatn }n }n else // si on ne d&eacute;tecte pas de mouvementn {n if (pirState == HIGH)n {n digitalWrite(LED, LOW);n digitalWrite(LEDB, HIGH);n pirState = LOW;n }n }n}
  • Vincent
    mai 8, 2016
    Bonjour, merci pour ton aide &agrave; l'utilisation d'une carte gsm.nVoila, je pr&eacute;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 &agrave; dire une lettre ou un colis d&eacute;pos&eacute;.nS'il y a eu un mouvement, la led verte s'allume pendant 1h puis la rouge prend le relais. En plus, apr&egrave;s un mouvement, un sms m'est envoy&eacute; &agrave; l'aide d'une carte GSM, sim800l par exemple;nJ'aurai besoin de votre aide pour le code arduino ainsi que le circuit electroniquenMerci par avancenVincent
  • Model GSM SIM800L - DIYMaroc Blog
    avril 13, 2016
    [&amp;#8230;] Module GSM SIM800L &ndash; Envoyer un SMS [&amp;#8230;]

Leave a comment

Sign in