Arduino Nano ESP32 - Sécurisez vos biens : détectez le vol et envoyez des alertes par email

Dans ce guide, nous vous apprendrons à garder vos objets en sécurité en utilisant un Arduino Nano ESP32 et un capteur de force. Nous couvrirons les étapes pour mettre en place un système qui vous envoie un e-mail si quelqu'un tente de déplacer vos affaires. Vous apprendrez à préparer l'Arduino Nano ESP32, à connecter le capteur de force et à le configurer pour vous envoyer un e-mail via Gmail. Nous vous fournirons des instructions détaillées et vous montrerons comment ce système peut être utile.

Détection de vol Arduino Nano ESP32 Notification par e-mail

Préparation du matériel

1×Arduino Nano ESP32
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 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 force et de Gmail

Nous fournissons des guides détaillés sur les capteurs de force et Gmail. Chaque tutoriel vous donne des instructions pas à pas pour configurer le matériel, comprendre son fonctionnement et connecter les fils à l'Arduino Nano ESP32, y compris comment coder pour l'Arduino Nano ESP32. Pour plus de détails, veuillez visiter ces liens :

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

Le capteur de force mesure le poids d'un objet placé dessus. Lorsque vous placez votre objet sur le capteur, l'Arduino Nano ESP32 enregistre le poids. Si l'objet est retiré, le poids changera. L'Arduino Nano ESP32 détecte ce changement et vous envoie un email pour vous informer que votre objet a été déplacé.

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

Schéma de câblage du capteur de force 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-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 A0 // The Arduino Nano ESP32 pin A0 are connected to the FSR with 10K pulldown resistor #define THRESHOLD 100 // may need to callibrate this value SMTPSession smtp; void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); 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

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

  • Si vous êtes nouveau sur Arduino Nano ESP32, référez-vous au tutoriel sur Installation du logiciel Arduino Nano ESP32..
  • Connectez la carte Arduino Nano ESP32 au capteur de force selon le schéma fourni.
  • Connectez la carte Arduino Nano ESP32 à votre ordinateur à l'aide d'un câble USB.
  • Ouvrez l'Arduino IDE sur votre ordinateur.
  • Sélectionnez la carte Arduino Nano ESP32 et son port COM correspondant.
  • Placez vos objets sur le capteur de force.
  • Ouvrez le Gestionnaire de Bibliothèques en cliquant sur l'icône Gestionnaire de Bibliothèques sur le côté gauche de l'Arduino IDE.
  • Recherchez ESP Mail Client et choisissez la bibliothèque de Mobizt.
  • Cliquez sur le bouton Install pour ajouter la bibliothèque ESP Mail Client.
Arduino Nano ESP32 ESP Client de messagerie bibliothèque
  • Copiez le code et ouvrez-le à l'aide de l'Arduino IDE.
  • Entrez vos informations WiFi (nom et mot de passe) dans le code en modifiant WIFI_SSID et WIFI_PASSWORD.
  • Entrez l'email et le mot de passe de la personne envoyant l'email dans le code en modifiant SENDER_EMAIL et SENDER_PASSWORD.
  • Entrez l'adresse email de la personne recevant l'email dans le code en modifiant RECIPIENT_EMAIL. Cet email peut être le même que celui de l'expéditeur.

※ Note:

  • L'adresse e-mail de l'expéditeur doit être un compte Gmail.
  • Utilisez le mot de passe d'application que vous avez obtenu précédemment comme mot de passe de l'expéditeur.
  • Tout fournisseur de messagerie peut être utilisé pour l'adresse e-mail du destinataire.
  • Appuyez sur le bouton Upload dans l'IDE Arduino pour transférer le code vers l'Arduino Nano ESP32.
  • Ouvrez le Moniteur Série.
  • Retirez les objets 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 Arduino Nano ESP32 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Vérifiez la boîte de réception de la personne à qui vous envoyez. Elle recevra un e-mail similaire à celui-ci :
Arduino Nano ESP32 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!