Detector de fugas de agua con aviso al móvil

Hoy vamos a mostrar un proyecto IoT realmente sencillo y útil. Se trata de un dispositivo capaz de detectar fugas de agua y avisarnos al móvil en caso de que exista una. Si por ejemplo se te rompe una tubería en casa, desearás tener instalado uno de estos para que te avise por si no estás presente en el momento del desastre. 

Posibles aplicaciones

  • Prevenir inundaciones y daños en la vivienda
  • Cerrar automáticamente la llave de paso
  • Detectar fugas en lavadoras o refrigeradores
  • Detectar lluvia
  • Detectar la ausencia de agua para saber cuando regar las plantas
  • Disponer de varios sensores para saber a que zona de la casa afecta la fuga de agua
  • Saber cuando se ha llenado la piscina
  • Saber cuando se ha llenado el tanque del deshumidificador o la garrafa del aire acondicionado
  • Viviendas inteligentes. Smart home.
  • Domótica

Material necesario: 

  • Placa Wifi LoRa-32
  • Water sensor
  • Batería (opcional)

La placa Wifi LoRa-32 

Como introducción vamos a hablar por encima de la placa. Se trata de una PCB compatible con el ecosistema de Arduino, pero no es uno como tal. Lleva incorporado: 

  • Microcontrolador ESP32 
  • Módulo wifi
  • Módulo bluetooth
  • Modulo de radio frecuencia
  • Pantalla OLED - SSD1306
  • Gestión de carga de baterías

placacjpg

Podríamos haber empleado por ejemplo un simple arduino con un módulo wifi. Sin embargo, como ya sabemos Arduino es una plataforma que engloba muchos fabricantes y posee muchos tipos de placas compatibles entre si. En este proyecto no vamos a aprovechar todas las virtudes de la placa como por ejemplo el bluettoth, sin embargo nunca viene de más tener disponibles estas opciones para mejorar el proyecto en un futuro, o para hacer otros proyectos. 

La propia placa tiene muchas variantes, incluso tienes variantes chinas que son compatibles y que incorporan otros tipos de funcionalidades. Se pueden encontrar variantes chinas a muy bajo coste en Internet. 

Conectando el sensor:

 Debemos conectar cada pin del sensor al pin correspondiente de la placa.

tablajpg
water sensorjpg

Requisitos de software:

  • IDE de Arduino
  • PCB Wifi LoRa-32  
  • Librería SSD1306.h
  • Librería UniversalTelegramBot.h
  • Firmware del proyecto

Instalando el IDE de Arduino

El IDE de Arduino lo descargamos desde aquí: https://www.arduino.cc/en/Main/Software

Una vez descargado e instalado, lo abrimos.  

Instalando la PCB basada en ESP32

Dentro del programa vamos al menú archivo > preferencias  

Añadimos esta URL y presionamos OK: https://dl.espressif.com/dl/package_esp32_index.json

Vamos al menú herramientas > placa > gestor de tarjetas, buscamos esp32 y presionamos instalar 

esp32jpg

Instalando las librerías necesarias 

Estas librerías están disponibles desde el entorno del propio programa y podemos descargarlas con facilidad. Para ello vamos al menú programa > incluir librerías > gestionar librerías.  

Buscamos "Adafruit SSD1306" y la instalamos.

Buscamos "UniversalTelegramBot" y la instalamos. 

Preparando nuestro telegram 

  1. Para poder recibir las alertas en nuestro teléfono móvil, va a ser necesario que instalemos la APP Telegram.
  2. Una vez instalada la APP la abrimos. Presionamos en la lupa y escribimos "BotFather" y entramos.
  3. Escribir /newbot
  4. Escribir un nombre para el bot por ejemplo "guardian"
  5. Escribir lo mismo pero terminado en "bot" por ejemplo "guardianbot"
  6. Se nos proporcionará una clave o token para acceder a la HTTP API, copiar dicha clave que será nuestro BOT token
  7. También veremos un enlace que empieza por "t.me/nombre_del_bot" presionamos para entrar.
  8. Escribimos /start en la ventana de nuestro bot
  9. Volvemos atrás y de nuevo en la lupa escribimos "IDBot". Entramos.
  10. Escribimos /start
  11. Escribimos /getid y apuntamos el número que aparezca que será nuestro CHAT_ID

Modificando el programa 

1. Vamos copiar y pegar el código fuente del programa dentro del IDE de Arduino: 

2. Debemos modificar estas líneas con los datos anteriormente obtenidos: 

#define CHAT_ID "782888438"

#define BOTtoken "640232033:AAEqe4BlVkjMivcuxJ16rfef6g8EMujJiLc" 

3. Debemos modificar estas líneas con los datos de nuestra red Wifi 

char ssid[] = "MiRed";     // your network SSID (name)

char password[] = "Mi_clave_wifi."; // your network key 

Flasheando el firmware 

1. Vamos al menú herramientas > placa > ESP8266

2. Conectamos la placa con un cable micro USB al PC y esperamos a que nos reconozca el dispositivo.

3. Presionamos el botón "subir" 

subirpng

Si hubiera problemas con el proceso, presionar el botón PRG de nuestra placa y manteniendolo pulsado presionamos el botón RST, para después soltar ambos botones.

Ya lo tenemos todo listo. Si lo deseamos, podemos conectar una batería a nuestra placa o un transformador con cable micro USB para poder utilizarla sin nececsidad de un PC. 

Si ponemos el sensor en contacto con el agua, recibiremos una alerta en nuestro Telegram. 

Ahorro de energía 

Hemos diseñado el código fuente con la idea de ahorrar la máxima cantidad de energía posible. Si deseas alimentar el dispositivo con una batería, tendrás una duración muy larga de la misma. Para ello hemos implementado el modo "Deep Sleep". 

Con esto hacemos que la placa "se duerma" cuando no existe actividad, consumiendo una mínima cantidad de energía. 

Cuando el sensor detecta agua, se dispara una interrupción por hardware, lo que despierta al dispositivo y provoca su conexión a la red wifi y el envío del mensaje. Si se desea un ahorro todavía más estricto, se puede desoldar el LED que lleva el sensor de agua. 

Imprimir