Arduino - E-mailmelding bij deur openen
In deze handleiding leert u hoe u een Arduino gebruikt om e-mails te versturen zodra een deur wordt geopend. We leggen uit hoe u dit opzet, welke onderdelen u nodig heeft en geven gedetailleerde stappen om uw Arduino te verbinden met een deursensor en een e-mailservice. Dit helpt uw huis te beveiligen door direct e-mailmeldingen te ontvangen wanneer de deur opengaat.
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.
Wij bieden uitgebreide tutorials over Deursensoren en Gmail. Elke gids bevat gedetailleerde informatie en heldere, stapsgewijze instructies over hardware-opstelling, werkingsprincipes en hoe u de Arduino aansluit en programmeert. Meer informatie vindt u via deze 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 DOOR_SENSOR_PIN 13
int door_state;
int prev_door_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(DOOR_SENSOR_PIN, INPUT_PULLUP);
door_state = digitalRead(DOOR_SENSOR_PIN);
}
void loop() {
prev_door_state = door_state;
door_state = digitalRead(DOOR_SENSOR_PIN);
if (prev_door_state == LOW && door_state == HIGH) {
Serial.println("The door is opened");
String subject = "Email Notification from Arduino";
String textMsg = "This is an email sent from Arduino.\n";
textMsg += "Your door is opened";
gmail_send(subject, textMsg);
} else if (prev_door_state == HIGH && door_state == LOW) {
Serial.println("The door is closed");
}
}
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("Arduino");
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: ");
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());
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();
}
}
Bevestig de deursensor op uw deur.
Verbind de Arduino met de deursensor.
Sluit de Arduino via een micro USB-kabel aan op uw computer.
Start de Arduino IDE op uw computer.
Selecteer het juiste Arduino-bord (Arduino Uno R4 WiFi) en de juiste COM-poort.
Klik in de Arduino IDE op het "Library Manager"-icoon in het linkermenu om deze te openen.
Typ ESP Mail Client in de zoekbalk en zoek naar ESP Mail Client door Mobizt.
Druk op de Installeren-knop om de ESP Mail Client-bibliotheek toe te voegen.
Kopieer de meegeleverde code en open deze met Arduino IDE.
Werk uw WiFi-gegevens bij in de code. Pas de waarden van WIFI_SSID en WIFI_PASSWORD aan naar uw eigen netwerknaam en wachtwoord.
Pas het e-mailadres van de afzender en het wachtwoord aan in de code. Wijzig SENDER_EMAIL en SENDER_PASSWORD.
※ Notiz:
Zorg dat het e-mailadres van de afzender een Gmail-adres is. Gebruik het App-wachtwoord van de vorige stap als het wachtwoord van de afzender. Het e-mailadres van de ontvanger kan elk type e-mail zijn.
The door is opened
#### 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, duidelijkere uitleg en helpt u obstakels te overwinnen terwijl u leert hoe u een Arduino koppelt aan een deursensor en e-mailmelding verstuurt.