03. Requisitos y restricciones - diegogopa/Challenge-IOT GitHub Wiki
3. Requisitos y restricciones
3.1 Requisitos funcionales
| ID | El sistema debe… | Cómo se cumple (v3.2) |
|---|---|---|
| RF-01 | Medir el nivel de agua | HC-SR04, mediana de 5 muestras + EMA |
| RF-02 | Medir temperatura y humedad relativa | DHT22 |
| RF-03 | Medir radiación UV | GUVA-S12SD → índice y categoría UV |
| RF-04 | Medir presión atmosférica | BMP180 por I2C |
| RF-05 | Estimar la evaporación potencial | Índice 0–100 (T, HR, UV) |
| RF-06 | Combinar las señales mediante lógica de fusión | calcularEstado() (sección 8) |
| RF-07 | Clasificar el estado: OK, SEQUIA, DESBORDE, FUGA, ERROR_SENSOR | Máquina de estados con histéresis |
| RF-08 | Detectar fallas o desconexión de cada sensor, pantalla y red | Bits de falla F_DHT … F_WIFI |
| RF-09 | Ejecutar la medición en un hilo distinto al principal | Tarea FreeRTOS tareaSensado |
| RF-10 | Emitir una alarma física in situ | Buzzer activo |
| RF-11 | Visualizar las variables en tiempo real en el dispositivo | OLED SH1106 128×64 |
| RF-12 | Alojar un tablero de control en un servidor web embebido | ESPAsyncWebServer en el ESP32 |
| RF-13 | Mostrar en el tablero el valor actual y un histórico reciente | /data y /historico |
| RF-14 | Notificar en el tablero cualquier eventualidad | Recuadro de estado, avisos de falla, registro de eventos, título con ⚠ y vibración |
| RF-15 | Desactivar la alarma física desde el tablero | POST /silenciar |
| RF-16 | Restringir el tablero a dispositivos autorizados de la WLAN | Filtro por subred (403) + autenticación HTTP (401) |
3.2 Requisitos no funcionales
| ID | Requisito | Criterio |
|---|---|---|
| RNF-01 | Bajo costo | Componentes comerciales de bajo costo (sección 13.4) |
| RNF-02 | Autonomía de la alerta local | OLED y buzzer funcionan sin WLAN |
| RNF-03 | Tiempo de respuesta | Alerta de nivel en < 10 s (≈ 3–4 ciclos de sensado) |
| RNF-04 | Robustez | Recuperación automática de sensores, OLED y WiFi sin reiniciar |
| RNF-05 | Mantenibilidad | Parámetros centralizados en #define; acceso a la electrónica abriendo la tapa de la caja (broches de media vuelta) |
| RNF-06 | Escalabilidad | Bus I2C compartido y pines libres para sensores adicionales |
| RNF-07 | Usabilidad | Tablero adaptable a PC y celular |
| RNF-08 | Seguridad | Sin exposición a Internet; acceso solo desde la WLAN y con credenciales |
3.3 Restricciones técnicas
- Microcontrolador como sistema embebido (ESP32); no Raspberry Pi.
- La medición se ejecuta en un hilo diferente al hilo principal: tarea FreeRTOS creada con
xTaskCreatePinnedToCore(). - Notificación in situ: alarma física (buzzer) y visualización de variables en tiempo real (OLED).
- Tablero de control alojado en un servidor web embebido dentro del microcontrolador, conectado a la WLAN de la zona.
- Acceso al tablero restringido a dispositivos autorizados y conectados a la WLAN.
- No se usa MQTT, nube ni servidores externos.
- La detección y la alarma física no deben depender de la WLAN: si la red falla, el sistema sigue midiendo, clasificando y alertando localmente.
- La señal ECHO de 5 V del HC-SR04 se conectó directamente al GPIO 18; la adaptación a 3.3 V queda como trabajo futuro (sección 14).
- Entrega como producto terminado dentro de una caja de protección, no en protoboard.
3.4 Restricciones económicas
Se priorizaron componentes económicos y disponibles en el mercado local:
- ESP32 DevKit V1.
- HC-SR04.
- DHT22.
- GUVA-S12SD.
- BMP180 (módulo GY-68).
- OLED I2C SH1106.
- Buzzer activo.
- Resistencias de 1 kΩ y 2 kΩ (compradas para el divisor del ECHO, no implementadas).
- Cables y elementos de conexión.
- Caja de protección de riel hermética con tapa transparente (Halux, 14 × 18 × 8 cm).
- Fuente de alimentación y elementos de fijación.
El sistema no utiliza servicios de nube ni servidores externos, por lo que no hay costos recurrentes de suscripción. El costo detallado se presenta en la sección 13.4.
3.5 Restricciones de espacio y montaje
El prototipo debe integrarse en una caja de protección que resguarde la electrónica y mantenga expuestos únicamente los sensores que requieren contacto directo con el ambiente. La caja utilizada, documentada en la sección 17, es una caja comercial de 14 × 18 × 8 cm con tapa transparente, modificada con herramienta rotativa (Dremel) para exponer el fotodiodo del sensor de radiación y el DHT22.
El montaje debe permitir:
- Orientar el HC-SR04 perpendicular a la superficie del agua, a una distancia dentro del rango de medición configurado (sección 8.3).
- Mantener expuesto el fotodiodo del GUVA-S12SD a la radiación solar, ya que la tapa de policarbonato atenúa parte de la radiación UV.
- Mantener el DHT22 expuesto al ambiente, para que mida las condiciones externas y no las del interior de la caja.
- Tener en cuenta que el BMP180 queda dentro de la caja y que la temperatura interna afecta su lectura.
- Mantener accesibles los elementos necesarios para mantenimiento.
- Proteger la electrónica frente a las condiciones ambientales previstas.
3.6 Restricciones regulatorias y de conectividad
- El WiFi del ESP32 opera en la banda de 2.4 GHz (IEEE 802.11 b/g/n), banda de uso libre en Colombia según la regulación de la Agencia Nacional del Espectro, sin requerir licencia.
- El tablero se sirve únicamente dentro de la WLAN proporcionada por las autoridades; no se expone a Internet.
- El sistema no almacena datos personales; solo variables físicas del entorno.
- La caja comercial declara un grado IP 65 de fábrica, pero este no aplica al prototipo final porque las aberturas para el fotodiodo y el DHT22 lo anulan. No se realizó ensayo de grado IP (IEC 60529), y cualquier afirmación de protección requeriría uno (sección 17.5).
Por tanto:
- La WLAN es necesaria para el tablero de control, que es un requisito del reto.
- La WLAN no es necesaria para la detección ni para la alarma física, que funcionan de forma autónoma.
- No se utiliza plataforma cloud ni MQTT.
3.7 Restricciones temporales
El desarrollo se realizó de forma incremental (v1 → v2 → v3 → v3.2) entre el Challenge #1 y la entrega del Challenge #2 (26 de septiembre de 2026). Para validar en tiempo corto eventos que en la realidad tardan horas, las ventanas de cálculo de la tasa de cambio (5 min) y de la tendencia de presión (3 h) se redujeron a 60 s durante la emulación acelerada (sección 10).
3.8 Restricciones de escalabilidad
- El bus I2C (GPIO 21/23) admite dispositivos adicionales con direcciones distintas (actualmente 0x3C y 0x77).
- El ESP32 conserva GPIO y canales ADC libres para un sensor de caudal u otros sensores.
- Cada estación es autónoma; una red de estaciones requeriría una plataforma centralizada (trabajo futuro, sección 14.3).
- El histórico en RAM limita la memoria del sistema a 60 muestras (≈ 1 h).
3.9 Entregables del Challenge #2
- Prototipo físico integrado en caja de protección, con alimentación definitiva.
- Wiki con diseño, implementación y validación.
- Banco de pruebas documentado (calibración, emulación, fusión, notificaciones, robustez, repetibilidad).
- Documentación de las mejoras respecto al Challenge #1.
- Roles, contribuciones.
- Declaración del uso de herramientas de inteligencia artificial.
- Video demostrativo de máximo 10 minutos.
- Pitch de 3 minutos dirigido a los stakeholders.
Ver el estado de cada punto en la sección 18.