Arduino - Bewegingssensor E-mailmelding
In deze gids laten we u zien hoe u een Arduino en een bewegingssensor gebruikt om e-mails te sturen zodra iemand zonder toestemming uw kamer binnenkomt. We behandelen het opzetten van de hardware, wat u nodig heeft, en gedetailleerde instructies voor het verbinden van een Arduino en bewegingssensor met een e-mailsysteem. Verbeter uw thuisbeveiliging door directe e-mailmeldingen te ontvangen via Arduino.
Of u kunt de volgende kits kopen:
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.
We bieden gedetailleerde handleidingen over de Bewegingssensor en Gmail. Elke gids bevat complete informatie en eenvoudig te volgen stappen over de hardware-setup, werking en het verbinden en programmeren met Arduino. Meer informatie vindt u via de volgende links:

This image is created using Fritzing. Click to enlarge image
#include <WiFiS3.h>
#include <ESP_Mail_Client.h>
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"
#define SENDER_EMAIL "xxxxxx@gmail.com"
#define SENDER_PASSWORD "xxxx xxxx xxxx xxxx"
#define RECIPIENT_EMAIL "xxxxxx@gmail.com"
#define SMTP_HOST "smtp.gmail.com"
#define SMTP_PORT 587
#define MOTION_SENSOR_PIN 2
int motion_state;
int prev_motion_state;
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);
}
void loop() {
prev_motion_state = motion_state;
motion_state = digitalRead(MOTION_SENSOR_PIN);
if (prev_motion_state == LOW && motion_state == 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) {
MailClient.networkReconnect(true);
smtp.debug(1);
smtp.callback(smtpCallback);
Session_Config 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;
SMTP_Message message;
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;
message.addHeader(F("Message-ID: <abcde.fghij@gmail.com>"));
if (!smtp.connect(&config)) {
Serial.println("Connection error");
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.");
}
if (!MailClient.sendMail(&smtp, &message)) {
Serial.println("Connection error: ");
Serial.print("- Status Code: ");
Serial.println(smtp.statusCode());
Serial.print("- Error Code: ");
Serial.println(smtp.errorCode());
Serial.print("- Reason: ");
Serial.println(smtp.errorReason().c_str());
}
}
void smtpCallback(SMTP_Status status) {
Serial.println(status.info());
if (status.success()) {
for (size_t i = 0; i < smtp.sendingResult.size(); i++) {
SMTP_Result result = smtp.sendingResult.getItem(i);
Serial.print("Status: ");
if (result.completed)
Serial.println("success");
else
Serial.println("failed");
Serial.print("Recipient: ");
Serial.println(result.recipients.c_str());
Serial.print("Subject: ");
Serial.println(result.subject.c_str());
}
Serial.println("----------------\n");
smtp.sendingResult.clear();
}
}
Sluit de Arduino aan op de bewegingssensor.
Verbind de Arduino met uw computer via een micro USB-kabel.
Start de Arduino IDE op uw computer.
Kies het juiste Arduino board, bijvoorbeeld Arduino Dev Module, en selecteer de bijbehorende COM-poort.
Open de Library Manager door te klikken op het Library Manager icoon aan de linkerzijde van de Arduino IDE.
Zoek naar "ESP Mail Client" en selecteer de versie van Mobizt.
Klik op de Install-knop om de ESP Mail Client bibliotheek toe te voegen.

Kopieer de meegeleverde code en open deze in de Arduino IDE.
Pas in de code de WiFi-gegevens aan door WIFI_SSID en WIFI_PASSWORD te wijzigen naar uw netwerkinformatie.
Wijzig in de code het verzendadres en wachtwoord door SENDER_EMAIL en SENDER_PASSWORD aan te passen met uw e-mailgegevens.
Wijzig het ontvangstadres door RECIPIENT_EMAIL aan te passen met het e-mailadres waar u de berichten naartoe wilt sturen. Dit kan hetzelfde e-mailadres zijn als van de verzender.
※ Notiz:
Het e-mailadres dat u gebruikt voor het verzenden moet een Gmail-adres zijn.
Gebruik het app-wachtwoord dat u in de vorige stap heeft ontvangen als wachtwoord van de afzender.
Het e-mailadres waar u naartoe stuurt, kan elk e-mailadres zijn.
Druk op de Upload knop in de Arduino IDE om de code naar de Arduino te sturen.
Open de Seriële Monitor.
Beweeg voor de bewegingssensor.
Bekijk de Seriële Monitor om de resultaten te zien.
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 Arduino
----------------
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 elke stap beter te begrijpen.