ESP32 e Arduino

ESP32 vs ESP8266 para Projetos MQTT: Memória, TLS, Periféricos e Custo

Está escolhendo entre o ESP32 e o ESP8266 para um dispositivo MQTT? Este comparativo aborda memória, capacidade de TLS, periféricos, consumo, suporte a bibliotecas e custo, com recomendações claras por tipo de projeto.

Placas de desenvolvimento ESP32 e ESP8266 lado a lado para um comparativo ESP32 vs ESP8266 com MQTT
Rode isso no seu próprio broker MQTTTenha um broker MQTT privado e gerenciado no plano Free e comece com exemplos de código prontos.
Teste grátis Exemplos de código Sem cartão de crédito

ESP32 vs ESP8266 é a primeira decisão de hardware na maioria dos projetos MQTT com Wi-Fi, e a resposta certa depende menos da velocidade bruta e mais da memória, do TLS e dos periféricos de que você precisa. Este comparativo percorre as diferenças que importam quando o seu dispositivo precisa ficar conectado a um broker por meses. Ao final, você vai saber qual chip comprar para o seu próximo sensor, atuador ou gateway.

A Resposta Curta

Escolha o ESP32 para projetos novos que precisam de conexões criptografadas, mais do que alguns poucos sensores, Bluetooth, atualizações over-the-air com folga ou qualquer tipo de processamento local. Escolha o ESP8266 para nós muito simples e sensíveis a custo, como um único relé ou sensor de temperatura em uma câmara fria de frigorífico, especialmente quando você já tem as placas ou um código comprovado.

O restante deste artigo explica o porquê.

Comparação de Especificações

A tabela compara o ESP32 clássico (módulos da classe ESP32-WROOM-32) com o ESP8266 (módulos da classe ESP-12). As variantes mais novas do ESP32 são discutidas mais abaixo.

Característica ESP8266 ESP32 (clássico)
CPU Tensilica L106 de núcleo único, 80/160 MHz Xtensa LX6 de dois núcleos, até 240 MHz
RAM de dados Cerca de 80 KB de RAM de dados do usuário, bem menos livre para o seu sketch 520 KB de SRAM
Wi-Fi 802.11 b/g/n, 2,4 GHz 802.11 b/g/n, 2,4 GHz
Bluetooth Não Bluetooth clássico e BLE
GPIO Cerca de 17, vários com restrições no boot Cerca de 34
ADC Um canal de 10 bits Até 18 canais, 12 bits
Criptografia em hardware Não Aceleração de AES, SHA e RSA
Outros periféricos UART, SPI, I2C (software), PWM UART, SPI, I2C, I2S, CAN (TWAI), toque, DAC, muitos canais PWM
Corrente em deep sleep Baixa Baixa, além do coprocessador ULP
Core Arduino esp8266 by ESP8266 Community esp32 by Espressif Systems
FreeRTOS Não (SDK non-OS por baixo do Arduino) Sim

Para os datasheets oficiais e as tabelas de variantes, consulte a documentação da Espressif.

Memória: A Diferença Que Mais Importa

O MQTT em si é leve. Uma conexão PubSubClient com um buffer pequeno cabe facilmente em qualquer um dos chips. A memória se torna o fator decisivo quando você adiciona o que produtos reais precisam.

No ESP8266, o Wi-Fi, a pilha TCP/IP e o core Arduino já usam boa parte da RAM, deixando um heap comparativamente pequeno para a sua aplicação. Uma sessão TLS precisa então de um bloco contíguo considerável para seus buffers de registro e verificações de certificado. Some uma biblioteca JSON, uma página web de configuração e um buffer MQTT de 2 KB, e você estará perto do limite. O dispositivo pode funcionar na sua bancada e falhar dias depois, porque o heap se fragmentou e o próximo handshake TLS não encontra um bloco grande o suficiente.

Os 520 KB de SRAM do ESP32 mudam isso. Você pode rodar TLS, um servidor web, um buffer MQTT maior e um documento JSON ao mesmo tempo com bastante folga, e muitos módulos ainda acrescentam PSRAM.

Regra prática: se o seu projeto com ESP8266 precisa de TLS e de qualquer coisa além de um loop simples de sensor, reserve tempo para ajustar a memória ou passe para o ESP32.

Capacidade de TLS

