Control inteligente de riego conectado con telegram

Integrantes
- Pablo Requejo Postlbauer
- Diego Isaac Fernández Conde
- Guillermo Romero Almazán
Descripción del proyecto
Este proyecto consiste en el desarrollo de un sistema automatizado de riego inteligente
diseñado para cuidar una planta mediante la supervisión de parámetros ambientales y el
control remoto del riego. Utiliza una placa Arduino junto con sensores de humedad y
temperatura, una bomba de agua y un bot en la plataforma Telegram para la comunicación
con el usuario.
El sistema monitoriza en tiempo real las condiciones del entorno y activa automáticamente el
riego cuando detecta niveles críticos de humedad en el suelo. Además, permite al usuario
consultar datos o activar manualmente el riego desde cualquier lugar mediante el bot de Telegram.
Durante su desarrollo se han integrado componentes electrónicos, comunicación entre
dispositivos y el uso de APIs web, dando como resultado un sistema funcional, flexible y
ampliable que combina automatización y control remoto de forma eficiente.
Hardware y materiales
- Placa Arduino Uno: Unidad central de procesamiento que gestiona sensores y el sistema de riego.
- Sensor de humedad de suelo ICQUANZX: Detectan el nivel de humedad del sustrato para ofrecer datos o activar el riego automáticamente.
- Sensor DHT22 (AM2302): Mide la temperatura y humedad del ambiente.
- Bomba de agua sumergible RUNCCI-YUN: Permite el riego de la planta al extraer agua de un depósito.
- Maceta: Contenedor que aloja la planta monitoreada.
- Recipiente para agua: Depósito desde el cual la bomba extrae el agua para el riego.
- Caja estanca: Protege los componentes electrónicos del polvo y la humedad.
- Pila 9V: Pila para alimentar la bomba

Software
Estructura y funciones del código Arduino
Inicialización y configuración:
- Se definen los pines para sensores y actuadores.
- Se establecen umbrales de humedad (MOISTURE_WET, MOISTURE_DRY).
- Se importa la librería SimpleDHT para usar el sensor DHT22.
setup() (Configuración inicial):
- Configura el puerto serie y los pines.
- Realiza un retardo para estabilizar el sistema.
loop() (Ejecución continua):
- Verifica si está en proceso de riego; si ha pasado el tiempo, apaga la bomba.
- Lee sensores de temperatura, humedad y suelo.
- Procesa comandos entrantes desde el puerto serie:
- 0: Evalúa si hay que regar.
- 1: Envía datos de sensores.
- 2: Activa riego automático.
Funciones auxiliares:
- temperatureHumidityMoisture(): Envía datos de sensores por el puerto serie.
- wateringAutomatic(): Enciende la bomba un tiempo predefinido.
- watering(int m): Decide si debe activarse el riego según humedad del suelo.
Estructura y funciones del código Python
Configuración inicial
- Conecta con Arduino por puerto serie (COM4).
- Se importan librerías: serial, requests, y el token del bot de Telegram.
Interacción con el bot
El bot interpreta comandos del usuario como:
/water → envía 0 a Arduino.
/data → envía 1.
/confirm → envía 2.
Comunicación con Arduino:
Función write_read(x):
- Envía el comando a Arduino.
- Espera y devuelve la respuesta recibida por el puerto serie.
- Respuesta al usuario vía Telegram:
- El programa interpreta el primer dígito de la respuesta de Arduino:
- 5 → suelo seco (se alerta).
- 6 → se confirma que no es necesario regar.
- 7 → se reciben y envían datos de sensores.
- 8 → inicio del riego.
- 9 → fin del riego.
Cómo se entrelazan
- Arduino actúa como sistema físico de control, tomando decisiones en tiempo real según sensores o comandos externos.
- Python es el intermediario entre el usuario (Telegram) y Arduino, traduciendo mensajes y mostrando resultados.
- La comunicación entre ambos se hace por puerto serie, usando números como códigos de acción/respuesta.
- De este modo, el usuario puede controlar y monitorear el sistema a distancia mediante comandos simples de texto en Telegram.
BOT

Video del funcionamiento