Arduino - Notificación por correo electrónico de fuga de agua

En esta guía, aprenderemos a usar Arduino para detectar fugas de agua y enviar alertas por correo electrónico de forma inmediata. Repasaremos cómo configurar el sensor, mostraremos ejemplos del código y explicaremos cómo conectarlo con servicios de correo. Esto ayudará a mantener su hogar u oficina a salvo de daños por agua. Esto es ideal para personas que disfrutan de proyectos de bricolaje y quieren mejorar sus sistemas para detectar fugas de agua.

Notificación por correo electrónico de fuga de agua de Arduino

Acerca del sensor de agua y Gmail

Ofrecemos tutoriales detallados sobre sensores de agua y Gmail. Cada guía proporciona detalles exhaustivos y pasos fáciles de seguir sobre la configuración de hardware, cómo funciona y cómo conectar y programar el Arduino. Para obtener más información, visite estos enlaces:

Diagrama de cableado entre el sensor de agua y Arduino

Diagrama de cableado del sensor de agua 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-water-leak-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 WATER_SENSOR_PIN 7 // Arduino pin D7 connected to water sensor's pin int water_state; // current state of water sensor int prev_water_state; // previous state of water 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(WATER_SENSOR_PIN, INPUT_PULLUP); // set Arduino pin to input pull-up mode water_state = digitalRead(WATER_SENSOR_PIN); // read state } void loop() { prev_water_state = water_state; // save the last state water_state = digitalRead(WATER_SENSOR_PIN); // read new state if (prev_water_state == HIGH && water_state == LOW) { Serial.println("Water leakage is detected!"); String subject = "Email Notification from Arduino"; String textMsg = "This is an email sent from Arduino.\n"; textMsg += "Water leakage is detected"; 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("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 agua en un lugar donde pueda detectar fugas de agua.
  • Conecta el sensor de agua a la placa Arduino.
  • Conecta la placa Arduino a tu PC utilizando un cable micro USB.
  • Abre el Arduino IDE en tu PC.
  • Selecciona la placa Arduino correcta (Arduino Uno R4 WiFi) y el puerto COM.
  • Abre el Gestor de Bibliotecas haciendo clic en el icono Gestor de Bibliotecas en la barra de navegación izquierda del Arduino IDE.
  • Busca ESP Mail Client y encuentra el ESP Mail Client desarrollado por Mobizt.
  • Haz clic en el botón Instalar para agregar la biblioteca ESP Mail Client.
Librería Arduino ESP Mail Client
  • Copia el código proporcionado y ábrelo en el IDE de Arduino.
  • Actualiza tus datos de WiFi (SSID y contraseña) en el código modificando WIFI_SSID y WIFI_PASSWORD.
  • Reemplaza el correo electrónico y la contraseña del remitente con los tuyos modificando SENDER_EMAIL y SENDER_PASSWORD.
  • Actualiza la dirección de correo electrónico del destinatario en el código modificando RECIPIENT_EMAIL. Esto puede ser igual que la del remitente.

※ Nota:

  • El correo electrónico del remitente debe ser una cuenta de Gmail.
  • La contraseña del remitente es la contraseña de la aplicación obtenida en el paso anterior.
  • El correo electrónico del destinatario puede ser cualquier tipo de correo electrónico.
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al Arduino.
  • Abre el Monitor Serial.
  • Vierte agua sobre el sensor de agua.
  • Observa el resultado en el Monitor Serial.
COM6
Send
Water leakage is detected #### 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 tu bandeja de entrada. Recibirás un correo como el siguiente:
Correo electrónico del sensor de agua 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!