ESP32 - Notification par e-mail de capteur de mouvement

Dans ce tutoriel, nous apprendrons à utiliser un ESP32 et un capteur de mouvement pour envoyer des notifications par e-mail lorsque quelqu'un entre illégalement dans votre pièce. Ce guide complet couvre le processus d'installation, les composants nécessaires et les instructions étape par étape pour intégrer un ESP32 avec un capteur de mouvement et un service de messagerie. Renforcez votre sécurité domestique et restez informé avec des alertes en temps réel envoyées directement dans votre boîte de réception à l'aide de l'ESP32.

Notification par e-mail du capteur de mouvement esp32

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×HC-SR501 Motion Sensor
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) Screw Terminal Expansion Board for ESP32
1×(Recommended) Power Splitter For ESP32

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du capteur de mouvement et de Gmail

Nous avons des tutoriels spécifiques sur le capteur de mouvement et Gmail. Chaque tutoriel contient des informations détaillées et des instructions étape par étape sur le brochage matériel, le principe de fonctionnement, la connexion de câblage à l'ESP32, le code ESP32... En savoir plus sur eux aux liens suivants :

Schéma de câblage entre le capteur de mouvement et l'ESP32

  • Comment connecter ESP32 et capteur de mouvement à l'aide d'une plaque d'essai (alimenté via câble USB)
Schéma de câblage du capteur de mouvement ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

  • Comment connecter ESP32 et le capteur de mouvement à l'aide d'une plaque d'essai (alimenté via la broche Vin)
Schéma de câblage du capteur de mouvement ESP32

This image is created using Fritzing. Click to enlarge image

Comment connecter ESP32 et capteur de mouvement
Comment connecter un ESP32 et un capteur de mouvement

Code pour ESP32

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32/esp32-motion-sensor-email-notification */ #include <WiFi.h> #include <ESP_Mail_Client.h> #define WIFI_SSID "YOUR_WIFI_SSID" // CHANGE IT #define WIFI_PASSWORD "YOUR_WIFI_PASSWORD" // CHANGE IT // the sender email credentials #define SENDER_EMAIL "xxxxxx@gmail.com" // CHANGE IT #define SENDER_PASSWORD "xxxx xxxx xxxx xxxx" // CHANGE IT to your Google App password #define RECIPIENT_EMAIL "xxxxxx@gmail.com" // CHANGE IT #define SMTP_HOST "smtp.gmail.com" #define SMTP_PORT 587 #define MOTION_SENSOR_PIN 19 // ESP32 pin GPIO19 connected to motion sensor's pin int motion_state; // current state of motion sensor int prev_motion_state; // previous state of motion sensor SMTPSession smtp; void setup() { Serial.begin(9600); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("Connecting to Wi-Fi"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(300); } Serial.println(); Serial.print("Connected with IP: "); Serial.println(WiFi.localIP()); Serial.println(); pinMode(MOTION_SENSOR_PIN, INPUT); motion_state = digitalRead(MOTION_SENSOR_PIN); // read state } void loop() { prev_motion_state = motion_state; // save the last state motion_state = digitalRead(MOTION_SENSOR_PIN); // read new state if (prev_motion_state == LOW && motion_state == HIGH) { // state change: LOW -> HIGH Serial.println("Motion detected! Someone is in your room!"); String subject = "Email Notification from ESP32"; String textMsg = "This is an email sent from ESP32.\n"; textMsg += "Motion detected! Someone is in your room!"; gmail_send(subject, textMsg); } } void gmail_send(String subject, String textMsg) { // set the network reconnection option MailClient.networkReconnect(true); smtp.debug(1); smtp.callback(smtpCallback); Session_Config config; // set the session config config.server.host_name = SMTP_HOST; config.server.port = SMTP_PORT; config.login.email = SENDER_EMAIL; config.login.password = SENDER_PASSWORD; config.login.user_domain = F("127.0.0.1"); config.time.ntp_server = F("pool.ntp.org,time.nist.gov"); config.time.gmt_offset = 3; config.time.day_light_offset = 0; // declare the message class SMTP_Message message; // set the message headers message.sender.name = F("ESP32"); message.sender.email = SENDER_EMAIL; message.subject = subject; message.addRecipient(F("To Whom It May Concern"), RECIPIENT_EMAIL); message.text.content = textMsg; message.text.transfer_encoding = "base64"; message.text.charSet = F("utf-8"); message.priority = esp_mail_smtp_priority::esp_mail_smtp_priority_low; // set the custom message header message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>")); // connect to the server if (!smtp.connect(&config)) { Serial.printf("Connection error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str()); return; } if (!smtp.isLoggedIn()) { Serial.println("Not yet logged in."); } else { if (smtp.isAuthenticated()) Serial.println("Successfully logged in."); else Serial.println("Connected with no Auth."); } // start sending Email and close the session if (!MailClient.sendMail(&smtp, &message)) Serial.printf("Error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), smtp.errorReason().c_str()); } // callback function to get the Email sending status void smtpCallback(SMTP_Status status) { // print the current status Serial.println(status.info()); // print the sending result if (status.success()) { Serial.println("----------------"); Serial.printf("Email sent success: %d\n", status.completedCount()); Serial.printf("Email sent failed: %d\n", status.failedCount()); Serial.println("----------------\n"); for (size_t i = 0; i < smtp.sendingResult.size(); i++) { // get the result item SMTP_Result result = smtp.sendingResult.getItem(i); Serial.printf("Message No: %d\n", i + 1); Serial.printf("Status: %s\n", result.completed ? "success" : "failed"); Serial.printf("Date/Time: %s\n", MailClient.Time.getDateTimeString(result.timestamp, "%B %d, %Y %H:%M:%S").c_str()); Serial.printf("Recipient: %s\n", result.recipients.c_str()); Serial.printf("Subject: %s\n", result.subject.c_str()); } Serial.println("----------------\n"); // free the memory smtp.sendingResult.clear(); } }

