Optimisez votre IoT avec ESP32 et SIM900 : Envoi et réception de SMS

Sommaire

ESP32 et SIM900 - Un mariage harmonieux

Dans le monde dynamique de l’IoT (Internet des Objets), l’association de microcontrôleurs puissants et de modules de communication efficaces est cruciale.

Cet article explore comment le mariage technologique entre l’ESP32 et le SIM900 crée une synergie parfaite pour des applications IoT avancées. L’ESP32 est un microcontrôleur doté de capacités Wi-Fi et Bluetooth, tandis que le SIM900 est un module GSM/GPRS, ensemble, ils permettent de réaliser des projets innovants.

Exemples d’applications : Les développeurs peuvent utiliser ce duo technologique pour créer des stations météorologiques connectées, des systèmes de sécurité domestique intelligents, et bien plus encore.

Plongeons dans les détails techniques de ce duo et découvrons comment ils interagissent pour envoyer et recevoir des données via SMS, offrant ainsi une multitude de possibilités pour les inventeurs et les créateurs de solutions IoT.

Envoi de SMS avec ESP32 et SIM900

Le premier projet concret réalisé avec nos modules ESP32 et SIM900 s’intitule “Envoi de SMS”. Cette application permet de transmettre des messages simples, uniquement en caractères ASCII standard, excluant donc les accents.

Configuration nécessaire : Le module SIM900 doit être configuré en mode “TEXTE” pour cet usage. Il est essentiel de comprendre que ce mode limite l’envoi à des caractères spécifiques, sans accents ni caractères spéciaux.

Pourquoi et comment utiliser le mode PDU : Pour une gestion plus avancée, notamment l’inclusion des accents ou des caractères spéciaux, le passage en mode “PDU” (Protocol Description Unit) est recommandé. Bien que ce mode offre plus de flexibilité, il requiert une conversion préalable du message en une série de chiffres hexadécimaux, ce qui peut s’avérer complexe.

Guide pas à pas : Pour vous aider, voici une brève explication de la conversion nécessaire pour le mode PDU :

  1. Encodez votre texte : Convertissez chaque caractère de votre message en son équivalent en chiffres hexadécimaux.
  2. Préparez le message : Assemblez les chiffres en une chaîne conforme aux exigences du module SIM900.

Cette configuration permet d’envoyer des SMS dans des formats divers et plus complexes, étendant ainsi les possibilités de communication de vos projets IoT.

Montage de l'ESP32 et du SIM900

Pour réaliser des projets IoT utilisant la communication SMS, le montage correct des modules ESP32 et SIM900 est essentiel. Suivez ces étapes pour connecter correctement vos modules :

Détails du Montage :

  1. Connexion des broches TX et RX :

    • TX de ESP32 (D17) est connecté à RX de SIM900.
    • RX de ESP32 (D16) passe à travers les résistances R1 et R2 (20k Ohms et 10k Ohms respectivement) avant d’être connecté à TX de SIM900.
  2. Mise à la terre :

    • Connectez la broche GND de l’ESP32 au GND du SIM900 pour compléter le circuit.

Cette configuration assure une communication série entre les deux modules, permettant l’envoi de commandes depuis l’ESP32 au SIM900, et vice-versa. Assurez-vous que toutes les connexions soient sécurisées et vérifiez-les avant de mettre sous tension vos modules.

Tableau de connexion 

ESP32SIM900
D16 (via R1 et R2)TX
D17RX
GNDGND

Ces étapes vous permettront de mettre en place un système fiable pour envoyer et recevoir des SMS, formant la base de nombreuses applications IoT interactives.

Le Code Arduino pour l'ESP32 et le SIM900

Le code présenté ci-dessous permet à l’ESP32 de communiquer avec le module SIM900 pour l’envoi de SMS. Le processus implique la configuration initiale des modules, l’envoi du SMS et la gestion des réponses. Voici les étapes détaillées pour comprendre et utiliser le code fourni :

