Comment envoyer des SMS en utilisant ESP32

Send SMS with ESP32 using SMS API

Je veux instant Alertes SMS de votre ESP32 sans compter sur un module GSM volumineux? Qu’il s’agisse de détection de mouvement, d’un pic de température soudain ou d’une ouverture de porte de casier non autorisée, votre ESP32 peut désormais envoyer des notifications SMS en temps réel directement à votre téléphone, en utilisant simplement le Wi-Fi et une API gratuite de Circuit Digest Cloud.

La plupart des projets IoT vous obligent à vérifier constamment une application ou un tableau de bord Web pour rester à jour. Mais avec ce système d’alerte basé sur SMS intelligent, votre ESP32 devient un chien de garde proactif, poussant des mises à jour importantes directement dans votre boîte de réception de smartphone, même lorsque vous êtes hors ligne à partir d’applications ou de tableaux de bord. Et la meilleure partie? Pas de frais mensuels, pas de cartes SIM, juste du code et du Wi-Fi.

Dans cet article, nous allons vous montrer comment vous pouvez lire les données de température d’un DHT11 et envoyer les valeurs à un smartphone en tant que SMS à l’aide de la carte ESP32. Alors commençons.

Schéma de bloc ESP32 SMS
Composants requis pour envoyer des SMS à partir de l'ESP32 via l'API SMS
Diagramme de circuit de Send SMS avec ESP32 à l'aide de l'API SMS

Configuration matérielle de l'expéditeur SMS ESP32 basé sur l'API

1747670529 949 Comment envoyer des SMS en utilisant ESP32

Connexion ou s'inscrire sur le site Web de Circuit Digest Cloud.Accéder à la page de la clé API via mon compte sur Circuit Digest CloudCompléter CAPTCHA pour générer une clé API gratuite.Lier plusieurs numéros de téléphone des destinataires pour les alertes SMSAffichage de la liste des numéros de téléphone des destinataires liés

