Arduino Nano ESP32 - Notification par e-mail d'ouverture de porte

Ce guide vous montrera comment configurer un Arduino Nano ESP32 pour envoyer des emails lorsqu'une porte s'ouvre. Nous discuterons des composants nécessaires, de leur installation, et fournirons des instructions étape par étape pour connecter un Arduino Nano ESP32 à un capteur de porte et à un service de messagerie. Cela vous aidera à recevoir des notifications par email immédiates chaque fois que la porte est ouverte, améliorant ainsi la sécurité de votre domicile.

Notification par e-mail d'ouverture de porte Arduino Nano ESP32

Préparation du matériel

1×Arduino Nano ESP32
1×USB Cable Type-C
1×Door Sensor
1×(Optional) DC Power Jack
1×Breadboard
1×Jumper Wires
1×(Recommended) Screw Terminal Expansion Board for Arduino Nano
1×(Recommended) Breakout Expansion Board for Arduino Nano
1×(Recommended) Power Splitter For Arduino Nano 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 porte et de Gmail

Nous fournissons des guides détaillés sur les détecteurs de porte et Gmail. Chaque guide offre des informations complètes et des instructions faciles, étape par étape, pour configurer le matériel, comprendre son fonctionnement et connecter et programmer l'Arduino Nano ESP32. Pour en savoir plus sur ces guides, suivez ces liens.

Schéma de câblage entre le capteur de porte et l'Arduino Nano ESP32

Schéma de câblage du capteur de porte Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Code Arduino Nano ESP32

/* * Ce code Arduino Nano ESP32 a été développé par newbiely.fr * Ce code Arduino Nano 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/arduino-nano-esp32/arduino-nano-esp32-door-open-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 DOOR_SENSOR_PIN D2 // The Arduino Nano ESP32 pin D2 connected to door sensor's pin int door_state; // current state of door sensor int prev_door_state; // previous state of door 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(DOOR_SENSOR_PIN, INPUT_PULLUP); // set ESP32 pin to input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { prev_door_state = door_state; // save the last state door_state = digitalRead(DOOR_SENSOR_PIN); // read new state if (prev_door_state == LOW && door_state == HIGH) { // state change: LOW -> HIGH Serial.println("The door is opened"); String subject = "Email Notification from ESP32"; String textMsg = "This is an email sent from ESP32.\n"; textMsg += "Your door is opened"; gmail_send(subject, textMsg); } else if (prev_door_state == HIGH && door_state == LOW) { // state change: HIGH -> LOW Serial.println("The door is closed"); } } 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

Pour commencer avec Arduino Nano ESP32, suivez ces étapes :

  • Si vous êtes nouveau sur l'Arduino Nano ESP32, consultez le tutoriel sur Installation du logiciel Arduino Nano ESP32..
  • Connectez la carte Arduino Nano ESP32 au capteur de porte selon le schéma fourni.
  • Fixez le capteur de porte à votre porte.
  • Connectez la carte Arduino Nano ESP32 à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Arduino sur votre ordinateur.
  • Sélectionnez la carte Arduino Nano ESP32 et son port COM correspondant.
  • Dans l'IDE Arduino, cliquez sur l'icône Library Manager dans le menu de gauche pour l'ouvrir.
  • Dans la boîte de recherche, entrez ESP Mail Client et trouvez ESP Mail Client par Mobizt.
  • Cliquez sur le bouton Install pour ajouter la bibliothèque ESP Mail Client.
Arduino Nano ESP32 Bibliothèque ESP Mail Client
  • Copiez le code donné et ouvrez-le dans l'IDE Arduino.
  • Entrez les détails de votre WiFi dans le code. Remplacez WIFI_SSID et WIFI_PASSWORD par le nom de votre réseau et le mot de passe.
  • Changez l'email et le mot de passe de l'expéditeur dans le code. Modifiez SENDER_EMAIL et SENDER_PASSWORD par votre propre email et mot de passe.
  • Mettez à jour RECIPIENT_EMAIL avec l'adresse email où vous souhaitez recevoir les messages. Cela peut être votre propre email si nécessaire.

※ Note:

Assurez-vous que l'e-mail de l'expéditeur provient de Gmail. Utilisez le mot de passe d'application que vous avez obtenu précédemment comme mot de passe de l'expéditeur. L'e-mail du destinataire peut provenir de n'importe quel fournisseur de messagerie.

  • Cliquez sur le bouton Upload dans l'Arduino IDE pour envoyer le code à l'Arduino Nano ESP32.
  • Ouvrez le Moniteur Série.
  • Ouvrez la porte.
  • Vérifiez les résultats sur le Moniteur Série.
COM6
Send
The door is opened #### 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 Arduino Nano ESP32 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Vérifiez la boîte de réception de la personne à qui vous avez envoyé l'e-mail. Vous trouverez un e-mail qui ressemble à ceci :
Capteur de porte Arduino Nano ESP32 e-mail

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!