10. Configuracion experimental - diegogopa/Challenge-IOT GitHub Wiki

10. Configuración experimental

10.1 Objetivo

La configuración experimental define las condiciones utilizadas para validar el comportamiento del prototipo AquaMonitor v3.2. Las pruebas permiten evaluar calibración, clasificación de estados, respuesta ante condiciones críticas, robustez, notificaciones, repetibilidad y consumo.

Esta sección describe el protocolo de cada banco y sus formatos de registro; los resultados obtenidos se presentan en la sección 11. Todos los resultados numéricos corresponden a mediciones realizadas por el equipo, salvo el consumo de corriente (B6), que es una estimación a partir de hojas de datos y se identifica como tal.

10.2 Condiciones generales

Parámetro Configuración
Firmware AquaMonitor v3.2, sin constantes de calibración aplicadas (CAL_T, CAL_H y CAL_P en 1.0 y 0.0)
Microcontrolador ESP32 DevKit V1
Sensor de nivel HC-SR04 (ECHO directo al GPIO 18, sin divisor)
Sensor ambiental DHT22
Sensor UV GUVA-S12SD
Sensor de presión BMP180 (I2C 0x77)
Pantalla OLED SH1106 I2C (0x3C)
Alarma Buzzer activo
Periodo de sensado 2 s (ciclo real ≈ 2.4 s)
Ventana de tasa de cambio 5 min; 60 s durante la emulación acelerada
Ventana de tendencia de presión 3 h; 60 s durante la emulación acelerada
Rango de nivel (firmware) 4 cm = 100 % · 9 cm = 0 %
Rango de nivel (caracterización B1) 5 cm = 100 % · 20 cm = 0 %
Histórico 60 muestras, una por minuto (≈ 1 h), más los últimos 10 eventos, en RAM
Consulta del tablero cada 4 s
Red WLAN local; el tablero web se accede en http://192.168.1.19/
Modelo a escala Recipiente con rango de medición de 5 a 20 cm entre el sensor y la superficie del agua

Nota: la caracterización del HC-SR04 se hizo entre 5 y 20 cm (rango del recipiente), mientras que el firmware usa 4–9 cm. El error en distancia es válido para ambos, pero el error en nivel con la geometría del firmware es mayor (ver 11.2).

10.3 Banco B1 — Calibración

Nivel de agua

Se midieron 7 distancias conocidas (5 a 20 cm, cada 2.5 cm) con regla o cinta métrica, y se tomaron 10 lecturas del sensor por distancia (L1–L10).

Punto Referencia (cm) Promedio (cm) Sesgo (cm) σ (cm) Error máx. (cm)
1 5 5.15 +0.15 0.12 0.30
2 7.5 7.68 +0.18 0.09 0.30
3 10 10.15 +0.15 0.08 0.30
4 12.5 12.59 +0.09 0.07 0.20
5 15 15.14 +0.14 0.11 0.30
6 17.5 17.69 +0.19 0.23 0.40
7 20 20.39 +0.39 0.10 0.60

Resultados reportados:

  • Error medio: 0.18 cm.
  • Error máximo: 0.60 cm (a 20 cm).
  • Ajuste lineal: y = 0.9895x − 0.051 (distancia real = f(distancia medida)).
  • Coeficiente R²: 0.9998.

Temperatura y humedad

Se comparó el DHT22 con un higrómetro de referencia (resolución 0.1 °C) en tres condiciones de temperatura y tres de humedad.

Variable Condición Referencia DHT22 Error (sesgo)
Temperatura Ambiente (N = 10) 29.7 °C 29.4 °C −0.30 °C
Temperatura Calentador (N = 11) 31.9 °C 32.0 °C +0.11 °C
Temperatura Nevera (N = 8) 11.4 °C 8.55 °C −2.85 °C (régimen transitorio, no usado para calibrar)
Humedad relativa Ambiente (10 lecturas) 52.0 % 53.4 % +1.45 % HR
Humedad relativa Ambiente seco (10 lecturas) 38.0 % 39.8 % +1.79 % HR
Humedad relativa Humidificado (10 lecturas) 72.1 % 73.3 % +1.14 % HR

Limitación: con solo dos niveles de temperatura estacionarios, el ajuste lineal (Ref = 0.840·DHT22 + 5.00) es indicativo y no se aplicó en el firmware. Para la humedad, el ajuste propuesto es Ref = 1.019·DHT22 − 2.51 (R² = 0.9997), tampoco aplicado.

Radiación UV

No se contó con un radiómetro UV calibrado ni con un servicio meteorológico de referencia. Se usó la sensibilidad nominal del sensor (UV_V_POR_INDICE ≈ 0.1 V por índice UV) y un índice UV de referencia asignado a cada condición (habitación cerrada, luz solar por ventana, lámpara UV). El offset UV_V_OFFSET = 0.14 V se fijó midiendo el voltaje con el sensor tapado. La validación cubre el orden de magnitud y la respuesta cualitativa, no una calibración fina (ver 11.2).

Presión atmosférica

Se comparó el BMP180 con el barómetro de un celular (app Atmospheric Pressure Barometer) en cuatro momentos del día, promediando 10 lecturas por momento. Sesgo medio: +1 hPa, constante. Calibración propuesta: CAL_P_A = 1.0, CAL_P_B = −1.0 (no aplicada). La referencia no es instrumentación calibrada.

10.4 Banco B2 — Emulación acelerada

Para reproducir condiciones críticas en un tiempo razonable, se redujeron temporalmente VENTANA_TASA_MS y PRES_VENTANA_MS a 60 000 ms (en operación normal son 5 min y 3 h). Cada escenario se repitió 5 veces.

Escenario Condición simulada Tiempo hasta alerta (medio) Observación
Desborde (nivel alto) Nivel por encima del umbral de 95 % 7.4 s (6.4–8.9) 5/5 detecciones, estado DESBORDE
Sequía (nivel bajo) Nivel por debajo del umbral de 20 % 5.9 s (5.1–6.9) 5/5 detecciones, estado SEQUIA
Riesgo de sequía por evaporación Lámpara + ventilador, evaporación ≥ 70 % 6.5 s (5.9–7.2) 5/5 detecciones, estado SEQUIA
Fuga simulada Salida controlada de agua 90.0 s (68–117) 4/5 detecciones, estado FUGA
Falla de sensor Ultrasónico sin eco 12.3 s (12.0–12.6) 5/5 detecciones, estado ERROR_SENSOR

Las condiciones ambientales se emularon con una lámpara (calor y UV), un ventilador o secador (humedad baja) y un humidificador (humedad alta). La fuga se emuló con una salida controlada de agua en el recipiente (jeringa o válvula).

10.5 Banco B3 — Lógica de clasificación

Se realizaron 5 repeticiones por escenario (30 pruebas en total).

Escenario Estado esperado Estado observado TP FP FN TN Histéresis
Nivel normal OK OK (4/5); FUGA en rep. 3 — 1 — 4 —
Desborde DESBORDE DESBORDE 5 0 0 — Entra 95.6 %, sale 89.8 % (diseño 95/90)
Sequía SEQUIA SEQUIA 5 0 0 — Entra 19.7 %, sale 25.4 % (diseño 20/25)
Riesgo de sequía SEQUIA SEQUIA 5 0 0 — —
Fuga FUGA FUGA (4/5); OK en rep. 4 4 0 1 — —
Falla de sensor ERROR_SENSOR ERROR_SENSOR 5 0 0 — —
Total 24 1 1 4 Banda ≈ 6 pp

Indicadores: precisión 0.96, sensibilidad 0.96, exactitud 0.93.

10.6 Banco B4 — Notificaciones

Se midió, en 10 repeticiones, el tiempo desde que se cumple la condición hasta:

  1. Activación del buzzer.
  2. Actualización de la OLED.
  3. Actualización del tablero.
  4. Aplicación de la orden de silenciar desde el tablero. Los resultados se registraron por canal.
Canal Latencia media (s) σ (s) Máximo (s)
Buzzer 7.03 1.12 8.6
OLED 6.88 1.11 8.4
Tablero web 9.06 1.47 11.6
Silenciar 0.89 0.31 1.4

