Arduino - Notificación por correo electrónico de apertura de la puerta

En esta guía, aprenderemos cómo usar un Arduino para enviar correos electrónicos cuando se abre una puerta. Explicaremos cómo configurarlo, qué piezas necesitas, y te daremos pasos detallados para conectar un Arduino con un sensor de puerta y un servicio de correo electrónico. Esto ayudará a mantener tu casa segura al enviarte alertas por correo electrónico en tiempo real cuando se abra la puerta.

Notificación por correo electrónico de apertura de puerta con Arduino

Acerca del sensor de la puerta y Gmail

Ofrecemos tutoriales detallados sobre sensores de puertas y Gmail. Cada guía incluye detalles exhaustivos e instrucciones claras, paso a paso, sobre la configuración del hardware, los principios de funcionamiento y cómo conectar y programar el Arduino. Puede obtener más información sobre estos tutoriales a través de estos enlaces:

Diagrama de cableado entre el sensor de la puerta y Arduino

Diagrama de cableado del sensor de puerta 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-door-open-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 DOOR_SENSOR_PIN 13 // Arduino pin connected to door sensor's pin int door_state; // current state of door sensor int prev_door_state; // previous state of door 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(DOOR_SENSOR_PIN, INPUT_PULLUP); // set Arduino pin to input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { prev_door_state = door_state; // save the last state door_state = digitalRead(DOOR_SENSOR_PIN); // read new state if (prev_door_state == LOW && door_state == HIGH) { // state change: LOW -> 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) { // state change: HIGH -> LOW Serial.println("The door is closed"); } } 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("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; // 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: "); 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."); } // 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 es la primera vez que usas Arduino Uno R4, consulta cómo configurar el entorno para Arduino Uno R4 en Arduino IDE.
  • Coloca el sensor de la puerta en la puerta.
  • Conecta la placa Arduino con el sensor de la puerta.
  • Conecta la placa Arduino a tu computadora usando un cable micro USB.
  • Abre el IDE de Arduino en tu computadora.
  • Selecciona la placa Arduino correcta (Arduino Uno R4 WiFi) y el puerto COM.
  • En el IDE de Arduino, haz clic en el icono de "Library Manager" en el menú de la izquierda para abrirlo.
  • Escribe ESP Mail Client en el cuadro de búsqueda y busca ESP Mail Client de Mobizt.
  • Presiona el botón Instalar para agregar la biblioteca ESP Mail Client.
Biblioteca de Arduino ESP Mail Client
  • Copia el código proporcionado y ábrelo con Arduino IDE.
  • Actualiza tus datos de WiFi (nombre de la red y la contraseña) en el código. Cambia los valores de WIFI_SSID y WIFI_PASSWORD por los tuyos.
  • Edita el correo electrónico del remitente y la contraseña en el código. Modifica SENDER_EMAIL y SENDER_PASSWORD.

※ Nota:

Asegúrate de que el correo electrónico del remitente sea de Gmail. Utiliza la contraseña de la aplicación del paso anterior como la contraseña del remitente. La dirección de correo del destinatario puede ser de cualquier tipo.

  • Pulse el botón Cargar en el IDE de Arduino para cargar el código al Arduino
  • Abrir el Monitor Serial
  • Abrir la puerta
  • Ver los resultados en el Monitor Serial.
COM6
Send
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 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Revisa la bandeja de entrada del correo de tu destinatario. Recibirás un correo electrónico similar al siguiente:
Correo electrónico del sensor de la puerta 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!