Pular para o conteúdo principal

ESP32 IoT Development Frameworks

Guia de referência para seleção e comparação dos principais frameworks de desenvolvimento embarcado para ESP32 em aplicações industriais (IIoT).


Visão geral​

FrameworkLinguagemNívelMultitarefaMQTT nativoOTA nativoTLS/mTLSWokwi
Arduino (via PlatformIO)C / C++InicianteLoop único● PubSubClient◐ Biblioteca●●
ESP-IDF (Espressif oficial)C / C++Avançado● FreeRTOS● esp-mqtt● Nativo● mbedTLS◐
MicroPythonPython 3Iniciante◐ uasyncio● umqtt◐ Manual● ussl●
Mongoose OSC / JavaScriptAvançado● FreeRTOS● Nativo● Nativo● mTLS○
Zephyr RTOSC / C++Avançado● Preemptivo● Zephyr MQTT● MCUboot● Nativo○
ESPHomeYAMLIniciante○ Loop assínc.● Nativo YAML● Nativo● TLS○
TasmotaC / C++Iniciante○ Loop interno● Nativo● Nativo● TLS○

Legenda: ● Suporte nativo · ◐ Parcial / via biblioteca · ○ Não suportado


Perfil dos frameworks​

Arduino Framework​

Stack da disciplina · Adotado nas Semanas 1–15

A abordagem mais popular para prototipagem com ESP32. API simplificada com setup() e loop(), ecossistema massivo de bibliotecas e documentação abundante em português.

Pontuações (0–10)

CritérioPontuação
Facilidade de uso9,2
Performance6,2
Ecossistema de bibliotecas9,5
Adequação IIoT7,0

Métricas-chave

ParâmetroValor
Curva de aprendizadoBaixa
MultitarefaLoop único (loop())
Biblioteca MQTTPubSubClient (knolleary)
Flash mínimo~300 KB
Suporte WokwiCompleto

Casos de uso típicos

  • Sensores IoT com MQTT (DHT22, LDR, BME280, DS18B20)
  • Protótipos rápidos e provas de conceito
  • Integração com Node-RED, InfluxDB e Grafana via Wokwi
  • Disciplinas e cursos de IoT com foco prático

Instalação via PlatformIO (platformio.ini)

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
lib_deps =
knolleary/PubSubClient @ ^2.8
beegee-tokyo/DHTesp @ ^1.19
bblanchon/ArduinoJson @ ^7.0

Referências


ESP-IDF​

Espressif IoT Development Framework — framework nativo oficial

Framework oficial da Espressif com acesso completo ao hardware e FreeRTOS integrado. Controle granular de tarefas, memória, Wi-Fi e Bluetooth. Referência para produtos em produção e certificação industrial.

Pontuações (0–10)

CritérioPontuação
Facilidade de uso3,0
Performance9,8
Ecossistema de bibliotecas7,5
Adequação IIoT9,5

Métricas-chave

ParâmetroValor
Curva de aprendizadoAlta
MultitarefaFreeRTOS nativo (tasks, queues, semaphores)
Biblioteca MQTTesp-mqtt (componente oficial)
Flash mínimo~1 MB
Suporte WokwiParcial (simulação limitada de componentes IDF)
Versão estável atualESP-IDF v5.x

Casos de uso típicos

  • Firmware de produção industrial com requisitos de tempo real
  • Controle de múltiplas tarefas concorrentes com FreeRTOS
  • Certificação Wi-Fi, Bluetooth e Matter (obrigatório usar IDF)
  • Produtos com requisitos de segurança (Secure Boot, Flash Encryption)
  • TinyML com TensorFlow Lite Micro no ESP32

Exemplo mínimo de task FreeRTOS

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"

static const char *TAG = "sensor";

void sensor_task(void *pvParameters) {
while (1) {
ESP_LOGI(TAG, "Lendo sensor...");
vTaskDelay(pdMS_TO_TICKS(1000));
}
}

void app_main(void) {
xTaskCreate(sensor_task, "sensor_task", 4096, NULL, 5, NULL);
}

Referências


MicroPython​

Python 3 para microcontroladores com recursos restritos

