Metodología¶
Home | Panorama General | Logística | Metodología | Manual | Resultados | Recursos
- Metodología
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)
- Raspberry Pi 4 como unidad central de procesamiento
- Lógica de decisión implementada en Python
- Evaluación de umbrales y condiciones de riego
- 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)
- Raspberry Pi 4 ejecuta el software de control
- Procesa lecturas de sensores
- Toma decisiones de riego
- Genera señales de control
- 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
- 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
- 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
- Lógica de evaluación de necesidad de riego
- Control de activación/desactivación de bomba
- Gestión de umbrales y parámetros
- Definición de umbrales de humedad
- Frecuencia de muestreo
- Pines GPIO utilizados
- 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
- Lucidchart para diagramas UML
- Draw.io para diagramas de arquitectura
- 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
- Desarrollo de casos de uso y diagramas de secuencia
- Definición del modelo de clases
- Selección de herramientas y técnicas
- Conexión de sensores y bomba de agua
- Implementación de la lógica de control en Python
- Ejecución de pruebas de funcionamiento
- 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
- Evaluación de necesidad de riego
- Control de riego automático
- Modo de prueba
- 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
- 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
- Integración con plataformas en la nube
- Almacenamiento de datos históricos
- Alertas y notificaciones push
- Supervisión remota vía internet
- 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
- 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.