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

Vamos analisar dois cenários distintos:
- Usando o ESP8266 com um broker MQTT online.
- Usando o ESP8266 com um broker MQTT instalado no seu computador pessoal.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o ESP8266 e o MQTT
Se você ainda não conhece o protocolo MQTT, pode encontrar informações sobre ele online. Este tutorial foca no uso do ESP8266 para enviar e receber dados por meio do MQTT.
Aqui estão algumas maneiras de usar o ESP8266 com o MQTT:
- Você pode conectar o ESP8266 a um broker MQTT online, como o Mosquitto ou o AWS IoT.
- Como alternativa, você pode ligar o ESP8266 a um broker MQTT instalado no seu computador, como o Mosquitto ou o HiveMQ.
- Se você tiver um Raspberry Pi, o ESP8266 pode se conectar a um broker MQTT executado nele, por exemplo, o Mosquitto.
- Além disso, o ESP8266 pode ser conectado a um broker MQTT baseado na nuvem, como o Mosquitto ou o HiveMQ no AWS EC2.
Neste tutorial, vamos começar testando se o ESP8266 consegue se conectar a um broker Mosquitto online. Vamos demonstrar a capacidade do ESP8266 de enviar e receber dados por meio desse broker pela internet.
Em seguida, vamos orientar você na configuração do broker Mosquitto no seu computador. O ESP8266 então se conectará a esse broker local, permitindo que você continue enviando e recebendo dados.
Depois de concluir este tutorial, você pode se aprofundar explorando estes tutoriais adicionais:
Esses recursos trarão mais informações sobre os assuntos relacionados.
Conectar o ESP8266 a um broker MQTT online
Nesta parte, vamos aprender a conectar o ESP8266 ao test.mosquitto.org, um broker MQTT online criado pelo Mosquitto. Observe que esse broker deve ser usado apenas para fins de teste.
Código ESP8266
O código ESP8266 abaixo faz o seguinte:
- Conecta-se ao broker MQTT
- Assina um tópico
- Publica mensagens periodicamente no mesmo tópico que assina
Passos Rápidos
Para começar com o ESP8266 no Arduino IDE, siga estes passos:
- Confira o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se for a primeira vez que você usa o ESP8266.
- Conecte a placa ESP8266 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
- 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 com o Arduino IDE
- Substitua as informações de WiFi (SSID e senha) no código pelas suas.
- No código, você 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 alteração, várias pessoas podem estar executando este código ao mesmo tempo, o que pode causar conflitos, já que os IDs de cliente MQTT e os tópicos são os mesmos para todos.
- Clique no botão Upload no Arduino IDE para fazer o upload do código para o ESP8266
- Abra o Serial Monitor
- Veja o resultado no Serial Monitor.
Como você pode ver, o ESP8266 publica mensagens no broker MQTT e depois recebe de volta a mesma mensagem. Isso acontece porque o código acima assina o mesmo tópico no qual publica dados. Se você não quiser que o ESP8266 receba a mensagem que ele publica, basta tornar o tópico de SUBSCRIBE diferente do tópico de PUBLISH.
Conectar o ESP8266 ao broker MQTT instalado no seu PC
Instalando o Broker MQTT Mosquitto
- Baixe o Mosquitto MQTT Broker
- 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:\mqtt\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 o feche até o final do tutorial.

- Execute os comandos abaixo, um por um:
- Você 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 uso posterior. No exemplo acima: 192.168.0.26
Testar 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ê verá:
Você verá que a mensagem é encaminhada para a Janela do Assinante da seguinte forma:
Agora você instalou com sucesso o broker MQTT Mosquitto no seu PC. Por favor, NÃO feche as três janelas: Janela do Broker, Janela do Assinante e Janela do Publicador. Vamos usá-las a seguir.
Código ESP8266
O código ESP8266 abaixo faz o seguinte:
- Conecta-se ao broker MQTT
- Assina um tópico
- Publica mensagens periodicamente em outro tópico
Passos Rápidos
- Copie o código acima e abra com o 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 fazer o upload do código para o ESP8266
Enviar mensagem do ESP8266 para o PC via MQTT
O código do ESP8266 publica dados no tópico MQTT esp8266-001/send, e a Janela do Assinante no PC assina esse tópico para receber os dados.
- Abra o Serial Monitor e você verá o ESP8266 publicando periodicamente uma mensagem em um tópico.
- Verifique a Janela do Assinante e você verá que ela recebe a mensagem publicada pelo ESP8266 como abaixo:
Enviar mensagem do PC para o ESP8266 via MQTT
O ESP8266 assina o tópico esp8266-001/receive, e a Janela do Publicador no PC publica uma mensagem nesse tópico para enviá-la ao ESP8266.
- Publique uma mensagem no tópico que o ESP8266 assinou executando o seguinte comando na Janela do Publicador:
- Você verá que essa mensagem é recebida pelo ESP8266 no Serial Monitor como abaixo: