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

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *