Arduino Nano ESP32 - Protege tus pertenencias: Detecta robos y envía alertas por correo electrónico

En esta guía, te enseñaremos cómo mantener tus objetos seguros utilizando un Arduino Nano ESP32 y un sensor de fuerza. Cubriremos los pasos para configurar un sistema que te envíe un correo electrónico si alguien intenta mover tus pertenencias. Aprenderás a preparar el Arduino Nano ESP32, conectar el sensor de fuerza y configurarlo para enviarte un correo electrónico a través de Gmail. Proporcionaremos instrucciones detalladas y te mostraremos cómo este sistema puede ser útil.

Arduino Nano ESP32 Detección de robo Notificación por correo electrónico

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

Ofrecemos guías detalladas sobre sensores de fuerza y Gmail. Cada tutorial ofrece instrucciones paso a paso para configurar el hardware, comprender cómo funciona y conectar cables al Arduino Nano ESP32, incluyendo cómo programar para Arduino Nano ESP32. Para obtener más detalles, visite estos enlaces:

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

El sensor de fuerza mide el peso de un objeto colocado sobre él. Cuando colocas tu objeto en el sensor, el Arduino Nano ESP32 registra el peso. Si se retira el objeto, el peso cambiará. El Arduino Nano ESP32 detecta este cambio y te envía un correo electrónico para informarte de que tu objeto ha sido movido.

Diagrama de cableado entre el sensor de fuerza y el Arduino Nano ESP32

Diagrama de cableado del sensor de fuerza Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código de 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-secure-your-belongings-detect-theft-and-send-email-alerts */ #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 FORCE_SENSOR_PIN A0 // The Arduino Nano ESP32 pin A0 are connected to the FSR with 10K pulldown resistor #define THRESHOLD 100 // may need to callibrate this value SMTPSession smtp; void setup() { Serial.begin(9600); // set the ADC attenuation to 11 dB (up to ~3.3V input) analogSetAttenuation(ADC_11db); 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() { int forceValue = analogRead(FORCE_SENSOR_PIN); if (forceValue < THRESHOLD) { Serial.println("Alert! Someone has stolen your stuff!"); String subject = "Email Notification from ESP32"; String textMsg = "This is an email sent from ESP32.\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("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 fuerza de acuerdo con el diagrama proporcionado.
  • 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.
  • Coloca tus objetos sobre el sensor de fuerza.
  • Abre el Administrador de Bibliotecas haciendo clic en el icono Administrador de Bibliotecas en el lado izquierdo del IDE de Arduino.
  • Busca ESP Mail Client y elige la biblioteca de Mobizt.
  • Haz clic en el botón Instalar para añadir la biblioteca ESP Mail Client.
Biblioteca ESP Mail Client para Arduino Nano ESP32
  • Copia el código y ábrelo usando el Arduino IDE.
  • Ingresa los datos de tu WiFi (nombre y contraseña) en el código cambiando WIFI_SSID y WIFI_PASSWORD.
  • Ingresa el correo electrónico y la contraseña de la persona que envía el correo en el código cambiando SENDER_EMAIL y SENDER_PASSWORD.
  • Ingresa la dirección de correo electrónico de la persona que recibe el correo en el código cambiando RECIPIENT_EMAIL. Este correo puede ser el mismo que el correo del remitente.

※ Nota:

  • La dirección de correo del remitente debe ser una cuenta de Gmail.
  • Utiliza la contraseña de la aplicación que obtuviste anteriormente como la contraseña del remitente.
  • Cualquier proveedor de correo electrónico puede utilizarse para la dirección de correo del destinatario.
  • Pulsa el botón Subir en el IDE de Arduino para transferir el código al Arduino Nano ESP32.
  • Abre el Monitor Serial.
  • Retira objetos del sensor de fuerza.
  • Verifica 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 Arduino Nano ESP32 ----------------
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Revisa la bandeja de entrada de la persona a la que estás enviando. Recibirá un correo similar a este:
Correo electrónico de detección de robo para Arduino Nano ESP32

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!