Arduino - Notificación por correo electrónico del sensor de movimiento
En esta guía, te mostraremos cómo usar un Arduino y un sensor de movimiento para enviar correos electrónicos cuando alguien entre en tu habitación sin permiso. Veremos cómo configurar todo, qué necesitas y las instrucciones detalladas sobre cómo conectar un Arduino y un sensor de movimiento a un sistema de correo electrónico. Mejora la seguridad de tu hogar al recibir notificaciones por correo electrónico instantáneas a través del Arduino.
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.
Acerca del sensor de movimiento y Gmail
Ofrecemos guías detalladas sobre el sensor de movimiento y Gmail. Cada guía proporciona información completa y pasos fáciles de seguir sobre la configuración de hardware, cómo funciona y cómo conectar y programar Arduino. Obtenga más información visitando estos enlaces:
Diagrama de cableado entre el sensor de movimiento y Arduino
This image is created using Fritzing. Click to enlarge image
Código de Arduino
/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-motion-sensor-email-notification*/#include <WiFiS3.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 2 // Arduino pin connected to motion sensor's pinint motion_state; // current state of motion sensorint prev_motion_state; // previous state of motion sensorSMTPSessionsmtp;voidsetup() {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}voidloop() { prev_motion_state = motion_state; // save the last state motion_state = digitalRead(MOTION_SENSOR_PIN); // read new stateif (prev_motion_state == LOW && motion_state == HIGH) { // state change: LOW -> HIGHSerial.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 optionMailClient.networkReconnect(true);smtp.debug(1);smtp.callback(smtpCallback); Session_Config config;// set the session configconfig.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 serverif (!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.");elseSerial.println("Connected with no Auth."); }// start sending Email and close the sessionif (!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()); }}// callback function to get the Email sending statusvoid smtpCallback(SMTP_Status status) {// print the current statusSerial.println(status.info());// print the sending resultif (status.success()) {for (size_t i = 0; i < smtp.sendingResult.size(); i++) {// get the result item SMTP_Result result = smtp.sendingResult.getItem(i);Serial.print("Status: ");if (result.completed)Serial.println("success");elseSerial.println("failed");Serial.print("Recipient: ");Serial.println(result.recipients.c_str());Serial.print("Subject: ");Serial.println(result.subject.c_str()); }Serial.println("----------------\n");// free the memorysmtp.sendingResult.clear(); }}
Conecte la placa Arduino a su computadora utilizando un cable micro USB.
Inicie el IDE de Arduino en su computadora.
Elija la opción correcta de la placa Arduino, por ejemplo, Arduino Dev Module, y el puerto COM.
Acceda al Administrador de Bibliotecas haciendo clic en el ícono del Administrador de Bibliotecas en el lado izquierdo del IDE de Arduino.
Busque "ESP Mail Client" y encuentre la versión de Mobizt.
Presione el botón Instalar para agregar la biblioteca ESP Mail Client.
Copia el código proporcionado y ábrelo en el IDE de Arduino.
Cambia los detalles de WiFi (nombre de la red y contraseña) en el código actualizando WIFI_SSID y WIFI_PASSWORD con la información de tu red.
Cambia el correo electrónico del remitente y la contraseña en el código actualizando SENDER_EMAIL y SENDER_PASSWORD con los detalles de tu correo.
Cambia el correo electrónico del destinatario en el código actualizando RECIPIENT_EMAIL con la dirección de correo a la que quieres recibir mensajes. Esto puede ser el mismo que el correo del remitente.
※ Nota:
El correo electrónico que usas para enviar debe ser una cuenta de Gmail.
Utiliza la contraseña de la aplicación que recibiste en el paso anterior como la contraseña del remitente.
La dirección de correo a la que envías puede ser de cualquier servicio de correo.
Presione el botón Subir en Arduino IDE para enviar el código a Arduino.
Abra el Monitor Serial.
Colóquese frente al sensor de movimiento.
Observe el Monitor Serial para ver los resultados.
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
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
----------------
Ln 11, Col 1
Arduino Uno on COM15
2
Revisa la bandeja de entrada del correo electrónico de la persona a la que se lo enviaste. Recibirán un correo electrónico similar al siguiente:
Video Tutorial
Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.
No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!