ESP8266 - Sécurisez vos biens : détectez le vol et envoyez des alertes par e-mail

Ce guide vous apprendra à utiliser un ESP8266 et un capteur de force pour garder vos objets en sécurité. Nous vous montrerons comment créer un système qui vous envoie une alerte par e-mail si quelqu'un essaie de voler vos possessions. Vous apprendrez à préparer l'ESP8266, à connecter le capteur de force et à le configurer pour envoyer des e-mails via Gmail. Nous fournirons des instructions étape par étape et expliquerons comment ce système peut être utile dans des scénarios réels.

Notification par e-mail de détection de vol ESP8266 NodeMCU

Préparation du matériel

1×ESP8266 NodeMCU
1×USB Cable Type-C
1×Force Sensor
1×10 kΩ resistor
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) Screw Terminal Expansion Board for ESP8266
1×(Recommended) Power Splitter For ESP8266 Type-C

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 force et de Gmail

Nous fournissons des guides clairs sur les capteurs de force et Gmail. Chaque tutoriel inclut des instructions complètes sur la configuration du matériel, son fonctionnement et la connexion des fils à l'ESP8266, avec les étapes de codage. Pour plus de détails, suivez ces liens.

Comment fonctionne le système de détection de vol

Lorsque vous placez un objet sur le capteur de force, il mesure le poids. L'appareil ESP8266 enregistre ce poids. Si l'objet est retiré, le poids est différent. L'ESP8266 détecte cette différence de poids et vous envoie un e-mail pour vous informer que votre objet a été déplacé.

Schéma de câblage entre le capteur de force et l'ESP8266

Diagramme de câblage du capteur de force ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Voir plus dans Brochage ESP8266. et Comment alimenter l'ESP8266..

Code ESP8266

/* * Ce code ESP8266 NodeMCU a été développé par newbiely.fr * Ce code ESP8266 NodeMCU 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/esp8266/esp8266-secure-your-belongings-detect-theft-and-send-email-alerts */ #include <ESP8266WiFi.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 FORCE_SENSOR_PIN A0 // ESP8266 pin A0 connected to the FSR with 10K pull-down resistor #define THRESHOLD 100 // may need to callibrate this value 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 ESP8266 pin to input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { int forceValue = analogRead(FORCE_SENSOR_PIN); if (forceValue < THRESHOLD) { Serial.println("Alert! Someone has stolen your stuff!"); String subject = "Email Notification from ESP8266"; String textMsg = "This is an email sent from ESP8266.\n"; textMsg += "Alert! Someone has stolen your stuff!"; 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("ESP8266"); 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 l'ESP8266 sur l'IDE Arduino, suivez ces étapes :

  • Consultez le Installation du logiciel ESP8266. si c'est votre première utilisation de l'ESP8266.
  • Connectez votre carte ESP8266 au capteur de force comme indiqué dans le schéma.
  • Connectez la carte ESP8266 à votre ordinateur à l'aide d'un câble USB.
  • Placez les objets que vous souhaitez sécuriser sur le capteur de force.
  • Ouvrez Arduino IDE sur votre ordinateur.
  • Choisissez la carte ESP8266 correcte, par exemple (e.g. NodeMCU 1.0 (ESP-12E Module)), et son port COM respectif.
  • Cliquez sur l'icône Library Manager sur le côté gauche de l'Arduino IDE pour ouvrir le gestionnaire de bibliothèques.
  • Recherchez ESP Mail Client et choisissez la bibliothèque créée par Mobizt.
  • Cliquez sur le bouton Install pour installer la bibliothèque ESP Mail Client.
Bibliothèque ESP8266 NodeMCU ESP Mail Client
  • Copiez le code et ouvrez-le dans le logiciel Arduino IDE.
  • Entrez votre nom WiFi et votre mot de passe dans le code en modifiant WIFI_SSID et WIFI_PASSWORD.
  • Entrez l'email et le mot de passe de l'expéditeur dans le code en modifiant SENDER_EMAIL et SENDER_PASSWORD.
  • Remplacez l'email du destinataire dans le code en modifiant RECIPIENT_EMAIL. L'email du destinataire peut être le même que l'email de l'expéditeur.

※ Note:

  • L'adresse e-mail de la personne envoyant l'e-mail doit être de Gmail.
  • Le mot de passe de l'expéditeur doit être le mot de passe d'application que vous avez obtenu auparavant.
  • L'adresse e-mail de la personne recevant l'e-mail peut provenir de n'importe quel service de messagerie.
  • Appuyez sur le bouton Upload dans l'IDE Arduino pour transférer le code vers l'ESP8266.
  • Ouvrez le Moniteur Série.
  • Retirez votre objet du capteur de force.
  • Vérifiez les résultats sur le Moniteur Série.
COM6
Send
Alert! Someone has stolen your stuff! #### 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 ESP8266 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Vérifiez votre boîte de réception. Vous trouverez un email comme celui-ci :
ESP8266 NodeMCU détection de vol par 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!