Tutorial: ESP32-IIoT-Kit — Plataforma de Monitorizacion Industrial¶
Que es este proyecto¶
Este proyecto consiste en construir un sistema completo de monitorizacion y control para entornos industriales utilizando microcontroladores ESP32. El sistema mide parametros criticos del entorno como temperatura, pH, humedad, presion y nivel, enviando los datos de forma inalambrica a un gateway central que los procesa, almacena y visualiza en un dashboard embebido y una interfaz web.
La arquitectura se basa en nodos sensores autonomos (ESP32-C3) que funcionan con bateria durante meses, un gateway central (ESP32-S3) que coordina todo el sistema, y un dashboard Preact embebido en el propio gateway para acceso local sin servidor externo. La comunicacion entre nodos y gateway usa ESP-NOW, un protocolo ligero y eficiente de Espressif que no requiere router WiFi.
Este es un proyecto educativo. El objetivo principal es aprender desarrollo de sistemas embebidos con ESP-IDF, comunicaciones inalambricas, protocolos IoT y desarrollo web fullstack, construyendo algo real y funcional.
Que vas a aprender¶
- ESP-IDF y programacion en C para microcontroladores ESP32
- Comunicaciones inalambricas: ESP-NOW, WiFi (AP, STA, APSTA)
- Protocolos IoT: MQTT, REST API, WebSocket
- Gestion de energia: deep sleep, presupuestos de consumo, optimizacion bateria
- Sensores y actuadores: I2C, SPI, ADC, 1-Wire, calibracion
- Servidor web embebido: HTTP server en un microcontrolador
- Dashboard embebido: Preact + Vite SPA servida desde SPIFFS del gateway
- OTA (Over-The-Air): actualizaciones remotas de firmware
- Seguridad en IoT: cifrado, TLS, autenticacion
Requisitos previos¶
Antes de empezar necesitas:
- Programacion en C: variables, funciones, structs, punteros, memoria. No hace falta ser experto, pero debes sentirte comodo leyendo y escribiendo C basico.
- Electronica basica: saber que es voltaje, corriente, resistencia. Poder conectar componentes en una breadboard. Entender un pinout de un modulo.
- Linea de comandos: moverte por directorios, ejecutar comandos, usar Git basico.
- Opcional pero recomendable: nociones de redes (IP, puerto, cliente/servidor) y algo de JavaScript/TypeScript para las fases de dashboard.
Arquitectura del sistema¶
┌─────────────────────────────────────────────────┐
│ SERVIDOR (LAN / Cloud) — opcional │
│ │
│ Mosquitto ←→ API REST + SQLite │
│ (Broker MQTT) (opcional, escalado) │
└────────┬─────────────────────────────────────────┘
│ MQTT por WiFi (opcional)
│
┌────────▼────────┐
│ GATEWAY │ ←── WiFi AP + dashboard Preact embebido
│ ESP32-S3 │
│ │ Recibe datos de todos los nodos
│ WiFi AP + STA │ Sirve SPA Preact desde SPIFFS
│ + ESP-NOW │ API REST local + MQTT opcional
└────────┬────────┘
│ ESP-NOW (sin router, directo por radio)
│
┌────┼────────────┐
│ │ │
Nodo A Nodo B Nodo C ← ESP32-C3 con bateria
Temp Nivel Variables
Flujo de datos: Un nodo sensor se despierta del deep sleep, lee su sensor, envia los datos por ESP-NOW al gateway, y vuelve a dormir. El gateway recibe los datos, los sirve a traves del dashboard Preact embebido, y opcionalmente los publica por MQTT a un servidor externo. Todo funciona sin infraestructura de servidor si se prefiere.
Mapa de tutoriales¶
| Fase | Tutorial | Conceptos clave | Lectura est. |
|---|---|---|---|
| 0 | Primeros pasos con ESP32 y ESP-IDF | Variantes ESP32, ESP-IDF vs Arduino, build system, GPIO, I2C/SPI/ADC, modos WiFi, modos energia | 45 min |
| 1 | Construyendo el cerebro del sistema | NVS, WiFi APSTA, event-driven, HTTP server embebido, REST API, SNTP, watchdog | 40 min |
| 2 | Nodos autonomos y comunicacion fiable | Deep sleep, RTC memory, protocolo binario, ACK/retry, auto-discovery, FreeRTOS basico | 40 min |
| 3 | Midiendo el mundo real | Sensores analogicos vs digitales, 1-Wire, calibracion, filtrado, reles, histeresis | 35 min |
| 4 | Del microcontrolador a la pantalla | MQTT pub/sub, topics, QoS, Mosquitto, WebSocket, React, series temporales | 40 min |
| 5 | Actualizaciones seguras y sistema robusto | OTA A/B particiones, rollback, TLS, seguridad IoT, stress testing | 35 min |
| 6 | Hacia donde seguir | Mesh networking, Edge ML, IoT celular, escalabilidad | 20 min |
Como seguir los tutoriales¶
- Lee el tutorial de la fase correspondiente para entender los conceptos
- Consulta las tareas en la carpeta
Fases/para saber exactamente que implementar - Vuelve al tutorial como referencia cuando necesites repasar un concepto
- Responde las preguntas de reflexion al final de cada tutorial para consolidar lo aprendido
- No saltes fases: cada fase construye sobre la anterior
Glosario¶
| Termino | Descripcion |
|---|---|
| ADC | Analog-to-Digital Converter. Convierte señales analogicas (voltaje continuo) a valores digitales que el microcontrolador puede procesar. |
| AP | Access Point. Modo WiFi en el que el ESP32 crea su propia red, como un router. Otros dispositivos se conectan a el. |
| APSTA | Modo WiFi dual: el ESP32 actua como AP y STA simultaneamente. Crea su red Y se conecta a otra. |
| Deep sleep | Modo de bajo consumo extremo del ESP32. Apaga casi todo el chip excepto el controlador RTC. Consume microamperios. Al despertar, el programa arranca desde cero (como un reinicio). |
| ESP-IDF | Espressif IoT Development Framework. El SDK oficial de Espressif para programar ESP32 en C. Basado en FreeRTOS. |
| ESP-NOW | Protocolo de comunicacion propietario de Espressif. Permite enviar datos entre ESP32 sin necesidad de router WiFi. Rapido, bajo consumo, maximo 250 bytes por mensaje. |
| FreeRTOS | Sistema operativo en tiempo real que ejecuta ESP-IDF. Gestiona tareas (hilos), semaforos, colas y temporizadores. |
| I2C | Inter-Integrated Circuit. Bus de comunicacion serie con 2 cables (SDA, SCL). Permite conectar multiples sensores con solo 2 pines. |
| LMK | Local Master Key. Clave de cifrado ESP-NOW especifica para cada par de dispositivos. |
| MQTT | Message Queuing Telemetry Transport. Protocolo de mensajeria ligero para IoT. Basado en publicar/suscribirse a "topics" (canales). |
| NVS | Non-Volatile Storage. Almacenamiento clave-valor en la memoria flash del ESP32. Sobrevive a reinicios y cortes de alimentacion. |
| OTA | Over-The-Air. Actualizacion de firmware sin conectar cable USB. Se descarga el nuevo firmware por WiFi. |
| PMK | Primary Master Key. Clave de cifrado ESP-NOW compartida por todos los dispositivos del grupo. |
| QoS | Quality of Service. En MQTT, define el nivel de garantia de entrega: 0 (best effort), 1 (al menos una vez), 2 (exactamente una vez). |
| RSSI | Received Signal Strength Indicator. Medida de la potencia de señal recibida, en dBm. Mas cercano a 0 = mejor señal. |
| RTC memory | Memoria del controlador RTC del ESP32. Pequeña (8KB) pero sobrevive al deep sleep. Util para guardar estado entre ciclos de sueño. |
| SNTP | Simple Network Time Protocol. Permite sincronizar el reloj del ESP32 con un servidor de tiempo en Internet. |
| SPI | Serial Peripheral Interface. Bus de comunicacion rapido con 4 cables (MOSI, MISO, SCK, CS). Usado para sensores de alta velocidad y pantallas. |
| STA | Station. Modo WiFi en el que el ESP32 se conecta a una red existente (como tu telefono se conecta al router de casa). |
| Watchdog | Temporizador de vigilancia. Si el programa no lo "alimenta" periodicamente, reinicia el ESP32. Protege contra bloqueos del software. |
| 1-Wire | Protocolo de comunicacion con un solo cable de datos. Usado por sensores como el DS18B20 (temperatura). |