Configuration Initiale :

  1. Initialisation des communications série : Le code commence par initialiser deux ports série – Serial.begin(115200) pour la communication avec le terminal PC et SerialSIM900.begin(19200) pour la communication avec le module SIM900.

  2. Paramétrage du module SIM900 :

    • Activation du mode texte pour les SMS avec la commande AT+CMGF=1.
    • Définition du numéro du destinataire avec AT+CMGS="+33612345678".

Envoi du SMS :

  1. Composition du message : Le texte du message est envoyé suivant les commandes AT précédentes. Ici, le message "Faire-part de naissance des modules esp32 et SIM900" est transmis.

  2. Terminaison du message : Le message est clôturé par un caractère de contrôle, 26 (CTRL+Z en ASCII), pour indiquer la fin de l’envoi.

Fonction Loop et Serial Passthrough :

  1. Boucle de communication : La fonction loop() est vide car toutes les actions nécessaires sont effectuées dans la fonction setup().

  2. Gestion des données entrantes et sortantes : void serialEvent() permet de passer les données entre le PC et le module SIM900, facilitant le débogage et les ajustements en temps réel.

				
					
void setup() {

Serial.begin(115200);//Initialisation liaison Moniteur série
Serial2.begin(115200);//Initialisation module SIM900
delay(10000);//Temps de connexion du SIM900 au réseau téléphonique - Ajuster si besoin
Serial2.println("AT");
delay(1000);
updateSerial();
Serial2.println("AT+CMGF=1\r"); //Activation mode Texte
delay(1000);
updateSerial();
Serial2.println("AT+CMGS=\"+33644757223\""); //Numéro du destinataire
delay(1000);
updateSerial();
Serial2.print("Faire-part de naissance des modules ESP32 et SIM900"); //Message à envoyer
delay(1000);
Serial2.write((char)26); //Envoi du message
delay(1000);
}

void loop() {

}

void updateSerial()
{

  delay(500);
  while (Serial.available())
  {
    Serial2.write(Serial.read());
  }
  while(Serial2.available())
  {
    Serial.write(Serial2.read());
  }
}
				
			

En utilisant ce code, vous pouvez facilement configurer votre ESP32 pour envoyer des SMS via le module SIM900, offrant ainsi une base solide pour des projets de communication mobile dans des applications IoT.

Une fois le code téléchargé sur votre module, il est recommandé d’appuyer sur le bouton “EN” (ou “RST”) de l’ESP32 pour réinitialiser le dispositif. Cette étape garantit que toutes les configurations prennent effet immédiatement et que votre module est prêt à fonctionner selon les nouveaux paramètres.

Réception de SMS : Transmission de données de température et d'humidité

L’ESP32 interagit régulièrement avec le capteur DHT11 pour collecter des données de température et d’humidité. Ces mesures, converties en données numériques, sont essentielles pour des applications nécessitant un suivi en temps réel des conditions environnementales. Le module SIM900 joue un rôle crucial dans la transmission de ces informations, permettant leur consultation à distance de manière fiable et efficace.

Pour simplifier, nous utiliserons l’ESP32 et le SIM900, en combinaison avec le capteur DHT11, pour mesurer et envoyer par SMS la température ambiante en degrés Celsius (°C) et le taux d’humidité en pourcentage (%). Les valeurs collectées seront transmises à un utilisateur distant, qui pourra consulter ces données environnementales à tout moment.

Configuration du Montage pour la Surveillance Environnementale

Le montage décrit ci-dessous intègre l’ESP32, le SIM900, et le capteur DHT11, chacun jouant un rôle crucial dans la collecte et la transmission des données environnementales via SMS.

Détails du Montage :

  1. ESP32 à SIM900 :

    • D16 de l’ESP32 est connecté au TX du SIM900 via les résistances R1 (10k Ohms) et R2 (20k Ohms) pour atténuer le signal.
    • D17 de l’ESP32 est connecté directement au RX du SIM900, permettant la réception de données du SIM900.
  2. ESP32 à DHT11 :

    • D18 de l’ESP32 est connecté à la broche DATA du DHT11 pour la lecture des données de température et d’humidité.
    • 5V de l’ESP32 alimente le VCC du DHT11.
    • GND de l’ESP32 est connecté au GND du DHT11, complétant ainsi la mise à la terre nécessaire pour les mesures stables.
  3. SIM900 :

    • Le GND du SIM900 est également connecté au GND de l’ESP32, assurant que tous les modules partagent une référence de terre commune.

Tableau de connexion 

ESP32 SIM900 DHT11
D16 (via R1 et R2) TX  
D17 RX  
D18  DATA
TA 5V    VCC
 GND  GND  GND

Ce montage permet la collecte des données environnementales mais aussi leur transmission à distance via SMS. Assurez-vous que toutes les connexions sont correctement réalisées pour éviter toute erreur.

Le Code Arduino pour l'Envoi de Données Environnementales via SMS

Ce code permet à l’ESP32 d’interagir avec le module SIM900 pour envoyer des SMS contenant les données de température et d’humidité recueillies par le capteur DHT11. Il est configuré pour répondre aux commandes reçues par SMS, envoyant les informations demandées à l’utilisateur.

Fonctionnement du Code :

  • Initialisation : Configuration des communications série pour interagir avec l’ordinateur et le module SIM900.
  • Réception de Commandes : Le système peut recevoir des commandes spécifiques par SMS, telles que “D1T” pour la température et “D2H” pour l’humidité.
  • Envoi de Réponses : Selon la commande reçue, le système répond par un SMS contenant soit la température actuelle, soit le taux d’humidité, formaté pour une lecture facile.

Détails Techniques :

  • Commandes AT : Utilisation de commandes AT pour configurer le mode de message texte sur le SIM900 et pour envoyer les SMS.
  • Gestion des Entrées : Le code analyse les messages entrants pour détecter les commandes, puis exécute les actions correspondantes.
  • Réponses Automatisées : Après la réception d’une commande, le système prépare et envoie une réponse automatique avec les données de température ou d’humidité.

Exemple de Transaction :

  • Un utilisateur envoie “D1T” pour demander la température.
  • L’ESP32 lit la valeur du DHT11, et envoie une réponse comme “Température = 22.20 degrés”.
  • Pour l’humidité, si l’utilisateur envoie “D2H”, il reçoit en réponse “Humidité = 65.00 %”.

Cela montre l’efficacité et la réactivité du système dans un environnement réel, facilitant le suivi à distance des conditions environnementales critiques.

				
					#include "DHT.h"
// Definit la broche de l'Arduino sur laquelle la 
// broche DATA du capteur est reliee 
#define DHTPIN 18
// Definit le type de capteur utilisé
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE); //Configuration du module DHT11)
#define DEBUG true    //Mode Moniteur série

String D1T = "D1T";//Donnée pour la demande de Température
String D2H = "D2H";//Donnée pour la demande de l'Humidité

char target[] ="+CMTI";  
int sms_no;
String get_message = "";  
String numero = "+33644757223"; //Numéro du commanditaire

void setup() {
Serial.begin(115200);//Initialisation Moniteur série
Serial2.begin(115200);//Initialisation SIM900
delay(10000);//Temps de connexion du SIM900 au réseau téléphonique - Ajustez si nécessaire
// Initialisation du capteur DHT11
delay(1000);
  dht.begin();
sendData("AT",2000,DEBUG);
sendData("AT+CMGF=1",1000,DEBUG);        //SIM900 en mode TEXTE
delay(2000);
}

void loop() {
if(Serial2.available()>0){    
          if(Serial2.find(target)){                  //Si nouveau SMS arrivé
             sms_no = Serial2.parseInt();            //Numéro ID du SMS dans la mémoire de la carte SIM    
             get_message = "AT+CMGR="+(String)sms_no; //Commande pour obtenir le contenu du SMS
             Serial.println("******************** Examen du SMS *********************" );
             Data_handling(get_message,500,DEBUG);    //Obtention du contenu du SMS 
             Serial.println("*****************************FIN*********************************" );
         } 
     }
     while(Serial2.read() >= 0){}     //Effacement du buffer de Serial2
}