ID de modèle Type de modèle Message
101 Alerte d’état de l’appareil Votre {# var #} est actuellement à {# var #}.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
102 Alerte de température La température dans {# var #} a atteint {# var #} ° C. Veuillez prendre les mesures nécessaires.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
103 Motion détectée Motion détecté par {# var #} dans le {# var #}. Enquêter immédiatement.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
104 Alerte basse batterie Le niveau de batterie de {# var #} est extrêmement bas à {#var #}%. Rechargez immédiatement.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
105 Rappel périodique Votre {# var #} est actuellement à {# var #}.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
106 Rappel de service Il est temps de servir votre {# var #}. Le dernier service était sur {# var #}.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
107 Notification d’erreur Erreur {# var #} a été détectée dans {# var #}. Veuillez dépanner immédiatement.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
108 Statut de porte / fenêtre Le {# var #} est actuellement {# var #}. Veuillez assurer la sécurité.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
109 Redémarrage du système Le système {# var #} a été redémarré à {# var #}. Vérifiez la fonctionnalité.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
110 Suivi de l’emplacement Le périphérique {# var #} est actuellement situé à {# var #}.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
111 Achèvement de la tâche La tâche {# var #} a été terminée avec succès à {# var #}.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
112 Alerte perdue de connexion La connexion avec {# var #} a été perdue à {# var #}. Veuillez vérifier le réseau ou l’appareil.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
113 Entretien nécessaire Le {# var #} nécessite une maintenance. Problème détecté: {# var #}.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
114 Alerte de surcharge Le {# var #} connaît une surcharge. Charge actuelle: {# var #}. Veuillez réduire l’utilisation.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
115 Accès non autorisé Accès non autorisé détecté dans {# var #} à {# var #}. Vérifiez immédiatement.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.
102 Alerte de température La température dans {# var #} a atteint {# var #} ° C. Veuillez prendre les mesures nécessaires.

Propulsé par CircuitDigest pour les ingénieurs et les fabricants de l’Inde. Visitez www.raspberryme.com.

Exemple d'alerte SMS montrant le message initialisé Envoi via l'API SMS

#include 
#include 
#include 
#define Temp_SensorPin 23
DHT_Unified dht(Temp_SensorPin, DHT11);
// WiFi credentials
const char *ssid = "Semicon Media";   // Your network SSID (from arduino_secrets.h)
const char *password = "xxxxxxxxxx";   // Your network password (from arduino_secrets.h)
float temperature = 0.0;
//Functiom to read the temperature data from the DHT11 sensor
void read_temperature(){
   sensors_event_t event;
   dht.temperature().getEvent(&event);
   temperature = event.temperature;
   Serial.println(temperature);
    delay(200);
}
void sendSMS() {
 if (WiFi.status() == WL_CONNECTED) {
   WiFiClient client; // Initialize WiFi client
   String apiUrl = "/send_sms?ID=" + String(templateID);
   Serial.print("Connecting to server...");
   if (client.connect("www.raspberryme.cloud", 80)) { // Connect to the server
     Serial.println("connected!");
     // Create the HTTP POST request
     String payload = "{\"mobiles\":\"" + String(mobileNumber) + 
                      "\",\"var1\":\"" + String(var1) + 
                      "\",\"var2\":\"" + String(var2) + "\"}";
     // Send HTTP request headers
     client.println("POST " + apiUrl + " HTTP/1.1");
     client.println("Host: www.raspberryme.cloud");
     client.println("Authorization: " + String(apiKey));
     client.println("Content-Type: application/json");
     client.println("Content-Length: " + String(payload.length()));
     client.println(); // End of headers
     client.println(payload); // Send the JSON payload
     // Wait for the response
     int responseCode = -1; // Variable to store HTTP response code
     while (client.connected() || client.available()) {
       if (client.available()) {
         String line = client.readStringUntil('\n'); // Read a line from the response
         Serial.println(line); // Print the response line (for debugging)
         // Check for the HTTP response code
         if (line.startsWith("HTTP/")) {
           responseCode = line.substring(9, 12).toInt(); // Extract response code (e.g., 200, 404)
           Serial.print("HTTP Response Code: ");
           Serial.println(responseCode);
         }
         // Stop reading headers once we reach an empty line
         if (line == "\r") {
           break;
         }
       }
     }
     // Check response
     if (responseCode == 200) {
       Serial.println("SMS sent successfully!");
     } else {
       Serial.print("Failed to send SMS. Error code: ");
       Serial.println(responseCode);
     }
     client.stop(); // Disconnect from the server
   } else {
     Serial.println("Connection to server failed!");
   }
 } else {
   Serial.println("WiFi not connected!");
 }
}
void setup() {
 // put your setup code here, to run once:
 Serial.begin(9600);
  // We start by connecting to a WiFi network
 Serial.println();
Serial.println("******************************************************");
 Serial.print("Connecting to ");
 Serial.println(ssid);
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
 Serial.println("");
 Serial.println("WiFi connected");
 Serial.println("IP address: ");
 Serial.println(WiFi.localIP());
 dht.begin();
}
void loop() {
 read_temperature();
 if(temperature >= 30.00){
   sendSMS();
   //Stop sending further SMS alerts until the temperature gets back to 28
   while(temperature > 28){
     read_temperature();
   }
 }
}

Téléchargement du code dans la mémoire flash ESP32Vérification et sélection du port série ESP32 correct dans Arduino IDETéléchargement du code compilé sur ESP32 Flash Memory

Projets utilisant une API SMS Digest Circuit

Comment envoyer des SMS à partir de nodemcu sans utiliser le module GSM?  API SMS libre pour Arduino R4, Nodemcu, ESP32, Raspberry Pi et autres cartes SOC intégrées (Inde uniquement)Comment envoyer des SMS avec Arduino Uno R4 via Internet?Visualiseur GPS pour télécharger des données et visualiser les cartes GPS pour Arduino, ESP32 et autres appareils intégrés  Comment construire un simple tracker GPS en utilisant ESP32 et visualiser les données sur la carte

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

YouTube video

  • ELEGOO 3PCS Carte de Développement ESP32 Type-C, 2,4 GHz WiFi + Bluetooth Dual Core Carte de Contrôle pour Arduino, Support MicroPython, NodeMCU, AP/STA/AP+STA, Puce CP2102
  • Ulegqin avec ESP32 S3 ESP32-S3 DevKitC-1-N16R8 Carte de développement avec Deux interfaces Type-C et 2,4-GHz WLAN Bluetooth 5.0 Soudure Compatible avec Arduino(2 Pièces)