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

Dans ce guide, nous apprendrons comment utiliser un Arduino pour envoyer des courriels lorsqu'une porte s'ouvre. Nous expliquerons comment le configurer, quelles pièces vous avez besoin, et nous vous donnerons des étapes détaillées pour connecter un Arduino avec un capteur de porte et un service de messagerie. Cela aidera à sécuriser votre maison en vous envoyant des alertes par courriel instantanées lorsque la porte est ouverte.

Notification par e-mail d'ouverture de porte Arduino

Préparation du matériel

1×Arduino UNO R4 WiFi
1×USB Cable Type-C
1×Door Sensor
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) Screw Terminal Block Shield for Arduino UNO R4
1×(Recommended) Breadboard Shield For Arduino UNO R4
1×(Recommended) Enclosure For Arduino UNO R4
1×(Recommended) Power Splitter For Arduino UNO R4

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 proposons des tutoriels détaillés sur les Capteurs de Porte et Gmail. Chaque guide comprend des détails complets et des instructions claires, étape par étape, sur l'installation matérielle, les principes de fonctionnement, et comment connecter et programmer l'Arduino. Vous pouvez en savoir plus sur ces tutoriels via ces liens :

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

Diagramme de câblage du capteur de porte Arduino

This image is created using Fritzing. Click to enlarge image

Code Arduino

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino 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/arduino-door-open-email-notification */ #include <WiFiS3.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 13 // Arduino pin 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 Arduino 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 Arduino"; String textMsg = "This is an email sent from Arduino.\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("Arduino"); 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.println("Connection error: "); Serial.print("- Status Code: "); Serial.println(smtp.statusCode()); Serial.print("- Error Code: "); Serial.println(smtp.errorCode()); Serial.print("- Reason: "); Serial.println(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.println("Connection error: "); Serial.print("- Status Code: "); Serial.println(smtp.statusCode()); Serial.print("- Error Code: "); Serial.println(smtp.errorCode()); Serial.print("- Reason: "); Serial.println(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()) { for (size_t i = 0; i < smtp.sendingResult.size(); i++) { // get the result item SMTP_Result result = smtp.sendingResult.getItem(i); Serial.print("Status: "); if (result.completed) Serial.println("success"); else Serial.println("failed"); Serial.print("Recipient: "); Serial.println(result.recipients.c_str()); Serial.print("Subject: "); Serial.println(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 Arduino Uno R4, voir Comment démarrer avec Arduino Uno R4..
  • Fixez le capteur de porte sur votre porte.
  • Reliez la carte Arduino au capteur de porte.
  • Connectez la carte Arduino à votre ordinateur en utilisant un câble micro USB.
  • Lancez l'Arduino IDE sur votre ordinateur.
  • Sélectionnez la bonne carte Arduino (Arduino Uno R4 WiFi) et le port COM.
  • Dans Arduino IDE, cliquez sur l'icône "Gestionnaire de Bibliothèques" dans le menu de gauche pour l'ouvrir.
  • Tapez ESP Mail Client dans la boîte de recherche, et cherchez ESP Mail Client par Mobizt.
  • Appuyez sur le bouton Install pour ajouter la bibliothèque ESP Mail Client.
Arduino ESP Mail Client bibliothèque
  • Copiez le code fourni et ouvrez-le avec l'IDE Arduino.
  • Mettez à jour les détails de votre WiFi (nom du réseau et mot de passe) dans le code. Changez les valeurs de WIFI_SSID et WIFI_PASSWORD par les vôtres.
  • Modifiez l'email et le mot de passe de l'expéditeur dans le code. Modifiez SENDER_EMAIL et SENDER_PASSWORD.

※ Note:

Assurez-vous que l'email de l'expéditeur provient de Gmail. Utilisez le mot de passe de l'application de l'étape précédente comme mot de passe de l'expéditeur. L'email du destinataire peut être de n'importe quel type.

  • Appuyez sur le bouton Upload dans Arduino IDE pour télécharger le code sur l'Arduino.
  • Ouvrez le Moniteur Série.
  • Ouvrez la porte.
  • Consultez 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 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Vérifiez la boîte de réception de votre destinataire. Vous recevrez un courriel similaire au suivant :
Capteur de porte Arduino 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!