Silenciado correcto: 10/10. El registro del evento se verificó en el historial del tablero, sin medir su latencia de forma independiente.

10.7 Banco B5 — Robustez

Prueba Resultado esperado Resultado observado Cumple
Desconectar sensor de nivel (sin eco) ERROR_SENSOR tras 5 ciclos (≈ 12 s) ERROR_SENSOR, nivel ERR, alarma sonora, 12.3 s Sí
Desconectar DHT22 (DATA) FALLA_DHT22 tras 3 ciclos (≈ 7 s), ERR, chirrido Aviso DHT22, ERR en OLED y tablero, chirrido, 7.2 s Sí
Desconectar BMP180 (SDA) FALLA_BMP180 tras 3 ciclos, P:ERR, reinicializa al volver Aviso BMP180, P:ERR, reinicializó al reconectar, 7 s Sí
Desconectar GUVA-S12SD (cable S) Aviso de falla Sin aviso: la lectura queda en un valor bajo indistinguible de 0 UV No (limitación conocida)
Desconectar OLED (SDA/SCL) FALLA_OLED en tablero, reinicializa al volver Pantalla apagada, aviso FALLA_OLED en tablero, 3 s Sí
Valores fuera de rango Lectura inválida sin clasificación incorrecta Lectura descartada por el firmware, 7.1 s Sí
Apagar WLAN (router apagado 30 s) Alertas locales continúan, x en OLED x en OLED, evento FALLA_WIFI Sí
Recuperar WLAN Reconexión automática Reconectó solo (< 10 s tras volver el router) Sí
Clave web incorrecta Acceso rechazado HTTP 401, 0.5 s Sí
Acceso desde red no autorizada (datos móviles) Acceso rechazado HTTP 403, 0.5 s Sí
Reinicio del ESP32 Histórico y eventos se borran (RAM) Borrados, inició en OK Sí (comportamiento esperado)

10.8 Banco B6 — Repetibilidad y energía

Repetibilidad. Se evaluó la desviación estándar sobre 10 lecturas repetidas en condiciones constantes, en cada punto de calibración.

Métrica Resultado
Desviación estándar, distancia (7 puntos × 10 lecturas) 0.07 – 0.23 cm
Desviación estándar, temperatura DHT22 (ambiente / calentador) 0.00 / 0.12 °C
Desviación estándar, humedad DHT22 0.19 – 0.22 % HR
Tiempos de detección de desborde / sequía 6.4–8.9 s / 5.1–6.9 s
Tiempos de detección de falla de sensor 12.0 – 12.6 s

Consumo de corriente (estimado, no medido). Los valores se estimaron a partir de las hojas de datos de los componentes.

Estado Corriente estimada Rango de referencia
Reposo (WiFi conectado, sin alarma) 168 mA ≈ 160–260 mA
Alarma activa (buzzer) 186 mA reposo + ≈ 10–30 mA
Arranque (pico) 430 mA ≈ 400–500 mA al iniciar WiFi

Para estimar la autonomía con una fuente de capacidad útil conocida:

Autonomía ≈ capacidad útil (mAh) / corriente media (mA)

Para dimensionar fuente o batería conviene medir la corriente con un multímetro en serie.

10.9 Instrumentos utilizados

Instrumento Uso
Regla o cinta métrica Calibración de nivel (distancias de 5 a 20 cm)
Higrómetro / termohigrómetro (resolución 0.1 °C) Referencia de temperatura y humedad relativa
Sensibilidad nominal del GUVA-S12SD Referencia UV (sin radiómetro ni servicio meteorológico)
Documentación de los componentes Estimación del consumo de corriente (sin multímetro)
Celular con la app Atmospheric Pressure Barometer Referencia de presión
Lámpara UV y calentador Emulación de radiación UV y temperatura
Ventilador o secador Emulación de humedad baja
Humidificador Emulación de humedad alta
Nevera doméstica Condición de baja temperatura
Jeringa o válvula Salida controlada de agua para emular fugas