void Data_handling(String command, const int timeout, boolean debug)  //Fonction de lecture du SMS
{
    String response = "";    
    Serial2.println(command); 
    long int time = millis();
    while( (time+timeout) > millis()){
      while(Serial2.available()){       
        response += (char)Serial2.read(); 
      }
    }
    
      if (response.indexOf(D1T)>=0) { 
        //Serial.println("Temperature = " + String(dht.readTemperature())+" degres");
     sendData("AT",2000,DEBUG);
     sendData("AT+CMGF=1",1000,DEBUG); 
     sendData("AT+CMGD=1,4",1000,DEBUG);  // Efface tous les SMS en mémoire de la carte SIM
     sendData("AT+CMGS=\"+33644757223\"",1000,DEBUG); 
      Serial2.print("Temperature = " + String(dht.readTemperature())+" degres"); //Message à envoyer
      delay(1000);
      Serial2.write((char)26); //Envoi du message
      delay(1000);
      while(Serial2.read() >= 0){}  // Effacement du buffer de Serial2
      }
      
    else if (response.indexOf(D2H)>=0) { 
     // Serial.println("mesure humidité");
      //Serial.println("Humidite = " + String(dht.readHumidity())+" %");
      sendData("AT",2000,DEBUG);
     sendData("AT+CMGF=1",1000,DEBUG); 
     sendData("AT+CMGD=1,4",1000,DEBUG);  // Efface tous les SMS en mémoire de la carte SIM
     sendData("AT+CMGS=\"+33644757223\"",1000,DEBUG); 
      Serial2.print("Humidite = " + String(dht.readHumidity())+" %"); //Message à envoyer
      delay(1000);
      Serial2.write((char)26); //Envoi du message
      delay(1000);
      while(Serial2.read() >= 0){} // Effacement du buffer de Serial2

      }
   
   else{
    Serial.println("Mauvaise commande");
   }
}

void sendData(String command, const int timeout, boolean debug)  //Fonction pour l'envoi de commandes
{
    String response = "";    
    Serial2.println(command); 
    long int time = millis();
    while( (time+timeout) > millis()){
      while(Serial2.available()){       
        response += (char)Serial2.read(); 
      }  
    }    
    if(debug){
      Serial.print(response);
    }    
}
				
			

Conclusion

À travers cet article, nous avons exploré comment l’intégration de l’ESP32 avec le module SIM900 et le capteur DHT11 peut transformer la surveillance environnementale grâce à l’IoT. Le montage et la programmation détaillés offrent une plateforme robuste pour collecter et transmettre des données de température et d’humidité en temps réel, directement sur votre téléphone via SMS.

Cette solution non seulement simplifie le suivi des conditions environnementales, mais elle ouvre également la porte à une multitude d’applications dans des domaines tels que l’agriculture intelligente, la gestion de l’habitat et la surveillance climatique. L’automatisation de la collecte de données et la communication efficace via SMS permettent aux utilisateurs de prendre des décisions informées rapidement, où qu’ils soient.

En somme, ce projet illustre parfaitement comment l’utilisation judicieuse de la technologie IoT peut rendre notre interaction avec l’environnement à la fois plus immédiate et plus précise, facilitant une meilleure adaptation et réactivité face aux conditions changeantes. Nous espérons que cette démonstration vous inspirera à explorer de nouvelles voies d’utilisation de l’IoT pour répondre à vos propres défis environnementaux et techniques.

Bonjour ! 🌟 Rejoignez notre newsletter pour ne rien manquer.

Recevez nos offres spéciales et les derniers articles directement dans votre boîte de réception

Nous ne faisons pas de spam, promis ! Consultez notre politique de confidentialité pour en savoir plus.

Panier
Retour en haut

Projet sur mesure