Étapes rapides

  • Si c'est la première fois que vous utilisez l'ESP32, consultez Installation du logiciel ESP32..
  • Connectez la carte ESP32 au capteur de mouvement.
  • Connectez la carte ESP32 à votre PC via un câble micro USB.
  • Ouvrez l'Arduino IDE sur votre PC.
  • Sélectionnez la bonne carte ESP32 (par exemple, ESP32 Dev Module) et le port COM.
  • Ouvrez le gestionnaire de bibliothèques en cliquant sur l'icône Library Manager dans la barre de navigation gauche de l'Arduino IDE.
  • Recherchez ESP Mail Client, puis trouvez le client ESP Mail créé par Mobizt.
  • Cliquez sur le bouton Install pour installer la bibliothèque ESP Mail Client.
Bibliothèque ESP32 ESP Mail Client
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino.
  • Mettez à jour les informations WiFi (SSID et mot de passe) dans le code en modifiant les constantes WIFI_SSID et WIFI_PASSWORD pour qu'elles correspondent à vos propres identifiants réseau.
  • Mettez à jour l'email de l'expéditeur et le mot de passe dans le code en modifiant les constantes SENDER_EMAIL et SENDER_PASSWORD avec les détails de votre propre compte email.
  • Mettez à jour l'email du destinataire dans le code en modifiant la constante RECIPIENT_EMAIL avec votre propre adresse email. L'email du destinataire peut être le même que l'email de l'expéditeur.

※ Note:

  • L'email de l'expéditeur DOIT être Gmail
  • Le mot de passe de l'expéditeur est le mot de passe d'application obtenu à l'étape précédente
  • L'email du destinataire peut être de n'importe quel type
  • Cliquez sur le bouton Upload dans Arduino IDE pour téléverser le code vers l'ESP32
  • Ouvrez le Moniteur Série
  • Faites un mouvement devant le capteur de mouvement
  • Vérifiez le résultat sur le Moniteur Série.
COM6
Send
Motion detected! Someone is in your room! #### Email sent successfully > C: Email sent successfully ---------------- Message sent success: 1 Message sent failed: 0 ---------------- Message No: 1 Status: success Date/Time: May 27, 2024 04:42:50 Recipient: xxxxxx@gmail.com Subject: Email Notification from ESP32 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Vérifiez la boîte de réception de votre destinataire. Vous recevrez un e-mail comme ci-dessous :
ESP32 détecteur de mouvement email

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!