Arduino - Notification par email du capteur de mouvement
Dans ce guide, nous vous montrerons comment utiliser un Arduino et un capteur de mouvement pour envoyer des e-mails lorsque quelqu'un entre dans votre pièce sans permission. Nous couvrirons comment tout configurer, ce dont vous avez besoin, et des instructions détaillées sur la connexion d'un Arduino et d'un capteur de mouvement à un système de messagerie électronique. Améliorez votre sécurité à domicile en recevant des notifications par e-mail instantanées grâce à l'Arduino.
Or you can buy the following sensor kits:
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.
Nous proposons des guides détaillés sur le capteur de mouvement et Gmail. Chaque guide fournit des informations complètes et des étapes faciles à suivre sur l'installation du matériel, son fonctionnement et comment connecter et programmer l'Arduino. Pour en savoir plus, visitez ces liens :
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();
}
}
Branchez la carte Arduino au capteur de mouvement.
Connectez la carte Arduino à votre ordinateur à l'aide d'un câble micro USB.
Démarrez l'IDE Arduino sur votre ordinateur.
Choisissez l'option de carte Arduino correcte, par exemple, Module de développement Arduino, et le port COM.
Accédez au Gestionnaire de Bibliothèques en cliquant sur l'icône du Gestionnaire de Bibliothèques à gauche de l'IDE Arduino.
Cherchez "ESP Mail Client" et trouvez la version par Mobizt.
Appuyez sur le bouton Installer pour ajouter la bibliothèque ESP Mail Client.
Copiez le code fourni et ouvrez-le dans l'IDE Arduino.
Modifiez les détails WiFi (nom du réseau et mot de passe) dans le code en mettant à jour WIFI_SSID et WIFI_PASSWORD avec vos informations réseau.
Changez l'email et le mot de passe de l'expéditeur dans le code en mettant à jour SENDER_EMAIL et SENDER_PASSWORD avec vos informations d'email.
Changez l'email du destinataire dans le code en mettant à jour RECIPIENT_EMAIL avec l'adresse email où vous souhaitez recevoir les messages. Cela peut être le même que l'email de l'expéditeur.
※ Note:
L'email que vous utilisez pour envoyer doit être un Gmail.
Utilisez le mot de passe de l'application que vous avez reçu à l'étape précédente pour le mot de passe de l'expéditeur.
L'adresse email à laquelle vous envoyez peut être de n'importe quel type.
Appuyez sur le bouton Upload dans l'IDE Arduino pour envoyer le code à Arduino.
Ouvrez le Moniteur Série.
Déplacez-vous devant le capteur de mouvement.
Regardez le Moniteur Série pour voir les résultats.
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
----------------