Implementação enxuta do Python 3 para microcontroladores. Execução interativa via REPL, ideal para prototipagem rápida por quem já conhece Python. Menor performance que C, mas produtividade elevada.

Pontuações (0–10)

CritérioPontuação
Facilidade de uso8,8
Performance4,5
Ecossistema de bibliotecas7,0
Adequação IIoT6,5

Métricas-chave

ParâmetroValor
Curva de aprendizadoBaixa
Multitarefauasyncio (cooperative)
Biblioteca MQTTumqtt.simple / umqtt.robust
Flash mínimo~1,1 MB (firmware MicroPython)
Suporte WokwiCompleto (MicroPython embutido no simulador)
REPL interativoUSB Serial / WebREPL

Casos de uso típicos

  • Prototipagem por desenvolvedores com background Python
  • Scripts de automação e coleta de dados em campo
  • Educação em IoT com sintaxe familiar
  • Dashboards locais com urequests para APIs REST

Exemplo: publicar MQTT com umqtt

from umqtt.simple import MQTTClient
import network, time

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect("SSID", "senha")
while not wlan.isconnected():
time.sleep(0.5)

client = MQTTClient("esp32", "broker.hivemq.com")
client.connect()
client.publish(b"fabrica/linha1/temperatura", b"25.3")
client.disconnect()

Referências


Mongoose OS​

mOS — firmware orientado à produção com OTA e integração de nuvem

Framework orientado à produção com suporte a OTA (Over-The-Air) nativo, gerenciamento de dispositivos e integração direta com AWS IoT, Google Cloud IoT e Azure. Lógica de negócio em JavaScript via engine mJS.

Pontuações (0–10)

CritérioPontuação
Facilidade de uso5,5
Performance8,0
Ecossistema de bibliotecas6,0
Adequação IIoT8,8

Métricas-chave

ParâmetroValor
Curva de aprendizadoMédia
MultitarefaFreeRTOS
Biblioteca MQTTNativo (built-in)
OTA nativoSim — via mos update ou HTTPS
TLS/mTLSSim — mTLS com X.509 por dispositivo
Suporte WokwiNão suportado
Integração nuvemAWS IoT Core, Azure IoT Hub, GCP IoT

Casos de uso típicos

  • Frotas de dispositivos com atualizações remotas (OTA) automatizadas
  • Integração nativa com plataformas de nuvem (AWS, Azure, GCP)
  • Produtos IoT comerciais com device management e provisionamento
  • Ambientes que exigem mTLS por dispositivo desde o provisionamento

Referências


Zephyr RTOS​

Linux Foundation · tempo real · segurança funcional

RTOS open-source da Linux Foundation com foco em segurança funcional, suporte a múltiplas arquiteturas e conformidade com padrões industriais. Crescente adoção em dispositivos médicos, automotivos e industriais críticos.

Pontuações (0–10)

CritérioPontuação
Facilidade de uso2,2
Performance9,6
Ecossistema de bibliotecas6,8
Adequação IIoT9,2

Métricas-chave

ParâmetroValor
Curva de aprendizadoMuito alta
MultitarefaPreemptivo com prioridades e SMP
Biblioteca MQTTZephyr MQTT (subsys/net/lib/mqtt)
OTA nativoSim — MCUboot bootloader
Segurança funcionalIEC 61508 / ISO 26262
Suporte WokwiNão suportado
Arquiteturas suportadasARM, RISC-V, x86, ESP32, ARC

Casos de uso típicos

  • Sistemas industriais críticos com requisitos de segurança funcional (IEC 61508)
  • Dispositivos médicos e automotivos conectados (ISO 26262)
  • Ambientes multi-plataforma onde o mesmo código-base roda em ARM e ESP32
  • Aplicações que exigem determinismo real (latência garantida, sem jitter)

Referências


ESPHome​

Framework declarativo baseado em YAML para automação predial

Framework declarativo baseado em YAML para configurar firmware ESP32 sem escrever código C. Fortemente integrado ao Home Assistant e protocolos de automação predial. Geração de firmware por compilação de YAML.

Pontuações (0–10)

CritérioPontuação
Facilidade de uso9,5
Performance6,8
Ecossistema de bibliotecas8,2
Adequação IIoT5,5

Métricas-chave

