ESP32 - Sécurisez vos biens : détectez les vols et envoyez des alertes par e-mail

Dans ce tutoriel, nous allons apprendre à sécuriser vos objets de valeur en utilisant un ESP32 et un capteur de force pour détecter lorsque quelqu'un prend vos affaires. Ce guide détaillé vous explique comment mettre en place un système de détection de vol qui envoie des notifications par e-mail instantanées via Gmail. Notre tutoriel couvre tout, de la configuration de l'ESP32, l'intégration du capteur de force, à la programmation du système d'alerte par e-mail. Découvrez les avantages, les instructions étape par étape et les applications pratiques de l'utilisation d'un ESP32 et d'un capteur de force pour la détection de vol et les alertes par e-mail.

Notification par e-mail de détection de vol ESP32

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×Force Sensor
1×10 kΩ resistor
1×Breadboard
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Recommended) ESP32 Screw Terminal Adapter

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 disposons de tutoriels spécifiques sur le capteur de force 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... Pour en savoir plus, consultez les liens suivants :

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

Le capteur de force peut mesurer le poids d'un objet lorsque vous le placez sur le capteur. Lorsque vous déposez votre objet sur le capteur de force, l'ESP32 lit et enregistre ce poids. Si quelqu'un prend votre objet, le poids sur le capteur change. L'ESP32 détecte ce changement et vous envoie une notification par email pour vous informer que votre objet a été déplacé.

Schéma de câblage entre le capteur de force et le ESP32

Schéma de câblage du capteur de force 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.

Code 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-secure-your-belongings-detect-theft-and-send-email-alerts */ #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 FORCE_SENSOR_PIN 36 // ESP32 pin GPIO36 (ADC0): the FSR and 10K pulldown are connected to A0 #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 ESP32 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 ESP32"; String textMsg = "This is an email sent from ESP32.\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("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 ESP32, consultez comment configurer l'environnement pour ESP32 sur Arduino IDE.
  • Connectez la carte ESP32 au capteur de force
  • Placez vos affaires sur le capteur de force
  • Connectez la carte ESP32 à votre PC via un câble USB
  • Ouvrez Arduino IDE sur votre PC.
  • Sélectionnez la bonne carte ESP32 (par exemple, Module de développement ESP32) et le port COM.
  • Ouvrez le gestionnaire de bibliothèques en cliquant sur l'icône Gestionnaire de bibliothèques dans la barre de navigation gauche de l'Arduino IDE.
  • Recherchez ESP Mail Client, puis trouvez le client de messagerie ESP 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 Arduino IDE
  • Modifiez les informations WiFi (SSID et mot de passe) dans le code par les vôtres en modifiant deux constantes WIFI_SSID et WIFI_PASSWORD
  • Changez l'email et le mot de passe de l'expéditeur dans le code pour les vôtres en modifiant deux constantes SENDER_EMAIL et SENDER_PASSWORD
  • Changez l'email du destinataire dans le code pour le vôtre en modifiant deux constantes RECIPIENT_EMAIL. L'email du destinataire peut être le même que celui de l'expéditeur

※ NOTE THAT:

  • L'email de l'expéditeur DOIT être Gmail
  • Le mot de passe de l'expéditeur est les mots de passe d'application que vous avez obtenus à l'étape précédente
  • L'email du destinataire peut être de n'importe quel type d'email
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour charger le code sur l'ESP32
  • Ouvrez le moniteur série
  • Retirez vos affaires du capteur de force
  • Consultez le résultat 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 ESP32 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Vérifiez la boîte de réception de votre destinataire. Vous recevrez un email comme ci-dessous :
Détection de vol ESP32 par 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!