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

Esta guía te mostrará cómo configurar un Arduino Nano ESP32 para enviar correos electrónicos cuando se abre una puerta. Hablaremos de qué componentes son necesarios, cómo configurarlos y proporcionaremos instrucciones paso a paso para conectar un Arduino Nano ESP32 a un sensor de puerta y a un servicio de correo electrónico. Esto te ayudará a recibir notificaciones por correo electrónico de inmediato cada vez que se abra la puerta, mejorando la seguridad de tu hogar.

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

Hardware Requerido

1×Arduino Nano ESP32
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Sensor de Puerta
1×(Opcional) Conector de Alimentación DC
1×Protoboard
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
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 la puerta y Gmail

Ofrecemos guías detalladas sobre sensores de puertas y Gmail. Cada guía ofrece información detallada e instrucciones fáciles y paso a paso para configurar el hardware, entender cómo funciona y conectar y programar el Arduino Nano ESP32. Obtenga más información sobre estas guías siguiendo estos enlaces.

Diagrama de cableado entre el sensor de la puerta y Arduino Nano ESP32

Diagrama de cableado de Arduino Nano ESP32 para sensor de puerta

This image is created using Fritzing. Click to enlarge image

Código Arduino Nano ESP32

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-door-open-email-notification */ #include <WiFi.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 D2 // The Arduino Nano ESP32 pin D2 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 ESP32 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 ESP32"; String textMsg = "This is an email sent from ESP32.\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("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.printf("Connection error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), 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.printf("Error, Status Code: %d, Error Code: %d, Reason: %s\n", smtp.statusCode(), smtp.errorCode(), 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()) { Serial.println("----------------"); Serial.printf("Email sent success: %d\n", status.completedCount()); Serial.printf("Email sent failed: %d\n", status.failedCount()); Serial.println("----------------\n"); for (size_t i = 0; i < smtp.sendingResult.size(); i++) { // get the result item SMTP_Result result = smtp.sendingResult.getItem(i); Serial.printf("Message No: %d\n", i + 1); Serial.printf("Status: %s\n", result.completed ? "success" : "failed"); Serial.printf("Date/Time: %s\n", MailClient.Time.getDateTimeString(result.timestamp, "%B %d, %Y %H:%M:%S").c_str()); Serial.printf("Recipient: %s\n", result.recipients.c_str()); Serial.printf("Subject: %s\n", result.subject.c_str()); } Serial.println("----------------\n"); // free the memory smtp.sendingResult.clear(); } }

Pasos R\u00e1pidos

Para empezar con Arduino Nano ESP32, siga estos pasos:

  • Si eres nuevo en Arduino Nano ESP32, consulta el tutorial sobre cómo configurar el entorno para Arduino Nano ESP32 en el IDE de Arduino.
  • Conecta la placa Arduino Nano ESP32 al sensor de la puerta según el diagrama proporcionado.
  • Coloca el sensor de la puerta en la puerta.
  • Conecta la placa Arduino Nano ESP32 a tu computadora usando un cable USB.
  • Abre el IDE de Arduino en tu computadora.
  • Selecciona la placa Arduino Nano ESP32 y su puerto COM correspondiente.
  • En el IDE de Arduino, haz clic en el icono Gestor de bibliotecas en el menú de la izquierda para abrirlo.
  • En la caja de búsqueda, escribe ESP Mail Client y encuentra ESP Mail Client de Mobizt.
  • Haz clic en el botón Instalar para instalar la biblioteca ESP Mail Client.
Librería ESP Mail Client para Arduino Nano ESP32
  • Copie el código proporcionado y ábralo en el IDE de Arduino.
  • Ingrese los datos de su WiFi en el código. Reemplace WIFI_SSID y WIFI_PASSWORD con el nombre de su red y la contraseña.
  • Cambie el correo electrónico y la contraseña del remitente en el código. Cambie SENDER_EMAIL y SENDER_PASSWORD por su propio correo electrónico y contraseña.
  • Actualice RECIPIENT_EMAIL a la dirección de correo a la que desea recibir mensajes. Esto puede ser su propio correo si es necesario.

※ Nota:

Asegúrate de que el correo del remitente provenga de Gmail. Utiliza la contraseña de la aplicación que obtuviste anteriormente como la contraseña del remitente. La dirección de correo del destinatario puede ser de cualquier proveedor de correo.

  • Haz clic en el Subir botón en el IDE de Arduino para enviar el código al Arduino Nano ESP32.
  • Abre el Monitor Serial.
  • Abre la puerta.
  • Verifica 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 Nano ESP32 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Revisa la bandeja de entrada del correo electrónico de la persona a la que enviaste el correo. Encontrarás un correo que se ve así:
Arduino Nano ESP32 sensor de puerta correo electrónico

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!