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.
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
Cette image a été créée avec Fritzing. Cliquez pour agrandir l'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 pinint door_state; // current state of door sensorint prev_door_state; // previous state of door sensorSMTPSessionsmtp;voidsetup() {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}voidloop() { prev_door_state = door_state; // save the last state door_state = digitalRead(DOOR_SENSOR_PIN); // read new stateif (prev_door_state == LOW && door_state == HIGH) { // state change: LOW -> HIGHSerial.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); } elseif (prev_door_state == HIGH && door_state == LOW) { // state change: HIGH -> LOWSerial.println("The door is closed"); }}void gmail_send(String subject, String textMsg) {// set the network reconnection optionMailClient.networkReconnect(true);smtp.debug(1);smtp.callback(smtpCallback); Session_Config config;// set the session configconfig.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 serverif (!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.");elseSerial.println("Connected with no Auth."); }// start sending Email and close the sessionif (!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 statusvoid smtpCallback(SMTP_Status status) {// print the current statusSerial.println(status.info());// print the sending resultif (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");elseSerial.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 memorysmtp.sendingResult.clear(); }}
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.
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.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
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
----------------
Ln 11, Col 1
Arduino Uno on COM15
2
Vérifiez la boîte de réception de votre destinataire. Vous recevrez un courriel similaire au suivant :
N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !