Project

General

Profile

Metodología

Home | Panorama General | Logística | Metodología | Manual | Resultados | Recursos

Diseño del sistema

Consideraciones de diseño

El sistema es modular, de modo que puede adaptarse a diferentes tamaños de espacios y configuraciones. Las principales características del diseño son:

  • La retroalimentación continua permite mantener la humedad bajo control antes de que aparezcan daños estructurales o riesgos para la salud
  • La intervención se activa solo cuando es necesario, optimizando energía y evitando uso innecesario del sistema de riego
  • El diseño permite escalabilidad para futuras ampliaciones (monitoreo remoto, múltiples zonas de riego, integración IoT)

Arquitectura del sistema

El sistema se basa en una arquitectura de tres capas:

1. Capa de sensores (Entrada)
  • Sensor de humedad del suelo
  • Sensor de temperatura ambiente (DHT22)
2. Capa de procesamiento (Control)
  • Raspberry Pi 4 como unidad central de procesamiento
  • Lógica de decisión implementada en Python
  • Evaluación de umbrales y condiciones de riego
3. Capa de actuadores (Salida)
  • Relé de control
  • Bomba de agua sumergible
  • Sistema de distribución de agua (manguera y goteros)

Requerimientos del sistema

Requerimientos Funcionales

ID Requerimiento Descripción
RF1 Medición de humedad del suelo El sistema debe leer periódicamente el valor de humedad del suelo mediante el sensor correspondiente, con una frecuencia configurable
RF2 Medición de temperatura ambiente El sistema debe leer periódicamente la temperatura ambiente para complementar la decisión de riego y generar registros básicos
RF3 Evaluación automática de la necesidad de riego El sistema debe comparar los valores de humedad con un umbral predefinido y determinar si es necesario activar el riego
RF4 Activación automática de la bomba Cuando la humedad sea inferior al umbral, el sistema debe activar automáticamente la bomba hasta alcanzar el valor objetivo
RF5 Detención automática del riego El sistema debe detener la bomba cuando la humedad alcance el umbral superior, evitando el exceso de riego
RF6 Modo de prueba/configuración El sistema debe permitir ejecutar un modo de prueba para verificar el funcionamiento sin depender del valor de humedad
RF7 Registro básico de eventos El sistema debe registrar los eventos de riego (inicio, fin, duración y valores de humedad) en archivos de log
RF8 Indicación de estado El sistema debe entregar señales visibles del estado actual (midiendo, riego activo, detenido, error)

Requerimientos No Funcionales

ID Requerimiento Descripción
RNF1 Confiabilidad de lectura Las lecturas deben ser filtradas o validadas para reducir errores o picos de ruido
RNF2 Disponibilidad del sistema El sistema debe funcionar de manera continua durante el periodo de prueba sin bloqueos frecuentes
RNF3 Tiempo de respuesta El tiempo entre la detección de sequedad y la activación de la bomba no debe superar unos pocos segundos
RNF4 Seguridad básica del hardware Las conexiones eléctricas deben estar protegidas (uso de relé, fusibles) para evitar daños
RNF5 Mantenibilidad El código debe estar comentado y organizado en módulos para facilitar futuras modificaciones
RNF6 Usabilidad técnica La configuración de umbrales debe poder ajustarse fácilmente sin cambios complejos
RNF7 Escalabilidad básica El diseño debe permitir ampliaciones futuras sin rediseñar completamente la lógica principal

Casos de Uso

Diagrama de Casos de Uso

CU-01: Medir condiciones ambientales

Campo Descripción
Nombre CU-01 -- Medir condiciones ambientales
Actor Sistema de riego automatizado (Raspberry Pi)
Descripción El sistema realiza la lectura periódica del sensor de humedad del suelo y del sensor de temperatura ambiental
Precondición Sistema encendido y sensores correctamente conectados
Flujo Principal 1. Inicia ciclo de medición\n2. Solicita al sensor de humedad el valor actual del suelo\n3. Solicita al sensor de temperatura el valor ambiente\n4. Registra temporalmente ambos valores
Flujo Alternativo 2.1 Error al registrar humedad, reintenta\n3.1 Error al registrar temperatura, reintenta
Postcondición Se dispone de lecturas actualizadas de humedad y temperatura

CU-02: Evaluar necesidad de riego

Campo Descripción
Nombre CU-02 -- Evaluar necesidad de riego
Actor Sistema de riego automatizado
Descripción El sistema analiza la humedad medida para determinar si debe activar la bomba de agua
Precondición Valores de humedad obtenidos correctamente y umbral configurado
Flujo Principal 1. Compara la humedad actual con el umbral mínimo\n2. Si humedad inferior al umbral, determina "riego necesario"
Flujo Alternativo 2.1 Humedad superior al umbral, no activa riego
Postcondición Se ha decidido si el sistema debe activar el riego

CU-03: Activar riego automático

Campo Descripción
Nombre CU-03 -- Activar riego automático
Actor Sistema de riego automatizado y Bomba de Agua
Descripción El sistema activa la bomba de agua para regar hasta que la humedad alcance niveles adecuados
Precondición Bomba conectada y operativa, se determinó que el riego es necesario
Flujo Principal 1. Envía señal al relé para encender la bomba\n2. Registra el inicio del riego\n3. Realiza lecturas periódicas de humedad\n4. Cuando la humedad supera el umbral superior, apaga la bomba\n5. Registra el fin del riego
Postcondición El suelo fue regado, nivel de humedad sobre el umbral

CU-04: Ejecutar modo de prueba

Campo Descripción
Nombre CU-04 -- Ejecutar modo de prueba de riego
Actor Usuario
Descripción El usuario ejecuta un modo de prueba que activa brevemente la bomba sin depender de los valores de humedad
Precondición Sistema encendido y usuario con acceso a comandos
Flujo Principal 1. Usuario inicia modo de prueba\n2. Sistema solicita confirmación\n3. Usuario confirma\n4. Sistema activa la bomba por pocos segundos\n5. Muestra resultado
Postcondición El usuario conoce el estado real del hardware de riego

CU-05: Configurar umbrales y parámetros

Campo Descripción
Nombre CU-05 -- Configurar umbrales de humedad
Actor Usuario
Descripción El usuario configura valores de humedad mínima, máxima y frecuencia de muestreo
Precondición Sistema encendido y acceso al archivo de configuración
Flujo Principal 1. Usuario solicita modificar parámetros\n2. Ingresa umbral mínimo de humedad\n3. Ingresa umbral máximo\n4. Define frecuencia de medición\n5. Sistema valida valores\n6. Actualiza configuración interna\n7. Registra cambios
Postcondición El sistema registra nuevos parámetros de funcionamiento

Diagramas de Secuencia

DS-01: Medir condiciones ambientales

DS-02: Evaluar necesidad de riego

DS-03: Activar riego automático

DS-04: Ejecutar modo de prueba

DS-05: Configurar umbrales y parámetros

Diagrama de Clases

El sistema está estructurado en las siguientes clases principales:

  • SensorHumedad: Gestiona la lectura del sensor de humedad del suelo
  • SensorTemperatura: Gestiona la lectura del sensor de temperatura ambiente
  • ControladorRiego: Implementa la lógica de decisión y control del sistema
  • Bomba: Controla la activación y desactivación de la bomba de agua
  • RegistroEventos: Almacena logs y eventos del sistema
  • ConfiguracionSistema: Gestiona los parámetros configurables (umbrales, frecuencias)

Diseño de la Interfaz

La interfaz del sistema proporciona:

  • Visualización en tiempo real de lecturas de sensores
  • Indicadores de estado del sistema (esperando, regando, error)
  • Controles para modo de prueba
  • Configuración de umbrales de humedad
  • Historial de eventos de riego

Plan de Ensamblaje

Arquitectura Física del Sistema

El ensamblaje del sistema sigue la siguiente estructura:

Conexiones de entrada:
  • Sensor de humedad del suelo → GPIO Raspberry Pi
  • Sensor DHT22 (temperatura/humedad) → GPIO Raspberry Pi
  • Power Supply → Raspberry Pi (alimentación principal)
Unidad central de procesamiento:
  • Raspberry Pi 4 ejecuta el software de control
  • Procesa lecturas de sensores
  • Toma decisiones de riego
  • Genera señales de control
Conexiones de salida:
  • GPIO Raspberry Pi → Relé de control
  • Relé → Bomba de agua
  • Power Supply → Bomba de agua (alimentación)

Desarrollo del Hardware

1. Conexión del sensor al microcontrolador:
  • Sensor de humedad del suelo conectado a pin GPIO analógico
  • Sensor DHT22 conectado a pin GPIO digital
  • Alimentación de sensores desde pines 3.3V/5V de la Raspberry Pi
2. Alimentación y consideraciones de energía:
  • Fuente de alimentación de 5V/3A para Raspberry Pi
  • Alimentación separada para la bomba de agua (12V)
  • Relé de 5V como interfaz entre Raspberry Pi y bomba
3. Integración del relé:
  • Relé conectado a GPIO de salida de Raspberry Pi
  • Terminal común del relé conectado a fuente de bomba
  • Terminal NO (normalmente abierto) conectado a bomba

Desarrollo del Software

Estructura del código

1. Módulo de lectura de sensores (sensor_reader.py):
  • Funciones para leer sensor de humedad del suelo
  • Funciones para leer sensor DHT22
  • Filtrado y validación de lecturas
2. Módulo de control de riego (irrigation_controller.py):
  • Lógica de evaluación de necesidad de riego
  • Control de activación/desactivación de bomba
  • Gestión de umbrales y parámetros
3. Módulo de configuración (config.py):
  • Definición de umbrales de humedad
  • Frecuencia de muestreo
  • Pines GPIO utilizados
4. Módulo principal (main.py):
  • Ciclo principal de ejecución
  • Integración de todos los módulos
  • Manejo de excepciones y errores

Iteraciones y mejoras

Durante el desarrollo se realizaron múltiples iteraciones:

  • Iteración 1: Implementación básica de lectura de sensores
  • Iteración 2: Integración del control de bomba mediante relé
  • Iteración 3: Implementación de lógica de decisión de riego
  • Iteración 4: Añadido de sistema de logs y registro de eventos
  • Iteración 5: Pruebas finales y ajustes de umbrales

Herramientas y Técnicas

Herramientas utilizadas

Desarrollo de Software:
  • Visual Studio Code como IDE principal
  • Python 3.x como lenguaje de programación
  • Git y GitHub para control de versiones
Diagramación y Diseño:
  • Lucidchart para diagramas UML
  • Draw.io para diagramas de arquitectura
Gestión del Proyecto:
  • Microsoft Project / Excel para Carta Gantt
  • Google Drive para documentación compartida
  • WhatsApp y Discord para comunicación del equipo

Técnicas aplicadas

Prototipado Iterativo:
El proyecto utilizó un enfoque de prototipado iterativo que permite:

  • Desarrollar versiones preliminares que se refinan mediante pruebas continuas
  • Detectar errores tempranamente antes de la implementación final
  • Validar el funcionamiento esperado en cada etapa
  • Ajustar la lógica del sistema progresivamente

Desarrollo Incremental de Módulos:
Cada componente fue diseñado y probado de manera independiente:

  • Módulo de lectura de sensores
  • Módulo de lógica de decisión para riego
  • Módulo de control de bomba mediante relé
  • Módulo de gestión de parámetros del sistema

Pruebas y Retroalimentación Continua:
En cada iteración se realizaron pruebas evaluando:

  • Precisión de las lecturas de los sensores
  • Estabilidad del programa en la Raspberry Pi
  • Comportamiento de la bomba bajo diferentes condiciones
  • Respuesta del sistema ante modificación de umbrales

Planificación Temporal

Carta Gantt

El proyecto se dividió en las siguientes fases:

Fase I: Planificación y Diseño (Semanas 1-3)
  • Definición del problema y objetivos
  • Identificación de requerimientos
  • Elaboración de diagramas UML y diseño de arquitectura
Fase II: Desarrollo Lógico y Modelamiento (Semanas 4-6)
  • Desarrollo de casos de uso y diagramas de secuencia
  • Definición del modelo de clases
  • Selección de herramientas y técnicas
Fase III: Implementación y Pruebas (Semanas 7-12)
  • Conexión de sensores y bomba de agua
  • Implementación de la lógica de control en Python
  • Ejecución de pruebas de funcionamiento
Fase IV: Documentación y Presentación (Semanas 13-14)
  • Elaboración de informe final
  • Preparación de presentación
  • Ajustes finales al prototipo

Implementación

Plan de Integración del Sistema

La implementación se realizó siguiendo un enfoque de integración progresiva considerando tres niveles:

  • Nivel de hardware: Conexión física de sensores, actuadores y Raspberry Pi
  • Nivel de software: Implementación de la lógica de control y lectura de sensores
  • Nivel de interacción: Visualización del estado y configuración de parámetros

Módulos Implementados

Módulos de sensores:
  • Módulo de lectura de humedad del suelo
  • Módulo de lectura de temperatura ambiental
Módulos de lógica de control:
  • Evaluación de necesidad de riego
  • Control de riego automático
  • Modo de prueba
Módulos de registro y monitoreo:
  • Registro de eventos
  • Indicación de estado del sistema

Problemas Encontrados y Soluciones

Problema Identificado Solución Aplicada
Lecturas inestables del sensor de humedad Se implementó un filtrado básico de datos y múltiples lecturas para obtener valores más confiables
Activación tardía de la bomba Se ajustaron los tiempos de muestreo y se optimizó la lógica de evaluación del riego
Conexiones eléctricas inestables Se reforzaron las conexiones y se verificó el uso correcto de relés y componentes de protección
Errores en la ejecución inicial del código Se realizaron pruebas unitarias y depuración del código en etapas tempranas
Consumo excesivo de agua en pruebas Se ajustaron los umbrales de humedad y se implementó un temporizador de seguridad

Trabajo Futuro

El sistema establece una base funcional sólida, pero existen diversas líneas de mejora:

Incorporación de sensores adicionales:
  • Sensores de lluvia
  • Sensores de luminosidad
  • Sensores de nivel de agua en el depósito
  • Sensores de pH del suelo
Interfaz de usuario avanzada:
  • Aplicación móvil para monitoreo remoto
  • Dashboard web para visualización en tiempo real
  • Historial gráfico de mediciones
  • Configuración remota de parámetros
Conectividad IoT:
  • Integración con plataformas en la nube
  • Almacenamiento de datos históricos
  • Alertas y notificaciones push
  • Supervisión remota vía internet
Algoritmos avanzados:
  • Modelos predictivos basados en datos históricos
  • Técnicas de aprendizaje automático
  • Anticipación de necesidades según patrones climáticos
  • Optimización automática de umbrales
Ampliaciones del sistema:
  • Control de múltiples zonas de riego
  • Integración con estaciones meteorológicas
  • Control de iluminación para cultivos de interior
  • Sistema de dosificación de nutrientes

Estas mejoras permitirán evolucionar el prototipo actual hacia un sistema de riego inteligente plenamente funcional y adaptable a distintos escenarios agrícolas o domésticos.