ESP32
HardwareMicrocontrolador de Espressif con Wi-Fi y Bluetooth integrados en el propio chip.
A diferencia de un Arduino Uno, que necesita un shield para conectarse a la red, el ESP32 ya lleva la radio dentro del chip. La línea original usa dos núcleos Xtensa; las familias más nuevas (C3, C6) usan RISC-V. Para la automatización importan los periféricos: UART para RS-485, SPI e I²C para módulos, ADC para señales analógicas y GPIO para entradas y salidas digitales.
Wi-FiBluetoothGPIOUARTSPII²CADC
C
LenguajeLenguaje de bajo nivel en el que está escrito el framework oficial del ESP32.
C permite acceder directamente a la memoria y los registros del chip, sin capas intermedias que consuman tiempo de ejecución. Es el lenguaje de ESP-IDF, el SDK oficial de Espressif. Cuando necesitas un control fino del tiempo o la memoria—el caso típico del firmware industrial—el código acaba escrito en C.
ESP-IDFpunterosbajo nivel
C++
LenguajeExtensión de C con clases y objetos; es el lenguaje de Arduino Core.
Prácticamente cualquier programa C válido también es C++ válido, así que ambos conviven en el mismo proyecto. C++ añade organización: agrupar un sensor, sus pines y sus métodos en una clase en lugar de repartir variables globales. Arduino Core para ESP32 es C++, por eso escribes `Serial.begin()` en vez de llamar directamente al driver de UART.
Arduino Coreclasesbibliotecas
Arduino
FrameworkPlataforma abierta que simplificó el acceso a microcontroladores y cuya API funciona en el ESP32.
Arduino nació como una placa (la Uno, un AVR de 8 bits sin red), pero aquí se usa otra parte: Arduino Core para ESP32, una capa de compatibilidad que permite programar el chip de Espressif con la API de Arduino—`setup()`, `loop()`, `digitalWrite()`, `Serial`. Está construida sobre el propio ESP-IDF. La ventaja es el enorme catálogo de bibliotecas; el precio es que la abstracción oculta detalles que, en firmware industrial, tarde o temprano necesitas ver. Ambos conviven: puedes llamar funciones de ESP-IDF desde un proyecto Arduino.
Arduino Coresetup() y loop()Arduino IDEbibliotecasESP-IDF
VS Code
HerramientaEditor de código gratuito de Microsoft, usado como base del entorno.
Por sí solo es solo un editor; las extensiones son las que lo convierten en un entorno de firmware. Aquí escribes el código, navegas por los archivos, usas el depurador y abres el terminal. La alternativa histórica es Arduino IDE, más sencilla pero mucho más limitada en proyectos con muchos archivos.
editorextensionesdepurador
PlatformIO
HerramientaExtensión de VS Code que gestiona el compilador, las bibliotecas y la grabación de la placa.
Descarga el toolchain adecuado, resuelve las bibliotecas y graba el firmware. El proyecto completo se describe en un archivo `platformio.ini`: qué placa, qué framework (Arduino o ESP-IDF), qué bibliotecas y qué versiones. Así la compilación es reproducible: otra persona clona el repositorio y obtiene exactamente el mismo binario.
platformio.initoolchaincompilación reproducible
OTA
PrácticaOver-The-Air: actualizar el firmware por red, sin cable USB ni visita al equipo.
Con una placa en el banco, el USB basta. Con treinta gateways repartidos por la planta, subir una escalera para grabar cada uno no es una opción. El ESP32 guarda dos particiones de aplicación: escribe la imagen nueva en la partición inactiva, verifica su integridad y solo entonces apunta el arranque hacia ella. Si la nueva versión no confirma que ha iniciado bien, el bootloader vuelve a la anterior; ese rollback es lo que separa una actualización remota de un equipo inaccesible.
particionesrollbackArduinoOTAElegantOTA
MQTT
ProtocoloProtocolo ligero de mensajería con el modelo publica/suscribe y un broker intermedio.
Los dispositivos no hablan directamente entre sí: publican mensajes en tópicos (como `fabrica/linea1/temperatura`) en un servidor central, el broker, y quien tiene interés se suscribe a ese tópico. Así se desacopla quien produce el dato de quien lo consume. Fue diseñado para enlaces deficientes, algo importante en la planta: tiene niveles de entrega (QoS) y Last Will, un mensaje que el broker publica cuando un dispositivo cae sin avisar.
brokertópicosQoSLast WillMosquitto
Broker
InfraestructuraEl servidor intermedio de MQTT: todo pasa por él y nada pasa sin él.
El ESP32 nunca habla directamente con el supervisor: publica en el broker y el broker entrega el mensaje a quienes se suscribieron al tópico. Esto permite cambiar el consumidor del dato sin tocar el firmware. También conserva estado: el mensaje retenido (el último valor de un tópico, entregado de inmediato a quien llega) y la sesión persistente (mensajes en cola mientras un cliente está desconectado). Allí viven también la autenticación y los permisos por tópico: quién puede publicar y quién solo puede leer.
MosquittoEMQXmensaje retenidosesión persistenteTLSACL
REST API
ProtocoloInterfaz sobre HTTP en la que cada dirección es un recurso y el cliente pregunta cuando lo necesita.
Es un modelo de pregunta y respuesta: alguien llama a `GET /api/temperatura` y recibe un JSON. La diferencia frente a MQTT es quién toma la iniciativa: en REST el cliente pide el dato cuando lo necesita; en MQTT el broker lo envía cuando cambia. En la práctica ambos conviven: MQTT para telemetría continua, REST para consultas bajo demanda, configuración e integración con sistemas que ya hablan HTTP. El ESP32 cumple los dos papeles: sirve sus propios endpoints (así funciona el portal de configuración integrado) y consume APIs externas.
HTTPJSONGET y POSTendpointESPAsyncWebServer
RS-485
HardwareEstándar eléctrico para llevar señales cientos de metros en un entorno con ruido.
No es un protocolo: solo es el medio físico y no dice nada sobre el formato del mensaje. El truco es la transmisión diferencial: el dato viaja como la diferencia de tensión entre dos hilos de un par trenzado, de modo que el ruido que entra en ambos se cancela en el receptor. Permite varios dispositivos en el mismo par, en topología de bus, con resistencias de 120 Ω en los dos extremos para evitar reflexiones. El ESP32 no habla RS-485 directamente: necesita un transceptor, como el MAX485, entre la UART y la línea.
par trenzadodiferencialMAX485terminación de 120 Ωhalf-duplex
Modbus
ProtocoloProtocolo industrial de 1979 que prácticamente todos los equipos de campo entienden.
Funciona por pregunta y respuesta: un maestro pregunta y el esclavo responde; ningún esclavo habla por su cuenta. Los datos viven en registros numerados, leídos y escritos mediante códigos de función. Tiene dos formas: RTU, binario sobre serie (normalmente RS-485), y TCP, el mismo modelo sobre Ethernet. Su fuerza es la ubicuidad; su debilidad es que no tiene semántica: el registro 40001 es solo un número de 16 bits y su significado está en el manual del fabricante, no en el protocolo.
maestro/esclavoregistrosRTUTCPcódigos de función
OPC UA
ProtocoloEstándar industrial moderno que transporta el dato junto con su significado.
Donde Modbus entrega un número aislado, OPC UA entrega un objeto con nombre, tipo, unidad y descripción: el servidor publica un modelo de información que el cliente puede explorar. Incluye seguridad en la propia especificación: certificados, autenticación y cifrado, en vez de depender de que la red sea confiable. El coste es el peso: es mucho más pesado que Modbus y por eso suele aparecer desde la capa de supervisión hacia arriba, no en el sensor más sencillo.
IEC 62541modelo de informacióncertificadoscliente/servidor
SCADA
SistemaLa capa de supervisión: reúne los datos de campo, los muestra, genera alarmas y guarda el histórico.
Supervisory Control and Data Acquisition. Es el sistema que habla con PLC y gateways, dibuja pantallas sinópticas, genera alarmas cuando un valor sale de su rango y conserva el histórico para analizarlo después. No hay que confundirlo con una HMI: la HMI es local y está vinculada a una máquina; SCADA ve toda la planta y normalmente se ejecuta en un servidor. Para el ESP32, SCADA suele ser el destino final del dato, directamente o a través de un broker MQTT.
pantallas sinópticasalarmashistóricoHMISCADA
IIoT
ContextoIndustrial Internet of Things: aplicar IoT a la planta industrial.
La diferencia frente al IoT de consumo no es la tecnología, sino la exigencia. Aquí los datos proceden de PLC, medidores de energía y sensores de proceso, a menudo mediante protocolos antiguos como Modbus, y deben llegar sin fallos a supervisores y bases de datos. Es lo que se llama integración OT/IT: conectar la red de operación con la red corporativa sin comprometer ninguna de las dos.
ModbusSCADAOPC UAOT/ITtelemetría