ESP32 - Beweging Sensor E-mailmelding

In deze tutorial leert u hoe u een ESP32 en een bewegingssensor gebruikt om e-mailmeldingen te verzenden wanneer iemand zonder toestemming uw kamer betreedt. Deze uitgebreide handleiding behandelt het installatieproces, benodigde componenten en stapsgewijze instructies voor het koppelen van een ESP32 met een bewegingssensor en een e-mailservice. Verhoog uw thuisbeveiliging en blijf op de hoogte met realtime waarschuwingen rechtstreeks naar uw inbox, met behulp van de ESP32.

esp32 motion sensor email notification

Hardware Vereist

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB-kabel Type-C
1×HC-SR501 Bewegingssensor
1×Breadboard (experimenteerprint)
1×Jumperdraden
1×(Optioneel) DC Power Jack
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 Bewegingssensor en Gmail

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

Bedradingsschema tussen Bewegingssensor en ESP32

  • Hoe ESP32 en bewegingssensor te verbinden met behulp van een breadboard (gevoed via USB-kabel)
ESP32 Motion Sensor Wiring Diagram

This image is created using Fritzing. Click to enlarge image

  • Hoe ESP32 en bewegingssensor te verbinden met behulp van een breadboard (gevoed via Vin pin)
ESP32 Motion Sensor Wiring Diagram

This image is created using Fritzing. Click to enlarge image

How to connect ESP32 and motion sensor
How to wire ESP32 and motion sensor

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-motion-sensor-email-notification */ #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 MOTION_SENSOR_PIN 19 // ESP32 pin GPIO19 connected to motion sensor's pin int motion_state; // current state of motion sensor int prev_motion_state; // previous state of motion sensor 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(MOTION_SENSOR_PIN, INPUT); motion_state = digitalRead(MOTION_SENSOR_PIN); // read state } void loop() { prev_motion_state = motion_state; // save the last state motion_state = digitalRead(MOTION_SENSOR_PIN); // read new state if (prev_motion_state == LOW && motion_state == HIGH) { // state change: LOW -> HIGH Serial.println("Motion detected! Someone is in your room!"); String subject = "Email Notification from ESP32"; String textMsg = "This is an email sent from ESP32.\n"; textMsg += "Motion detected! Someone is in your room!"; 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 een ESP32 gebruikt, zie dan hoe u de omgeving instelt voor ESP32 in Arduino IDE.
  • Verbind het ESP32 bord met de bewegingssensor
  • Verbind het ESP32 bord met uw pc via een micro USB-kabel
  • Open Arduino IDE op uw pc.
  • Selecteer het juiste ESP32 bord (bijvoorbeeld ESP32 Dev Module) en de juiste COM-poort.
  • Open de Library Manager door te klikken op het Library Manager icoon links in de navigatiebalk van Arduino IDE.
  • Zoek op ESP Mail Client, en zoek de ESP Mail Client van Mobizt.
  • Klik op de Installeren knop om de ESP Mail Client bibliotheek te installeren.
ESP32 ESP Mail Client library
  • Kopieer de bovenstaande code en open deze in Arduino IDE
  • Werk de WiFi-gegevens bij (SSID en wachtwoord) in de code door de constanten WIFI_SSID en WIFI_PASSWORD aan te passen aan uw eigen netwerkgegevens.
  • Werk de afzender e-mail en wachtwoord bij in de code door de constanten SENDER_EMAIL en SENDER_PASSWORD aan te passen naar uw eigen e-mailaccountgegevens.
  • Werk de ontvanger e-mail bij in de code door de constante RECIPIENT_EMAIL aan te passen naar uw eigen e-mailadres. Het e-mailadres van de ontvanger kan hetzelfde zijn als dat van de afzender.

※ Notiz:

  • Afzender e-mail MOET Gmail zijn
  • Afzender wachtwoord is het App wachtwoord dat u in een vorige stap heeft verkregen
  • Ontvanger e-mail kan elk type e-mailadres zijn
  • Klik op de Upload knop in Arduino IDE om de code naar ESP32 te uploaden
  • Open de Seriële Monitor
  • Maak een beweging voor de bewegingssensor
  • Controleer het resultaat in de Seriële Monitor.
COM6
Send
Motion detected! Someone is in your room! #### 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-mailinbox van de ontvanger. U ontvangt een e-mail zoals hieronder:
ESP32 motion sensor email

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 een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u om de stappen eenvoudig te volgen.

※ 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!