Volver a proyectos
CS-01Envases Universales de México · 2026

Monitorización de Silos Industriales en Tiempo Real con ESP32, Backend Predictivo y Sensores Radar de 120m

Sistema IoT completo diseñado desde cero tras un estudio técnico-económico: selección de sensores radar de libre espacio (rango 120m), desarrollo de firmware en ESP32 con ADC de 24 bits, backend en FastAPI con TimescaleDB, modelo predictivo basado en Prophet y descomposición STL, y frontend React con WebSockets para visualización en tiempo real y proyecciones de consumo.

ESP32ADS1220SPIC++PythonFastAPITimescaleDBPostgreSQLWebSocketReactEChartsProphetSTLDocker

// 01_EL RETO

El reto

La planta carecía de cualquier sistema de medición de nivel en sus silos de HDPE. El inventario se estimaba visualmente, con errores recurrentes que provocaban desabastos o sobrecostos por compras de emergencia. Se requería una solución completa que incluyera: estudio de selección de sensores adecuados para material plástico en polvo/gránulos, considerando polvo en suspensión, temperatura y vibraciones; diseño de infraestructura de comunicaciones en áreas con cobertura WiFi limitada; y un sistema de monitoreo que no solo mostrara niveles, sino que predijera consumos para planificar reaprovisionamiento. El presupuesto era ajustado, lo que obligó a optimizar cada componente, desde la electrónica hasta el software, evitando soluciones comerciales de alto costo y apostando por arquitectura open-source y hardware de bajo consumo.

// 02_ROLE

Mi rol y tecnologías

Estudio técnico-económico completo, selección de componentes, diseño de arquitectura end-to-end, desarrollo de firmware, backend, modelo predictivo y frontend. Además, elaboración de especificaciones para instalación en campo (cableado, protección IP, alimentación, puesta a tierra) y pruebas de validación.

  • Estudio de mercado y selección de sensores radar de libre espacio con rango 120m, adecuados para material granular y condiciones ambientales (polvo, temperatura -20°C a 60°C, vibración).
  • Diseño de la electrónica de acondicionamiento: resistencia shunt de alta precisión, protección ESD y filtrado pasivo para la señal 4-20 mA.
  • Firmware en C++ para ESP32 con lectura diferencial del ADS1220 vía SPI, sincronización por DRDY, y pipeline de filtrado (validación de rango, detección de outliers por delta, filtro de mediana).
  • Backend en Python con FastAPI: endpoints de telemetría, gestión de silos, calibración multipunto con interpolación lineal, y proxy para configuración remota de ESP32 (HTTP).
  • Persistencia en TimescaleDB con hipertablas particionadas por día y optimización de consultas para series de tiempo de alta frecuencia (lecturas cada 5-10 segundos).
  • Modelo predictivo basado en Prophet con descomposición STL (tendencia, estacionalidad y residuo) para pronosticar niveles y calcular tiempo estimado de vaciado con intervalos de confianza.
  • Sistema de difusión en tiempo real vía WebSocket (ConnectionManager) y frontend React con ECharts para gráficos interactivos de nivel, consumo y predicciones.
  • Especificaciones de instalación en campo: selección de cableado apantallado, protecciones IP65 para nodos, sistema de alimentación 24V DC con respaldo y esquema de puesta a tierra para minimizar ruido.

// 03_SOLUTION

Solución e impacto

El sistema SMITS se diseñó tras un estudio que determinó que los sensores radar de libre espacio (FMCW) con rango de 120m, frecuencia 80 GHz y salida 4-20 mA eran la opción óptima para material granular, por su inmunidad al polvo y vibraciones. Cada sensor se conecta a un nodo ESP32 con ADS1220 de 24 bits, montado en gabinete IP65 con protección ESD y fuente dedicada. El firmware aplica validación de rango (3.5-20.5 mA), filtro por delta (>0.5 mA) y mediana (32 muestras) para eliminar ruido. Los datos se envían por HTTP POST al backend FastAPI, que calcula el nivel usando geometría del silo (cilindro + cono invertido) y calibración multipunto. La persistencia en TimescaleDB permite consultas rápidas. El modelo predictivo, ejecutado en segundo plano, usa Prophet con descomposición STL para generar pronósticos de nivel y consumo, actualizando métricas como 'horas hasta alerta' y 'horas hasta vacío'. El frontend React consume WebSockets para actualizaciones en tiempo real y muestra gráficos ECharts con histórico, tendencia y proyecciones. El backend también actúa como proxy para reconfigurar remotamente los ESP32 (intervalo de muestreo, offset) sin intervención física. Se documentaron todas las especificaciones de instalación y se realizaron pruebas de validación en campo.

Arquitectura conceptual

Campo (Hardware)
Sensores radar 80 GHz, 120mResistencia shunt 270Ω + protecciónESP32 + ADS1220 (IP65)Pipeline de filtrado (rango, delta, mediana)
Backend (FastAPI)
Endpoint /telemetryCálculo geométrico (cilindro+cono)Calibración multipunto (interpolación)Proxy para ESP32 (config remota)WebSocket ConnectionManager
Persistencia y Análisis
TimescaleDB (hipertablas diarias)Prophet + STL (tendencia, estacionalidad)Predicción: horas a alerta/vacío
Frontend (React)
SilosView (tarjetas en tiempo real)SilosGraphView (ECharts históricos y predicción)SiloDetailsModal (alertas y diagnósticos)WebSocket listener

// 04_RESULTS

Resultados

100%

Eliminación de mediciones manuales

±0.1%

Precisión de nivel

120 m

Rango de sensores radar

< 500 ms

Latencia de difusión WebSocket

90%

Reducción de costos vs soluciones comerciales

24/7

Monitoreo continuo con alertas predictivas