ESP32 - Beveilig Uw Bezittingen: Detecteer Diefstal en Verstuur E-mailmeldingen

In deze handleiding leert u hoe u uw waardevolle spullen beveiligt met een ESP32 en een krachtensensor om te detecteren wanneer iemand uw spullen pakt. Deze uitgebreide gids leidt u door het opzetten van een diefstaldetectiesysteem dat direct e-mailmeldingen verzendt via Gmail. Onze tutorial behandelt alles, van het configureren van de ESP32, het integreren van de krachtensensor tot het programmeren van het e-mail waarschuwingssysteem. Ontdek de voordelen, stapsgewijze instructies en praktische toepassingen van het gebruik van een ESP32 en krachtensensor voor diefstaldetectie en e-mailmeldingen.

ESP32 Diefstal Detectie E-mailmelding

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×Krachtensensor
1×10 kΩ weerstand
1×Breadboard (experimenteerprint)
1×Jumper wires
1×(Optioneel) DC voedingsconnector
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over Krachtensensor en Gmail

We hebben aparte tutorials over de krachtensensor en Gmail. Elke tutorial bevat gedetailleerde informatie en stapsgewijze instructies over de hardware pinout, werkingsprincipe, bedradingsverbinding met ESP32, ESP32 code en meer. Leer er meer over via de volgende links:

Hoe het diefstaldetectiesysteem werkt

De krachtensensor kan meten hoeveel gewicht er op de sensor ligt. Wanneer u uw voorwerp op de krachtensensor plaatst, leest en registreert de ESP32 dit gewicht. Als iemand uw voorwerp weghaalt, verandert het gewicht op de sensor. De ESP32 detecteert deze verandering en stuurt een e-mailmelding om u te laten weten dat uw voorwerp is verplaatst.

Bedradingsschema tussen Krachtensensor en ESP32

  • Hoe u de ESP32 en krachtensensor aansluit met een breadboard
ESP32 Krachtensensor Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Hoe ESP32 en krachtensensor aansluiten

ESP32 Code

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/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); // 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(); } }

Snelle stappen

  • Als u voor het eerst met een ESP32 werkt, bekijk dan hoe u de omgeving voor ESP32 instelt in Arduino IDE.
  • Verbind het ESP32 board met de krachtensensor
  • Plaats uw voorwerp over de krachtensensor
  • Verbind het ESP32 board met uw PC via een USB-kabel
  • Open Arduino IDE op uw PC
  • Selecteer het juiste ESP32 board (bijv. ESP32 Dev Module) en de juiste COM-poort
  • Open de Library Manager via het Library Manager-pictogram in de linkernavigatiebalk van Arduino IDE
  • Zoek naar ESP Mail Client en vind de ESP Mail Client gemaakt door Mobizt
  • Klik op de Installeren-knop om de ESP Mail Client bibliotheek te installeren
ESP32 ESP Mail Client bibliotheek
  • Kopieer de bovenstaande code en open deze in Arduino IDE
  • Pas de WiFi-gegevens (SSID en wachtwoord) aan uw eigen netwerk aan door de twee constanten WIFI_SSID en WIFI_PASSWORD te wijzigen
  • Pas de afzender e-mail en wachtwoord aan naar uw gegevens door de constanten SENDER_EMAIL en SENDER_PASSWORD te wijzigen
  • Pas de ontvanger e-mail aan uw e-mailadres aan door de constante RECIPIENT_EMAIL te wijzigen. De ontvanger kan hetzelfde e-mailadres zijn als de afzender

※ Notiz:

  • Afzender e-mail MOET een Gmail adres zijn
  • Het afzenderwachtwoord is het App-wachtwoord dat u in de vorige stap heeft gemaakt
  • Ontvanger e-mail kan elk type e-mailadres zijn
  • Klik op de Uploaden knop in Arduino IDE om de code naar de ESP32 te uploaden
  • Open de Seriële Monitor
  • Haal uw voorwerp van de krachtensensor af
  • Bekijk het resultaat in de Seriële Monitor
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  
  • Controleer uw e-mailbox van de ontvanger. U ontvangt een e-mail zoals hieronder:
ESP32 diefstal detectie e-mail

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor visuele begeleiding bij dit project! De video biedt extra inzichten en een praktische demonstratie van het instellen van het diefstaldetectiesysteem met ESP32 en krachtensensor.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!