ESP32 - Schützen Sie Ihr Eigentum: Diebstahl erkennen und E-Mail-Benachrichtigungen senden

In diesem Tutorial lernen wir, wie man Ihre Wertsachen schützt, indem wir einen ESP32 und einen Kraftsensor verwenden, um zu erkennen, wann jemand Ihre Sachen nimmt. Diese detaillierte Anleitung führt Sie durch die Einrichtung eines Diebstahlsüberwachungssystems, das sofortige E-Mail-Benachrichtigungen über Gmail sendet. Unser Tutorial deckt alles ab, von der Konfiguration des ESP32, der Integration des Kraftsensors bis hin zur Programmierung des E-Mail-Benachrichtigungssystems. Entdecken Sie die Vorteile, Schritt-für-Schritt-Anleitungen und praktische Anwendungen der Verwendung eines ESP32 und eines Kraftsensors zur Diebstahlsüberwachung und E-Mail-Benachrichtigungen.

ESP32 Diebstahlerkennung E-Mail-Benachrichtigung

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Kraftsensor
1×10 kΩ Resistor
1×Breadboard
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über Kraftsensor und Gmail

Wir haben spezielle Tutorials zum Kraftsensor und zu Gmail. Jedes Tutorial enthält detaillierte Informationen und Schritt-für-Schritt-Anleitungen zur Hardware-Pinbelegung, zum Funktionsprinzip, zur Verdrahtung mit dem ESP32, ESP32-Code... Erfahren Sie mehr dazu in den folgenden Links:

Wie funktioniert das Diebstahls-Erkennungssystem

Der Kraftsensor kann messen, wie viel etwas wiegt, wenn man es auf den Sensor legt. Wenn Sie Ihren Gegenstand auf den Kraftsensor legen, liest der ESP32 dieses Gewicht aus und protokolliert es. Wenn jemand Ihren Gegenstand mitnimmt, ändert sich das Gewicht auf dem Sensor. Der ESP32 erkennt diese Änderung und sendet Ihnen eine E-Mail-Benachrichtigung, um Sie darüber zu informieren, dass Ihr Gegenstand bewegt wurde.

Verdrahtungsdiagramm zwischen Kraftsensor und ESP32

  • Wie man ESP32 und einen Kraftsensor mit einem Steckbrett verbindet Steckbrett
ESP32 Kraftverdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

  • So verbinden Sie ESP32 und Kraftsensor mithilfe eines Schraubklemmen-Breakout-Boards Schraubklemmen-Breakout-Board (über USB-Kabel mit Strom versorgt)
Wie verbindet man ESP32 mit einem Kraftsensor?

ESP32-Quellcode

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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(); } }

Schnelle Schritte

  • Wenn dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie sich an, wie man die Umgebung für ESP32 in der Arduino IDE einrichtet.
  • Verbinden Sie das ESP32-Board mit dem Kraftsensor
  • Legen Sie Ihre Gegenstände auf den Kraftsensor
  • Verbinden Sie das ESP32-Board per USB-Kabel mit Ihrem PC.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port.
  • Öffnen Sie den Library Manager, indem Sie auf das Library Manager-Symbol in der linken Navigationsleiste der Arduino IDE klicken.
  • Suchen Sie ESP Mail Client, und finden Sie dann den ESP Mail Client, der von Mobizt erstellt wurde.
  • Klicken Sie auf die Schaltfläche Installieren, um die ESP Mail Client-Bibliothek zu installieren.
ESP32 ESP Mail Client-Bibliothek
  • Kopiere den obigen Code und öffne ihn in der Arduino IDE
  • Ändere die WiFi-Informationen (SSID und Passwort) im Code auf deine, indem du zwei Konstanten WIFI_SSID und WIFI_PASSWORD änderst
  • Ändere die Absender-E-Mail-Adresse und das Passwort im Code auf deine, indem du zwei Konstanten SENDER_EMAIL und SENDER_PASSWORD änderst
  • Ändere die Empfänger-E-Mail im Code auf deine, indem du zwei Konstanten RECIPIENT_EMAIL änderst. Die Empfänger-E-Mail-Adresse kann dieselbe wie die Absender-E-Mail sein

※ Notiz:

  • Die Absender-E-Mail muss Gmail sein
  • Das Absender-Passwort ist das App-Passwort, das Sie im vorherigen Schritt erhalten haben
  • Die Empfänger-E-Mail kann jede Art von E-Mail sein
  • Klicken Sie auf die Schaltfläche Hochladen im Arduino IDE, um Code auf den ESP32 hochzuladen.
  • Öffnen Sie den seriellen Monitor.
  • Nehmen Sie Ihre Sachen aus dem Kraftsensor.
  • Prüfen Sie das Ergebnis im seriellen 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  
  • Überprüfen Sie das Postfach des Empfängers. Sie erhalten eine E-Mail wie unten angegeben:
ESP32 Diebstahlerkennung E-Mail

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!