Header Ads Widget

Actu

6/recent/ticker-posts

Arduino et GSM SIM800L :Comment envoyer et recevoir un SMS ?

Dans cet article nous allons découvrir comment connecter un module GSM à une carte Arduino. Il existe plusieurs types de modules GSM sur le marché. 

Ici,  nous utilisons le module le plus miniaturiser basé sur une Simcom SIM800 et Arduino Uno. L'interfaçage d'un module GSM avec une carte Arduino est assez aisée.


arduino projet utile

Un module GSM est fondamentalement un modem GSM (comme SIM 900) connecté à un circuit imprimé avec différents types de sortie provenant de la carte.


Plusieurs variétés de modem GSM et modules GSM sont disponibles sur le marché. Pour notre projet qui consiste à envoyer et de recevoir des sms en utilisant arduino - il est toujours bon de choisir un module GSM avec une sortie TTL.


SIM800L est un module cellulaire miniature qui permet la transmission GPRS, l'envoi et la réception de SMS et l'émission et la réception d'appels vocaux. Son faible coût, sa faible encombrement et sa prise en charge des fréquences quadri-bandes font de ce module la solution parfaite pour tout projet nécessitant une connectivité longue portée.


Démarrage du module GSM !

Suivez les étapes ci-dessous pour démarrer votre SIM 800L.

  • Insérez la carte SIM dans le module GSM et verrouillez-la.
  • Connectez l'adaptateur au module GSM et allumez-le !
  • Attendez maintenant un certain temps (disons 1 minute) et voyez clignoter la vitesse de'LED d'état' ou'LED réseau' (le module GSM prendra un certain temps pour établir la connexion avec le réseau mobile).
  • Une fois la connexion établie avec succès, la LED d'état/réseau clignote continuellement toutes les 3 secondes.



Vous pouvez alors essayer d'appeler le numéro de portable de la carte SIM à l'intérieur du module GSM. Si vous entendez un retour d'appel, c'est que le module gsm a réussi à établir la connexion réseau.


Le problème avec cette connexion est que, pendant la programmation, Arduino utilise des ports série pour charger le programme depuis l'EDI Arduino. Si ces broches sont utilisées pour le câblage, le programme ne sera pas chargé avec succès sur Arduino.


Vous devez donc débrancher le câblage dans Rx et Tx chaque fois que vous gravez le programme à arduino. Une fois le chargement du programme réussi, vous pouvez rétablir la connexion de ces broches et faire fonctionner votre système !


Pour éviter cette contrainte, j'utilise une méthode alternative dans laquelle deux broches numériques d'arduino sont utilisées pour la communication série. Nous devons sélectionner deux broches d'arduino (compatibles PWM) pour cette méthode.


Je choisis donc les broches 9 et 10 (qui sont deux broches compatibles PWM). Cette méthode est rendue possible grâce à la librairie SoftwareSerial d'Ardunio. SoftwareSerial est une bibliothèque Arduino qui permet la communication de données série via d'autres broches numériques d'Arduino.


La bibliothèque réplique les fonctions matérielles et prend en charge la tâche de la communication série.


Le schéma de circuit pour connecter le module gsm à arduino et utiliser ensuite le circuit pour envoyer des sms et recevoir des sms en utilisant arduino et gsm modem.




Effectuez les raccordements comme indiqué ! Penchons-nous maintenant sur le développement du code. Le programme a deux objectifs, décrits ci-dessous


1) Envoyer des SMS à l'aide d'Arduino et d'un module GSM - vers un numéro de mobile spécifié à l'intérieur du programme.

Le code pour envoyer un SMS est le suivant:


Code d'envois de message SMS.

int state = 0;
const int pin = 2;
void setup()
{
Serial.begin(9600); //Régler la vitesse de transmission exacte du module GSM/GPRS.
}
void loop()
{
if (digitalRead(pin) == HIGH && state == 0) {
Serial.print("\r");
delay(1000);
Serial.print("AT+CMGF=1\r");
delay(1000);
//Remplacer XXXXXXXXXXXXXXXX par un numéro de mobile et ZZ par un indicatif de pays
    Serial.print("AT+CMGS=\"+ZZXXXXXXXXXX\"\r");
delay(1000);
//Le texte du message à envoyer.
Serial.print("HELLO WORLD");
delay(1000);
Serial.write(0x1A);
delay(1000);
state = 1;
}
else {
state = 0;
}
}


