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.

Notificación por correo electrónico del sensor de movimiento de Arduino

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

Diagrama de cableado del sensor de movimiento para 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 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.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."); } // start sending Email and close the session 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()); } } // 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()) { 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"); 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"); // free the memory smtp.sendingResult.clear(); } }

Pasos R\u00e1pidos

  • Si está utilizando Arduino por primera vez, aprenda a configurarlo con el IDE de Arduino aquí: cómo configurar el entorno para Arduino en el IDE de Arduino.
  • Conecte la placa Arduino al sensor de movimiento.
  • 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.
Librería de cliente de correo ESP para Arduino
  • 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.
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 Arduino ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • 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:
Correo electrónico del sensor de movimiento de Arduino

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.

※ NUESTROS MENSAJES

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