ParâmetroValor
Curva de aprendizadoMínima
MultitarefaLoop assíncrono interno
Biblioteca MQTTNativo (declarado em YAML)
OTA nativoSim — via dashboard ESPHome
ExtensívelComponentes customizados em C++
Suporte WokwiNão suportado
IntegraçãoHome Assistant, Node-RED, Grafana

Exemplo: sensor DHT22 + MQTT em YAML

esphome:
name: sensor-hvac

esp32:
board: esp32dev
framework:
type: arduino

wifi:
ssid: "MinhaRede"
password: "minha_senha"

mqtt:
broker: 192.168.1.100
topic_prefix: fabrica/linha1

sensor:
- platform: dht
pin: GPIO4
model: DHT22
temperature:
name: "Temperatura"
humidity:
name: "Umidade"
update_interval: 10s

Casos de uso típicos

  • Automação predial e smart home (BAS, HVAC, iluminação, controle de acesso)
  • Integração com Home Assistant para dashboards e automações
  • Sensores de ambiente sem necessidade de programação em C
  • Retrofit de dispositivos existentes com lógica declarativa

Referências


Tasmota​

Firmware alternativo open-source para ESP32/ESP8266

Firmware alternativo open-source para ESP32/ESP8266 com interface web integrada, OTA, suporte a centenas de dispositivos e MQTT integrado por padrão. Configuração via browser, sem necessidade de IDE para uso básico.

Pontuações (0–10)

CritérioPontuação
Facilidade de uso9,0
Performance6,5
Ecossistema de bibliotecas8,0
Adequação IIoT5,8

Métricas-chave

ParâmetroValor
Curva de aprendizadoMínima
MultitarefaLoop interno (sem FreeRTOS exposto)
MQTTNativo — configurado via interface web
OTA nativoSim — via interface web ou MQTT
ConfiguraçãoBrowser (sem IDE)
Suporte WokwiNão suportado
Dispositivos suportados1.000+ (tomadas, relés, sensores, medidores)

Casos de uso típicos

  • Retrofit de tomadas e interruptores Wi-Fi inteligentes existentes
  • Monitoramento de energia com MQTT sem escrita de código
  • Integração rápida com Node-RED, Home Assistant e Grafana
  • Laboratórios onde o foco está na plataforma IoT, não no firmware

Referências


Guia de decisão rápida​

CenárioFramework recomendado
Aprendizado / disciplina de IoTArduino + PlatformIO
Simulação sem hardware físicoArduino + Wokwi
Firmware industrial em produçãoESP-IDF ou Zephyr RTOS
Dev com background PythonMicroPython
OTA + gestão de frota + nuvemMongoose OS
Automação predial / BAS / HVACESPHome + Home Assistant
Retrofit rápido sem escrita de códigoTasmota
Requisitos de segurança funcional (IEC 61508)Zephyr RTOS
Múltiplas tarefas concorrentes (tempo real)ESP-IDF ou Zephyr RTOS
Protótipo Python rápido no WokwiMicroPython

Notas de compatibilidade com a stack da disciplina​

Arduino + PlatformIO é o framework adotado nesta disciplina

Todas as atividades práticas das Semanas 1 a 11 e o Projeto Final (Semanas 12–15) utilizam Arduino framework via PlatformIO, com simulação no Wokwi. Os demais frameworks são apresentados como referência para o mercado e para o Projeto Final de grupos que optarem por aprofundamento.

FrameworkNode-REDInfluxDBGrafanaWokwiPlatformIO
Arduino● via MQTT● via MQTT→Node-RED●●●
ESP-IDF● via MQTT● via MQTT→Node-RED●◐●
MicroPython● via umqtt● via umqtt→Node-RED●●○ (thonny/rshell)
Mongoose OS● via MQTT● via MQTT→Node-RED●○○ (mos tool)
Zephyr RTOS● via MQTT● via MQTT→Node-RED●○◐ (experimental)
ESPHome● nativo● via MQTT→Node-RED●○○ (esphome CLI)
Tasmota● nativo● via MQTT→Node-RED●○○ (compilação própria)

Legenda: ● Suporte completo · ◐ Parcial · ○ Não suportado / não aplicável