ESP8266 - Asegura tus pertenencias: Detecta robos y envía alertas por correo electrónico

Esta guía te enseñará cómo usar un ESP8266 y un sensor de fuerza para mantener tus objetos seguros. Te mostraremos cómo crear un sistema que te envíe una alerta por correo electrónico si alguien intenta robar tus pertenencias. Aprenderás a preparar el ESP8266, conectar el sensor de fuerza y configurarlo para enviar correos electrónicos a través de Gmail. Proporcionaremos instrucciones paso a paso y explicaremos cómo este sistema puede ser útil en escenarios de la vida real.

Notificación por correo electrónico de detección de robo ESP8266 NodeMCU

Hardware Requerido

1×ESP8266 NodeMCU
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 Fuerza
1×10 kΩ Resistor
1×Protoboard
1×Cables Puente
1×(Opcional) Conector de Alimentación DC
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

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 fuerza y Gmail

Ofrecemos guías claras sobre sensores de fuerza y Gmail. Cada tutorial incluye instrucciones completas sobre la configuración del hardware, cómo funciona y la conexión de los cables al ESP8266, con pasos de codificación. Para más detalles, siga estos enlaces.

Cómo funciona el sistema de detección de robos

Cuando colocas un objeto sobre el sensor de fuerza, el sensor mide el peso. El dispositivo ESP8266 registra este peso. Si se retira el objeto, el peso es diferente. El ESP8266 detecta este peso diferente y te envía un correo electrónico para avisarte de que tu objeto ha sido movido.

Diagrama de cableado entre el sensor de fuerza y el ESP8266

Diagrama de cableado del sensor de fuerza ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

Código ESP8266

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-secure-your-belongings-detect-theft-and-send-email-alerts */ #include <ESP8266WiFi.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 FORCE_SENSOR_PIN A0 // ESP8266 pin A0 connected to the FSR with 10K pull-down resistor #define THRESHOLD 100 // may need to callibrate this value 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 ESP8266 pin to input pull-up mode door_state = digitalRead(DOOR_SENSOR_PIN); // read state } void loop() { int forceValue = analogRead(FORCE_SENSOR_PIN); if (forceValue < THRESHOLD) { Serial.println("Alert! Someone has stolen your stuff!"); String subject = "Email Notification from ESP8266"; String textMsg = "This is an email sent from ESP8266.\n"; textMsg += "Alert! Someone has stolen your stuff!"; 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("ESP8266"); 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 ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
  • Conecta la placa ESP8266 al sensor de fuerza como se muestra en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Coloca los objetos que quieres sujetar en el sensor de fuerza.
  • Abre Arduino IDE en tu computadora.
  • Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM respectivo.
  • Haz clic en el icono de Administrador de bibliotecas en el lado izquierdo del Arduino IDE para abrir el Administrador de bibliotecas.
  • Busca la ESP Mail Client y elige la biblioteca creada por Mobizt.
  • Haz clic en el botón Instalar para instalar la biblioteca ESP Mail Client.
Biblioteca ESP Mail Client para ESP8266 NodeMCU
  • Copia el código y ábrelo en el software Arduino IDE.
  • Introduce el nombre y la contraseña de tu red WiFi en el código cambiando WIFI_SSID y WIFI_PASSWORD.
  • Introduce el correo electrónico y la contraseña del remitente en el código cambiando SENDER_EMAIL y SENDER_PASSWORD.
  • Reemplaza el correo electrónico del destinatario en el código cambiando RECIPIENT_EMAIL. El correo electrónico del destinatario puede ser el mismo que el del remitente.

※ Nota:

  • La dirección de correo electrónico de la persona que envía el correo debe ser de Gmail.
  • La contraseña del remitente debe ser la contraseña de la aplicación que obtuviste antes.
  • La dirección de correo electrónico de la persona que recibe el correo puede ser de cualquier servicio de correo.
  • Presione el botón Subir en el IDE de Arduino para transferir el código al ESP8266.
  • Abra el Monitor Serial.
  • Retire su objeto del sensor de fuerza.
  • Verifique los resultados en el Monitor Serial.
COM6
Send
Alert! Someone has stolen your stuff! #### 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 ESP8266 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Revisa tu bandeja de entrada. Encontrarás un correo como este:
Correo electrónico de detección de robo ESP8266 NodeMCU

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!