2) Recevoir des SMS à l'aide d'Arduino et du module GSM - vers la carte SIM chargée dans le module GSM.

Le code pour recevoir un SMS est le suivant:


Code de réception SMS.

#include <SoftwareSerial.h>
SoftwareSerial serial(2, 3); // RX digital pin 2, TX digital pin 3.
void setup()
{
Serial.begin(9600);
serial.begin(9600); //Régler la vitesse de transmission exacte du module GSM/GPRS.
serial.println("AT+CMGF=1\r");
serial.println("AT+CMGR=1\r");//Lire les SMS à la position 1
delay(1000);
}
void loop()
{
if (serial.available() > 0) {
int c = serial.read();
Serial.write(c);
}
delay(100);
}

Parcourrez la bibliothèque de commandes AT et commencez à jouer avec votre module GSM et Arduino ! Si vous avez des doutes s'il vous plaît demander dans les commentaires.


Il s'agit donc d'interfacer le module GSM à l'Arduino. Si vous avez des soucies, n'hésitez pas à commenter.

Enregistrer un commentaire

13 Commentaires

  1. j'ai un problème de reception de méssage sur mon telephone et j'ai pas connais le problème d'où viens ??

    RépondreSupprimer
    Réponses
    1. Salut !
      SVP spécifier bien votre problème. je n'arrive pas à bien comprendre

      Supprimer
  2. j'ai trouve un probléme dans la recéption de message sur mon télephone

    RépondreSupprimer
    Réponses
    1. Plus d'explication s'il vous plait

      Supprimer
    2. bonsoir Adrien j'ai une préoccupation, est-il possible de récupérer des données de température émise par un capteur température et les recevoir via Sms sur arduino ? cordialement.

      Supprimer
    3. Veillez nous faire part du message d'erreur svp.

      Supprimer
    4. Bien évidemment que c'est possible.

      Si déjà, vous savez comment lire une valeur numérique ou analogique (en l'occurrence la température dans votre cas) et que vous connaissez également comment envoyer un sms avec une carte Arduino et un module GSM, il vous restera plus qu'à jumelé ces deux éléments.

      Tenez nous informer.

      Supprimer
  3. Moi je veux allumer une led par envoie de sms.voici mon code mais ça ne marche pas .Aidez moi s'il vous plait!
    [code]
    String textMessage;
    const int led= 10;

    void setup() {
    // put your setup code here, to run once:
    pinMode(red, OUTPUT);

    digitalWrite(led,LOW);
    Serial.begin(9600);
    delay(20000);
    Serial.print("AT+CMGF=1\r");
    delay(100);
    Serial.print("AT+CNMI=2,2,0,0,0\r");
    delay(1000);
    }

    void loop() {
    // put your main code here, to run repeatedly:
    if(Serial.available()>0){
    textMessage=Serial.readString();
    textMessage.toUpperCase();
    delay(10);
    }
    if(textMessage.indexOf("REDON")>=0){
    digitalWrite(led,HIGH);
    textMessage="";
    }
    if(textMessage.indexOf("REDOFF")>=0){
    digitalWrite(led,LOW);
    textMessage="";
    }


    }
    [/code]

    RépondreSupprimer
  4. Bonjour, y'a t-il une temporisation nécessaire entre l'envoi de 2 SMS? J'ai plusieurs messages envoyé mais non reçu et je ne trouve pas la cause

    RépondreSupprimer
    Réponses
    1. Aucun délai n'est indispensable entre l'envoi de deux messages.

      Supprimer
  5. Bonsoir, j ai un module gsm sim800A, je veux le connecté avec un microcontroleur pic16f877, alors pour la reception d un msg sur mon portable pas de problème, le port RX du module fonctionne trés bien, mais lorsque j essayé d envoyer un msg vers le module pour activer une sortie sur le pic, ca marche pas, toujours sur le port TX de module il y a environ 3v,
    C est qoui le problème svp aidez moi

    RépondreSupprimer

Laissez un avis.