MQTT em produção deve usar TLS na porta 8883 com credenciais. Os dois chips conseguem, mas a experiência é diferente:

  1. Validação de certificado. O WiFiClientSecure do ESP32 usa mbedTLS e aceita um certificado raiz PEM com setCACert(). O ESP8266 usa BearSSL, que também valida as datas do certificado, então você precisa sincronizar a hora via NTP antes de conectar.
  2. Velocidade do handshake. A aceleração em hardware e os núcleos mais rápidos do ESP32 concluem os handshakes rapidamente. O ESP8266 é visivelmente mais lento, especialmente a 80 MHz, o que importa em dispositivos a bateria que se reconectam a cada despertar.
  3. Sessões simultâneas. Um ESP32 mantém com folga mais de uma conexão TLS, por exemplo MQTT mais um download OTA via HTTPS. Em um ESP8266, isso é arriscado.
  4. Ajuste de buffers. O ESP8266 só consegue reduzir os buffers TLS por meio da negociação de maximum fragment length quando o servidor a suporta, então não dá para contar com isso.

Nosso tutorial ESP8266 MQTT mostra a configuração exata do BearSSL, e o tutorial ESP32 MQTT mostra o equivalente no ESP32.

Periféricos e Sensores

O único ADC de 10 bits do ESP8266 é a sua limitação mais comum. Se você precisa de mais de uma entrada analógica, adiciona um ADC externo, como um ADS1115 via I2C. Vários de seus GPIOs também têm funções no boot, então a quantidade de pinos utilizáveis é menor do que parece.

O ESP32 oferece muitos canais de ADC, entradas de toque capacitivo, I2S para microfones e áudio, um controlador CAN (TWAI) para barramentos veiculares e industriais e Bluetooth Low Energy. O BLE é especialmente útil para gateways MQTT: o ESP32 pode coletar leituras de sensores BLE e publicá-las em um broker via Wi-Fi.

Suporte de Software e Bibliotecas

Os dois chips têm bom suporte no ecossistema Arduino, mas é no ESP32 que o desenvolvimento ativo acontece.

Biblioteca ESP8266 ESP32
PubSubClient Sim Sim
ArduinoMqttClient Sim Sim
AsyncMqttClient Sim, com ESPAsyncTCP Sim, com AsyncTCP
Cliente MQTT nativo do ESP-IDF (esp-mqtt) Não Sim, com suporte a MQTT 5
Tarefas FreeRTOS Não Sim

A base FreeRTOS do ESP32 importa para firmware MQTT. Você pode rodar o cliente de rede em uma tarefa e a amostragem dos sensores em outra, para que uma reconexão lenta ao broker não trave o seu loop de controle. No ESP8266, tudo compartilha um único loop, e chamadas bloqueantes longas disparam o watchdog. Leia mais sobre arquiteturas não bloqueantes em cliente MQTT assíncrono no ESP32.

Consumo de Energia

Os dois chips gastam a maior parte da energia no rádio. Em sensores a bateria que acordam, publicam e dormem, os fatores dominantes são a rapidez com que você consegue se conectar e por quanto tempo o rádio fica ligado, e não a corrente ociosa da CPU. O handshake TLS mais rápido do ESP32 pode compensar sua corrente ativa maior, e o seu coprocessador de ultrabaixo consumo pode monitorar um sensor enquanto os núcleos principais dormem. O ESP8266 continua sendo uma opção razoável para nós simples de acordar-publicar-dormir com MQTT sem criptografia dentro de uma rede confiável.

Custo e Disponibilidade

O ESP8266 costuma ser o módulo mais barato, e placas de desenvolvimento dos dois chips são baratas e fáceis de encontrar. Na maioria dos projetos, a diferença de preço é pequena em comparação com o sensor, o gabinete, a fonte de alimentação e o seu tempo de desenvolvimento. Gastar um pouco mais em um ESP32 muitas vezes economiza horas de ajuste de memória. Os preços mudam com frequência, então compare ofertas atuais de fornecedores confiáveis em vez de confiar em números antigos de fóruns.

E as Variantes Mais Novas do ESP32?

A família da Espressif cresceu bem além do ESP32 clássico:

  • ESP32-C3: RISC-V de núcleo único, Wi-Fi e BLE, baixo custo. É o substituto moderno natural de muitos projetos com ESP8266 e mantém o TLS confortável.
  • ESP32-S3: dois núcleos com instruções vetoriais, USB OTG e frequentemente PSRAM, bom para cargas de câmera, áudio e processamento na borda.
  • ESP32-C6: acrescenta Wi-Fi 6 e um rádio 802.15.4 para Thread e Zigbee, útil para gateways.

Se o ESP8266 atrai você apenas pelo custo, olhe primeiro para o ESP32-C3.

Checklist de Decisão

Responda a estas perguntas em ordem. O primeiro "sim" decide:

  1. Você precisa de Bluetooth, CAN, I2S, toque ou mais de uma entrada analógica? Escolha o ESP32.
  2. O dispositivo vai usar TLS e rodar um servidor web, OTA ou payloads JSON grandes? Escolha o ESP32.
  3. Você precisa de processamento local, múltiplas tarefas ou MQTT 5 no dispositivo? Escolha o ESP32 (ESP-IDF).
  4. É um único sensor ou relé com MQTT sem criptografia em uma rede confiável, com placas ESP8266 que você já tem? O ESP8266 serve.
  5. Ainda em dúvida? Escolha um ESP32-C3 para uma opção moderna, de baixo custo e amigável ao TLS.

O Lado do Broker É o Mesmo

Seja qual for o chip escolhido, para o broker não faz diferença. Os dois se conectam com os mesmos pacotes MQTT 3.1.1 aos mesmos topics. Comece os testes no broker.connectmq.com, o servidor MQTT público (gratuito) do ConnectMQ, com um client ID e um prefixo de topic únicos. Ele serve para testes e protótipos, não para dados de produção:

mosquitto_sub -h broker.connectmq.com -p 1883 -i compare-91c4 -t "connectmq/demo/compare-91c4/#" -v

Depois grave a mesma estrutura de topics em um ESP32 e em um ESP8266 e compare os tempos de reconexão e o heap livre no seu próprio ambiente. Esse pequeno experimento diz mais do que qualquer datasheet. O tutorial IoT com ESP32 é um bom próximo passo depois da escolha, e o PubSubClient é a biblioteca para começar nas duas placas.

Conecte Qualquer um dos Chips ao ConnectMQ

Quando o seu dispositivo sair da bancada, dê a ele credenciais privadas em um broker MQTT gerenciado. O ConnectMQ roda MQTT 3.1.1 e 5.0 em TCP 1883, TLS 8883 e WebSockets, com um portal que mostra topics ao vivo, dispositivos conectados e alertas por limite, seja a sua frota de ESP32, de ESP8266 ou dos dois, em uma fazenda no interior ou em uma planta em Joinville. Para entender melhor como escolher a infraestrutura, veja nosso guia sobre as opções de broker MQTT na nuvem. Crie um broker Serverless gratuito em app.connectmq.com, sem precisar de cartão de crédito.

Perguntas frequentes

O ESP8266 está obsoleto?

Não está obsoleto, mas já não é a melhor escolha para a maioria dos projetos novos. Continua servindo para nós simples, enquanto o ESP32-C3 cobre o mesmo nicho de baixo custo com mais memória e TLS melhor.

O ESP8266 consegue usar MQTT sobre TLS?

Sim, com BearSSL e um gerenciamento cuidadoso de memória. Sincronize o relógio, mantenha o buffer MQTT pequeno e evite a fragmentação do heap, e ele funciona de forma confiável para sensores simples.

O ESP32 suporta MQTT 5?

O cliente MQTT do ESP-IDF suporta MQTT 5. As bibliotecas Arduino populares, PubSubClient e ArduinoMqttClient, usam MQTT 3.1.1, que todos os principais brokers ainda suportam.

Dispositivos ESP32 e ESP8266 podem compartilhar o mesmo broker?

Sim. O MQTT é independente de hardware, então os dois chips podem publicar e se inscrever nos mesmos topics do mesmo broker, desde que cada dispositivo use um client ID único.

Artigos relacionados

Exemplo de MQTT com ESP-IDF: Monte um Cliente esp-mqtt do Zero

Monte um projeto ESP-IDF a partir de uma pasta vazia com o componente esp-mqtt: configuração do Wi-Fi em modo station, o handler de eventos MQTT, publicação e inscrição, propriedades do MQTT 5 e TLS com o bundle de certificados.

8 min de leitura

Usando os Recursos do MQTT 5 do esp-mqtt no ESP32 com ESP-IDF

Um projeto ESP-IDF prático que ativa o MQTT 5.0 no esp-mqtt e usa user properties, expiração de mensagens, topic aliases, expiração de sessão e response topics com um broker MQTT 5 real.

8 min de leitura

Todos os artigos →

Seu broker MQTT privado está a poucos cliques de distância

Crie uma conta, receba as credenciais do seu broker e conecte seu primeiro dispositivo — sem servidores para instalar, atualizar ou escalar.