Dashboard
🎯 Tus Rutas de Aprendizaje
Fundamentos ML + ESP32
Python, sensores, recolección de datos, primeros modelos con Edge Impulse. Simuladores interactivos incluidos.
Edge AI Avanzado
TinyML optimizado, modelos cuantizados, visión por computadora con ESP32-S3 y cámaras. Laboratorios prácticos.
IIoT Industrial
Mantenimiento predictivo, anomalías, comunicación OPC-UA, MQTT, despliegue en producción con OTA.
🔬 Laboratorios de Simulación
Simulador de Sensores
4 sensores con física real: ruido gaussiano, drift, anomalías configurables. Gráfico en tiempo real.
Red Neuronal Visual
Visualiza propagación forward en una red neuronal completamente interactiva. Ajusta pesos y observa.
Edge Impulse Simulator
Flujo completo: recolección de datos → diseño de impulso → entrenamiento simulado → inferencia.
Osciloscopio + FFT
Osciloscopio virtual con modo tiempo y frecuencia. Análisis espectral en tiempo real para vibraciones.
Code Lab
Editor con simulación de ejecución. Código Arduino/ESP32 con salida serial simulada y verificación.
MQTT Simulator
Broker MQTT virtual. Publica, suscríbete y observa mensajes en tiempo real. Simulación completa.
📈 Tu Progreso
📋 Estructura de Cada Módulo
1. Teoría Profunda: Conceptos explicados con ejemplos prácticos y comparativas. 2. Simulación Interactiva: Laboratorio web donde experimentas sin riesgo. 3. Código Real: Código Arduino/ESP32 listo para compilar en hardware real. 4. Quiz de Evaluación: 3 preguntas para validar tu comprensión. 5. Recursos Adicionales: Lecturas, videos y documentación complementaria.
📐 Fase 0: Pre-Requisitos (Opcional)
Electrónica básica, conceptos de programación C/C++, familiaridad con Arduino. No es obligatorio pero acelera el aprendizaje.
🌱 Fase 1: Fundamentos (Semanas 1-2)
Python básico, introducción a ML, tipos de algoritmos (supervisado, no supervisado, por refuerzo), herramientas Edge Impulse. Comprensión de la arquitectura ESP32. Sin hardware requerido: todo en simulador web.
🔌 Fase 2: ESP32 + Sensores (Semanas 3-4)
Programación ESP32 con Arduino IDE y PlatformIO. Lectura de sensores analógicos y digitales. Comunicación I2C, SPI, WiFi y Bluetooth. Envío de datos a la nube. Filtros digitales y calibración.
⚡ Fase 3: Edge AI & TinyML (Semanas 5-7)
TensorFlow Lite para microcontroladores. Cuantización de modelos (int8). Clasificación en tiempo real. Detección de anomalías con autoencoders. Visión por computadora con ESP32-S3 y cámara OV2640.
🏭 Fase 4: Proyectos Industriales (Semanas 8-10)
Mantenimiento predictivo con análisis FFT. Detección de anomalías en motores. Asistente de voz con keyword spotting. Control de calidad con visión artificial. Gateway IIoT con MQTT, Modbus y OPC-UA.
Módulo 1: Introducción a TinyML
¿Qué es TinyML? Diferencias Cloud vs Edge. Arquitectura ESP32 completa. Primeros pasos sin hardware.
Módulo 2: Preparación de Datos
Recolección, limpieza, normalización MinMax/Z-score. Ventanas deslizantes. Formatos CSV/JSON/C array.
Módulo 3: Primer Modelo con Edge Impulse
Crear cuenta, diseñar impulso, DSP, entrenamiento visual, validación, exportar .tflite.
Módulo 4: Programación ESP32
Arduino IDE vs PlatformIO. GPIO, ADC 12-bit, PWM ledc, I2C, SPI. WiFi STA/AP. Bluetooth BLE.
Módulo 5: Sensores y Actuadores
MPU6050, DHT22, LM35, ACS712, HX711, INMP441. Calibración, filtros media móvil y Kalman.
Módulo 6: Comunicación y Edge
MQTT pub/sub, HTTP REST, WebSocket. TLS/SSL. Protocolos industriales: Modbus RTU/TCP, OPC-UA.
Módulo 7: TensorFlow Lite Micro
Integrar .tflite en ESP32. Intérprete, manejo de tensores, arena de memoria, optimización.
Módulo 8: Detección de Anomalías
Autoencoders, Isolation Forest, threshold dinámico μ ± kσ. Aplicación a motores industriales.
Módulo 9: Visión con ESP32-S3
Cámara OV2640. Clasificación de imágenes. FOMO. Person detection. Aceleración vectorial.
Módulo 10: Mantenimiento Predictivo
Análisis de vibraciones. Espectro FFT. Clasificación de fallas: desbalance, desalineación, rodamientos.
Módulo 11: Audio y Comandos de Voz
Wake word detection. Keyword spotting. MFCC features. Redes neuronales para audio en ESP32.
Módulo 12: Despliegue Industrial
OTA updates. Docker edge. SCADA. Grafana. Monitoring. Seguridad. Producción a escala.
🎛️ Panel de Sensores Simulados
100 Hz Buffer: 500 pts📈 Visualización Multi-Canal en Tiempo Real
🧠 Predicción del Modelo ML Simulado
Inferencia: ~12ms💡 Cómo funciona la predicción
El algoritmo calcula la media móvil y desviación estándar de cada sensor. Si un valor excede μ ± 2σ → ADVERTENCIA. Si excede μ ± 3σ → CRÍTICO. Si múltiples sensores están anormales simultáneamente, la confianza aumenta. Este es un threshold dinámico similar a lo que implementarías con Isolation Forest en producción.
🔮 Red Neuronal Interactiva
📖 ¿Qué estás viendo?
Cada círculo es una neurona. Las líneas son conexiones con pesos. El color de la neurona indica su nivel de activación (verde = alta, gris = baja). El grosor de las líneas representa la magnitud del peso. Durante la propagación forward, los valores fluyen de izquierda (input) a derecha (output), multiplicándose por los pesos y aplicando la función de activación (ReLU en capas ocultas, Sigmoid en output).
📊 Funciones de Activación
| Función | Fórmula | Uso |
|---|---|---|
| ReLU | max(0, x) | Capas ocultas (rápida) |
| Sigmoid | 1/(1+e^(-x)) | Output binario [0,1] |
| Tanh | (e^x - e^(-x))/(e^x + e^(-x)) | [-1, 1] normalizado |
| Softmax | e^(xi)/Σe^(xj) | Clasificación multi-clase |
⚡ Comparativa: ESP32 vs Otros Chips
| Chip | CPU | RAM | ML Speed |
|---|---|---|---|
| ESP32 | 240MHz dual | 520KB | ~10ms inferencia |
| ESP32-S3 | 240MHz + AI | 512KB + 8MB | ~3ms inferencia |
| Arduino Uno | 16MHz | 2KB | No aplica |
| STM32H7 | 480MHz | 1MB | ~1ms inferencia |
🔄 Flujo de Trabajo Edge Impulse
Paso 1/5📥 Paso 1: Recolección de Datos
Simula la recolección de muestras para un clasificador de estados de motor. Cada clase necesita al menos 30 muestras de 2 segundos. Haz clic en "Grabar" para cada clase.
🎓 Paso 3: Entrenamiento del Modelo
💡 Conceptos Clave de Edge Impulse
Impulse: Pipeline de procesamiento = extract features (DSP) → classify (NN). DSP: Digital Signal Processing convierte datos crudos en características útiles (ej: FFT para vibraciones). Learning Window: Tamaño de la ventana de datos que el modelo ve. Para vibraciones: 20-50ms. Confusion Matrix: Muestra qué clases se confunden entre sí. Busca >90% en diagonal.
🖥️ Osciloscopio Digital - 2 Canales
🔊 Análisis Espectral (FFT)
🔍 Diagnóstico de Fallas por Frecuencia
En mantenimiento predictivo, cada tipo de falla mecánica genera frecuencias características: Desbalance: 1x frecuencia de rotación | Desalineación: 2x frecuencia de rotación | Rodamiento (BPFI): frecuencia específica del rodamiento | Engranaje: frecuencia de malla del engranaje. El análisis FFT permite identificar estas firmas espectrales antes de que la falla sea catastrófica.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
💡 Ejercicios Prácticos
- Modifica los umbrales: Cambia TEMP_THRESHOLD a 65°C para un motor más sensible.
- Agrega filtro Kalman: Implementa un filtro de Kalman en readTemperature() para reducir ruido.
- Almacenamiento SD: Agrega fallback a tarjeta SD cuando WiFi falle (modo offline).
- Interfaz web: Crea un AsyncWebServer con dashboard en tiempo real en
http://esp32.local. - Modelo real: Reemplaza detectAnomaly() por una llamada a
run_classifier()de Edge Impulse. - Deep sleep: Implementa modo de bajo consumo: despierta cada 5 min, mide, envía, duerme.
📤 Publicador (ESP32)
📥 Suscriptor (Dashboard/Cloud)
📋 Log del Broker MQTT Virtual
📖 Niveles QoS de MQTT
QoS 0 (At most once): Fire and forget. Rápido pero puede perderse.
QoS 1 (At least once): Asegura entrega pero puede duplicarse. Recomendado para sensores.
QoS 2 (Exactly once): Asegura entrega única. Más lento. Para comandos críticos.
🔤 Wildcards en Topics
+ (plus): Un solo nivel. factory/+/temperature matcha todos los sensores.
# (hash): Múltiples niveles. factory/sensor001/# matcha todos los subtopics.
Nota: # solo puede estar al final del topic filter.
🏭 Smart Factory Guardian
Mantenimiento predictivo con ESP32-S3
Sistema completo de monitoreo industrial con análisis de vibraciones, temperatura y corriente. Usa Edge AI para detectar fallas en motores antes de que ocurran. Incluye dashboard web embebido y alertas por Telegram.
🔧 Mini-Simulador: Estado del Motor
👁️ Quality Vision Inspector
Control de calidad con visión artificial
Inspección automatizada de productos usando cámara OV2640 y ESP32-S3. Detecta defectos superficiales, cuenta objetos y clasifica piezas en tiempo real usando FOMO (Faster Objects, More Objects).
🔧 Mini-Simulador: Detección de Objetos
🗣️ VoiceCommand Industrial
Asistente de voz para operadores
Control de máquinas por comandos de voz. Wake word "Hola Fábrica" activa el sistema. Comandos: encender/apagar, ajustar velocidad, consultar estado, pedir ayuda. Usa MFCC features y keyword spotting con Edge Impulse.
🔧 Mini-Simulador: Reconocimiento de Voz
🌡️ Energy Optimizer
Gestión inteligente de energía
Monitoreo y predicción de consumo eléctrico en tiempo real. Apaga equipos automáticamente cuando detecta inactividad prolongada. Reportes de eficiencia energética con predicción de costos mensuales usando regresión lineal en el ESP32.
🔧 Mini-Simulador: Consumo en Tiempo Real
📡 IIoT Gateway
Puente entre PLCs y la nube
Gateway industrial que conecta PLCs (Delta, Siemens) con plataformas cloud (AWS IoT, Azure). Soporta Modbus RTU/TCP, OPC-UA, MQTT y HTTP REST. Buffer local con SD para offline, sincronización automática cuando recupera conectividad.
🔧 Mini-Simulador: Tráfico de Protocolos
🧠 TinyML
Machine Learning en dispositivos con recursos extremadamente limitados (microcontroladores con KB de RAM y MHz de CPU). Permite ejecutar inferencias de redes neuronales sin conexión a internet. En ESP32, modelos de hasta ~500KB con cuantización int8.
⚡ Edge AI
Inteligencia artificial ejecutada directamente en el dispositivo ("edge") en lugar de en la nube. Reduce latencia de 100-500ms a 1-50ms, mejora privacidad al no enviar datos crudos, y permite funcionamiento offline con batería.
📊 Cuantización (Quantization)
Proceso de reducir la precisión numérica de los pesos de una red neuronal de float32 a int8. Reduce el modelo 4x en tamaño y acelera 2-3x la inferencia en hardware sin FPU. Un modelo de 2MB pasa a ~500KB.
🎯 Edge Impulse
Plataforma web gratuita (hasta ciertos límites) para desarrollar modelos ML para edge devices. Flujo: recolectar datos → diseñar impulso (DSP+NN) → entrenar → validar → exportar código C++ para Arduino/ESP32. Soporta audio, imagen, sensores y tabular.
📡 TensorFlow Lite Micro
Versión reducida de TensorFlow optimizada para microcontroladores. Solo incluye el intérprete de inferencia (no entrenamiento). Ocupa ~16KB de código flash y funciona en ARM Cortex-M, ESP32 y RISC-V. Requiere "arena" de RAM para tensores temporales.
🔍 Ventana Deslizante (Sliding Window)
Técnica para procesar series temporales: en lugar de analizar un punto, toma N muestras consecutivas (ej: 2 segundos a 100Hz = 200 puntos) como entrada al modelo. Se desliza con un "stride" (solapamiento). Esencial para señales de sensores.
🧮 Feature Extraction
Proceso de transformar datos crudos en características relevantes para el modelo. Para señales de sensor: media, desviación estándar, máximo, mínimo, RMS, skewness, kurtosis. Para audio: MFCC (Mel-Frequency Cepstral Coefficients). Reduce dimensionalidad y mejora precisión.
⚖️ F1-Score
Métrica que equilibra precision y recall: F1 = 2 * (precision * recall) / (precision + recall). Útil cuando las clases están desbalanceadas. Un F1 > 0.85 es generalmente aceptable para producción industrial.
🔧 ESP32
Microcontrolador dual-core Xtensa LX6 @ 240MHz con WiFi, Bluetooth, 520KB SRAM, 4-16MB flash, 34 GPIO, 18 canales ADC 12-bit. Soporta deep sleep (5μA), FreeRTOS, y TFLite Micro. El ESP32-S3 añade aceleración vectorial para AI.
📳 MPU6050
Acelerómetro y giroscopio de 6 ejes con interfaz I2C. Rango configurable: ±2g a ±16g (acelerómetro), ±250°/s a ±2000°/s (giroscopio). Dirección I2C: 0x68 (AD0=GND) o 0x69 (AD0=VCC). Consumo: 3.5mA activo.
🌡️ LM35
Sensor de temperatura analógico con salida lineal de 10mV/°C. No requiere calibración externa. Rango: -55°C a 150°C. Precisión: ±0.5°C. Alimentación: 4-30V. Se conecta directamente a ADC del ESP32.
⚡ ACS712
Sensor de corriente Hall-effect basado en efecto Hall. Versiones de 5A, 20A y 30A. Salida: VCC/2 cuando I=0, sensibilidad 185mV/A (5A), 100mV/A (20A). Resolución efectiva limitada por ruido del ADC (~50mA).
🎵 INMP441
Micrófono MEMS digital de alta calidad con interfaz I2S. Resolución 24-bit, frecuencia de muestreo hasta 48kHz. Bajo consumo (1.4mA). Ideal para wake word detection y keyword spotting en ESP32.
🔌 ADC (Analog-to-Digital Converter)
Conversor analógico-digital del ESP32: 12-bit (valores 0-4095), 18 canales en 2 unidades (ADC1 y ADC2). ADC1 (GPIO 32-39) usable con WiFi. ADC2 (GPIO 0,2,4,12-15,25-27) no usable durante WiFi. Atenuación configurable: 0dB, 2.5dB, 6dB, 11dB.
📡 MQTT (Message Queuing Telemetry Transport)
Protocolo pub/sub ligero para IoT. Header de solo 2 bytes. Soporta 3 niveles QoS. Funciona sobre TCP/IP (puertos 1883 sin TLS, 8883 con TLS). Ideal para ESP32 por su bajo overhead y soporte de bibliotecas async.
🔧 Modbus RTU/TCP
Protocolo de comunicación industrial estándar. Modbus RTU usa RS-485 (serial) con formato binario. Modbus TCP usa Ethernet/WiFi (puerto 502). Cada dispositivo tiene una dirección única (1-247). Soporta coils, discrete inputs, holding registers e input registers.
🏭 OPC-UA (Open Platform Communications - Unified Architecture)
Protocolo industrial moderno que reemplaza OPC clásico. Plataforma independiente, seguro (certificados X.509), y orientado a servicios. Usa puerto 4840. Modelo de información basado en nodos. Más complejo que Modbus pero mucho más flexible y escalable.
🌐 HTTP REST
Protocolo web estándar para APIs. En ESP32 se usa con WiFiClientSecure para HTTPS. Ideal para enviar datos a plataformas cloud (AWS, Azure, ThingSpeak). Métodos: GET (leer), POST (crear), PUT (actualizar), DELETE (eliminar). Formato JSON estándar.
🏭 IIoT (Industrial Internet of Things)
Internet de las Cosas aplicado a entornos industriales. Conecta sensores, actuadores, PLCs y sistemas SCADA para monitoreo y control en tiempo real. Énfasis en confiabilidad (99.9%+ uptime), seguridad (TLS, VPN), y baja latencia.
📈 FFT (Fast Fourier Transform)
Algoritmo que convierte señales del dominio del tiempo al dominio de frecuencias. Complejidad O(n log n). Esencial para analizar vibraciones mecánicas y detectar fallas: desbalance (1x RPM), desalineación (2x RPM), rodamientos (BPFI frecuencias características).
🎵 MFCC (Mel-Frequency Cepstral Coefficients)
Características acústicas extraídas de señales de audio que simulan la percepción humana. Proceso: pre-énfasis → framing → ventana Hamming → FFT → banco de filtros Mel → log → DCT → 13 coeficientes. Usadas en keyword spotting y reconocimiento de voz.
🔧 OTA (Over-The-Air)
Actualización de firmware vía WiFi sin cable USB. Crítico para despliegues industriales. ESP32 soporta OTA básica (HTTP) y segura (HTTPS con verificación de certificado). Requiere partición dual (ota_0, ota_1) de al menos 1.5MB cada una.
⚡ Deep Sleep
Modo de ultra-bajo consumo del ESP32: 5-10μA. La CPU se apaga y solo el ULP coprocesor o RTC timer pueden despertar. Ideal para sensores de batería. Se usa esp_sleep_enable_timer_wakeup(us) para programar el despertar. Se pierde estado de RAM excepto RTC memory (8KB).
📊 SCADA (Supervisory Control and Data Acquisition)
Sistema de supervisión y adquisición de datos para procesos industriales. Monitorea en tiempo real, genera alarmas, almacena históricos y permite control remoto. Integra con ESP32 vía Modbus, OPC-UA o MQTT. Ejemplos: Ignition, WinCC, FactoryTalk.
🔍 Mantenimiento Predictivo (PdM)
Estrategia de mantenimiento basada en el estado real del equipo (condition-based), no en calendario fijo. Usa sensores + ML para predecir fallas antes de que ocurran. Reduce costos de mantenimiento 30-40% y elimina paradas no planificadas en un 70%.
🧮 Fórmulas de Conversión
| Sensor | Fórmula | Rango | Unidad |
|---|---|---|---|
| LM35 | Vout * 100 | 0-150 | °C |
| DHT22 | Lectura directa | -40-80 | °C |
| MPU6050 Accel | Raw / 16384 * 9.81 | ±2-16g | m/s² |
| MPU6050 Gyro | Raw / 131.0 | ±250-2000 | °/s |
| ACS712-5A | (V - 2.5) / 0.185 | ±5 | A |
| ACS712-20A | (V - 2.5) / 0.100 | ±20 | A |
| ACS712-30A | (V - 2.5) / 0.066 | ±30 | A |
| PZEM-004T | Serial (Modbus) | 0-100A, 0-260V | A/V/W/Wh |
| HX711 | Raw / cal_factor | 0-200 | kg |
| ADS1115 | Raw * 0.000125 ( PGA=±4.096V ) | ±4.096 | V |
📍 Pines ESP32 DevKit v1
| Pin | Función | ADC | Notas |
|---|---|---|---|
| GPIO 34 | Input only | ADC1_CH6 | ADC recomendado |
| GPIO 35 | Input only | ADC1_CH7 | ADC recomendado |
| GPIO 32 | I/O + Touch9 | ADC1_CH4 | ADC + Touch |
| GPIO 33 | I/O + Touch8 | ADC1_CH5 | ADC + Touch |
| GPIO 36 | Input (VP) | ADC1_CH0 | ADC preferido |
| GPIO 39 | Input (VN) | ADC1_CH3 | ADC preferido |
| GPIO 25 | DAC1 | - | 8-bit DAC |
| GPIO 26 | DAC2 | - | 8-bit DAC |
| GPIO 21 | I2C SDA | - | SDA por defecto |
| GPIO 22 | I2C SCL | - | SCL por defecto |
| GPIO 18 | SPI SCK | - | VSPI |
| GPIO 19 | SPI MISO | - | VSPI |
| GPIO 23 | SPI MOSI | - | VSPI |
| GPIO 5 | SPI CS0 | - | VSPI CS |
| GPIO 16/17 | UART2 | - | RX2/TX2 |
| GPIO 1/3 | UART0 | - | TX0/RX0 (USB) |
⚡ Umbrales de Anomalías
| Equipo | Temp. Max | Vib. Max | Corriente Max |
|---|---|---|---|
| Motor 1HP | 75°C | 2.5g | 6A |
| Motor 5HP | 80°C | 4.0g | 22A |
| Motor 10HP | 85°C | 5.5g | 43A |
| Bomba centrífuga | 70°C | 3.0g | 15A |
| Compresor | 85°C | 5.0g | 30A |
| Ventilador | 60°C | 1.5g | 8A |
| Reductor | 75°C | 3.5g | Varía |
| Generador | 90°C | 4.5g | Varía |
⌨️ Comandos Útiles
🧠 Fórmulas de ML Útiles
| Fórmula | Uso |
|---|---|
| z = (x - μ) / σ | Normalización Z-score |
| x_norm = (x - min) / (max - min) | Normalización MinMax [0,1] |
| RMS = √(Σx²/n) | Root Mean Square (vibración) |
| Crest Factor = Peak / RMS | Detección de impactos |
| THD = √(ΣV_h²) / V_1 | Total Harmonic Distortion |
| SNR = 20*log10(V_signal/V_noise) | Relación señal/ruido (dB) |
| Confianza = e^(logit) / Σe^(logits) | Softmax para clasificación |
📡 Topics MQTT Típicos
📘 Documentación Oficial
ESP-IDF Docs
SDK oficial de Espressif. APIs, drivers, ejemplos completos y guías de optimización para ESP32, ESP32-S3 y ESP32-C3.
Edge Impulse Docs
Guías paso a paso, tutoriales en video, referencia de API y showcase de proyectos de la comunidad.
TensorFlow Lite Micro
Documentación oficial de Google. APIs, guía de optimización de memoria, y ejemplos para ARM, ESP32 y RISC-V.
PlatformIO ESP32
Configuración de proyectos, debugging con GDB, librerías compatibles y CI/CD para ESP32.
Arduino Reference
Referencia completa del lenguaje Arduino: funciones, variables, estructuras y librerías.
MicroPython ESP32
Alternativa a C/C++: Python en ESP32. Ideal para prototipos rápidos y scripting.
🛠️ Herramientas Recomendadas
Wokwi Simulator
Simulador online gratuito de ESP32 con sensores virtuales. Prueba código sin hardware. Soporta debugging paso a paso.
Postman
Testea APIs REST de tu ESP32. Envía requests HTTP, inspecciona respuestas JSON, automatiza pruebas con colecciones.
Grafana
Visualización de datos de sensores en tiempo real. Dashboards profesionales con alertas. Integra con InfluxDB, Prometheus.
Node-RED
Programación visual para IoT. Conecta ESP32 con servicios cloud usando flujos de nodos drag-and-drop.
Eclipse Mosquitto
Broker MQTT open source ligero. Soporta TLS, autenticación, ACLs y bridging. Ideal para despliegues locales.
InfluxDB
Base de datos de series temporales optimizada para métricas de IoT. Consultas con InfluxQL. Integra con Grafana.
👥 Comunidades
r/esp32 (Reddit)
Comunidad de 70k+ miembros. Proyectos compartidos, troubleshooting, noticias y discusiones avanzadas.
Edge Impulse Forum
Foro oficial con soporte técnico directo del equipo. Showcase de proyectos y tutoriales avanzados.
PlatformIO Community
Foro de soporte para PlatformIO. Resolución de problemas de compilación, librerías y boards.
ESP32 Discord
Servidor oficial de Espressif en Discord. Canales en español e inglés. Respuestas en tiempo real.