ESP32 - MQTT
Neste tutorial, vamos explorar como usar o ESP32 para enviar e receber dados de e para um broker MQTT usando o protocolo MQTT. Especificamente, vamos abordar:
- Estabelecer uma conexão entre o ESP32 e um broker MQTT.
- Programar o ESP32 para enviar dados a um broker MQTT publicando dados em um tópico MQTT.
- Programar o ESP32 para receber dados assinando um tópico MQTT.

Vamos mergulhar em dois cenários distintos:
- ESP32 com um broker MQTT online.
- ESP32 com um broker MQTT instalado no seu PC.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o ESP32 e o MQTT
Se você já conhece o protocolo MQTT, ótimo! Se não, você pode pesquisar na internet. Este tutorial é sobre usar o ESP32 para enviar e receber dados usando MQTT.
Aqui estão algumas formas de o ESP32 trabalhar com MQTT:
- Conectar o ESP32 a um broker MQTT online como o Mosquitto ou o AWS IoT.
- Conectar o ESP32 a um broker MQTT instalado no seu computador, como o Mosquitto ou o HiveMQ.
- Conectar o ESP32 a um broker MQTT rodando no seu Raspberry Pi, por exemplo, o Mosquitto.
- Conectar o ESP32 a um broker MQTT baseado em nuvem, como o Mosquitto ou o HiveMQ no AWS EC2.
Neste tutorial, vamos começar vendo se o ESP32 consegue se conectar a um broker Mosquitto online. Vamos fazer o ESP32 enviar e receber dados por esse broker pela internet.
Depois, vamos instalar o broker Mosquitto no nosso computador. Vamos conectar o ESP32 a esse broker local e continuar enviando e recebendo dados.
Quando terminar este tutorial, você pode explorar mais conferindo estes outros tutoriais:
Esses links trazem mais orientações sobre os assuntos relacionados.
Conectar o ESP32 a um broker MQTT online
Nesta parte, vamos aprender como conectar o ESP32 ao test.mosquitto.org, um broker MQTT online criado pelo Mosquitto. Observe que este broker deve ser usado apenas para fins de teste.
Código ESP32
O código ESP32 abaixo faz o seguinte:
- Conecta ao broker MQTT
- Assina um tópico
- Publica mensagens periodicamente no mesmo tópico que assinou
Passos Rápidos
- Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente do ESP32 no Arduino IDE.
- Faça a ligação como na imagem acima.
- Conecte a placa ESP32 ao seu PC por um cabo USB
- Abra o Arduino IDE no seu PC.
- Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
- Abra o Arduino IDE no seu PC
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação à esquerda do Arduino IDE
- Digite MQTT na caixa de pesquisa e procure a biblioteca MQTT de Joel Gaehwiler.
- Clique no botão Install para instalar a biblioteca MQTT.

- Digite ArduinoJson na caixa de pesquisa e procure a biblioteca ArduinoJson de Benoit Blanchon.
- Clique no botão Install para instalar a biblioteca ArduinoJson.

- Copie o código acima e abra no Arduino IDE
- Substitua as informações de WiFi (SSID e senha) no código pelas suas.
- No código, você vai ver a palavra 'YOUR-NAME' três vezes. Substitua essa palavra pelo seu nome ou por caracteres aleatórios (somente letras do alfabeto, sem espaços). Isso é necessário porque, se você não fizer a mudança, várias pessoas podem estar rodando este código ao mesmo tempo, o que pode causar conflitos, já que os IDs de cliente MQTT e os tópicos são iguais para todos.
- Clique no botão Upload no Arduino IDE para carregar o código no ESP32
- Abra o Serial Monitor
- Veja o resultado no Serial Monitor.
Como você pode observar, o ESP32 publica mensagens no broker MQTT e depois recebe a mesma mensagem de volta. Isso acontece porque o código fornecido assina o mesmo tópico no qual publica dados. Se você preferir que o ESP32 não receba a mensagem que ele mesmo publica, é fácil conseguir isso usando um tópico de SUBSCRIBE diferente do tópico de PUBLISH.
Conectar o ESP32 ao broker MQTT instalado no seu PC
Instalando o Broker MQTT Mosquitto
- Baixe o Broker MQTT Mosquitto
- Instale-o na unidade D: em vez da unidade C:. Evite instalar o broker Mosquitto na unidade C: para prevenir possíveis problemas.
Executar o broker MQTT Mosquitto
Agora, vamos verificar se o broker MQTT está funcionando corretamente seguindo estes passos:
- Vá até o diretório onde o Mosquitto foi instalado. Por exemplo: D:\Draft\mosquitto>
- Crie um novo arquivo chamado test.conf, copie o conteúdo abaixo e salve-o nesse diretório:
- Execute um Prompt de Comando como Administrador no seu PC. Vamos chamá-lo de Janela do Broker. Não feche essa janela até o final do tutorial.

- Execute os comandos abaixo, um por um:
- Você vai ver:
- Abra outro Prompt de Comando como Administrador no seu PC.
- Descubra o endereço IP do seu PC executando o comando abaixo:
- Anote o endereço IP para usar depois. No exemplo acima: 192.168.0.26
Teste se o Broker Mosquitto funciona
- Abra outro Prompt de Comando como Administrador no seu PC. Vamos chamá-lo de Janela do Assinante
- Assine um tópico executando os comandos abaixo, um por um (substitua pelo seu endereço IP):
- Abra outro Prompt de Comando como Administrador no seu PC. Vamos chamá-lo de Janela do Publicador
- Publique uma mensagem no mesmo tópico executando os comandos abaixo, um por um (substitua pelo seu endereço IP):
- Você vai ver:
Você vai ver que a mensagem é encaminhada para a Janela do Assinante assim:
Agora você instalou com sucesso o broker MQTT Mosquitto no seu PC. NÃO feche as três janelas: Janela do Broker, Janela do Assinante e Janela do Publicador. Vamos usá-las a seguir.
Código ESP32
O código ESP32 abaixo faz o seguinte:
- Conecta ao broker MQTT
- Assina um tópico
- Publica mensagens periodicamente em outro tópico
Passos Rápidos
- Copie o código acima e abra no Arduino IDE
- Substitua as informações de WiFi (SSID e senha) no código pelas suas.
- Substitua o endereço do broker MQTT no código (nome de domínio ou endereço IP).
- Clique no botão Upload no Arduino IDE para carregar o código no ESP32
Enviar mensagem do ESP32 para o PC via MQTT
O código do ESP32 publica dados no tópico MQTT esp32-001/send, e a Janela do Assinante no PC assina esse tópico para receber os dados.
- Abra o Serial Monitor, você vai ver o ESP32 publicar periodicamente uma mensagem em um tópico.
- Confira a Janela do Assinante, você vai ver que ela recebe a mensagem publicada pelo ESP32, como abaixo:
Enviar mensagem do PC para o ESP32 via MQTT
O ESP32 assina o tópico esp32-001/receive, e a Janela do Publicador no PC publica uma mensagem nesse tópico para enviá-la ao ESP32.
- Publique uma mensagem no tópico que o ESP32 assinou executando o seguinte comando na Janela do Publicador:
- Você vai ver que essa mensagem é recebida pelo ESP32 no Serial Monitor, como abaixo: