Arduino - MQTT
Neste tutorial, vamos aprender a usar o Arduino para enviar/receber dados de um broker MQTT usando o protocolo MQTT. Em detalhes, vamos aprender:
- Como conectar o Arduino a um broker MQTT
- Como programar o Arduino para enviar dados ao broker MQTT publicando dados em um tópico MQTT
- Como programar o Arduino para receber dados inscrevendo-se em um tópico MQTT.

Vamos explorar dois casos de uso diferentes:
- Usando o Arduino com um broker MQTT online.
- Usando o Arduino com o broker MQTT instalado no seu PC.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre Arduino e MQTT
Vamos supor que você já esteja familiarizado com o protocolo MQTT. Se não estiver, pesquise na Internet. Este tutorial foca em programar o Arduino para enviar e receber dados usando o protocolo MQTT.
Abaixo estão casos de uso do Arduino com MQTT:
- O Arduino se conecta a um broker MQTT online, por exemplo: broker Mosquitto online, AWS IoT...
- O Arduino se conecta a um broker MQTT instalado no seu PC, por exemplo: broker Mosquitto, broker HiveMQ
- O Arduino se conecta a um broker MQTT instalado no seu Raspberry Pi, por exemplo: broker Mosquitto
- O Arduino se conecta a um broker MQTT instalado na nuvem, por exemplo: broker Mosquitto ou HiveMQ na AWS EC2
Neste tutorial, vamos começar verificando rapidamente se o Arduino consegue se conectar a um broker Mosquitto online. O Arduino vai publicar e se inscrever nesse broker pela internet.
Em seguida, vamos instalar o broker Mosquitto no nosso PC. Depois, vamos conectar o Arduino ao broker MQTT instalado no nosso PC, continuando a publicar e receber dados por meio desse broker local.
Depois de concluir este tutorial, você pode ir além aprendendo sobre Arduino com MQTT nos seguintes tutoriais:
Conectar o Arduino a um broker MQTT online
Nesta parte, vamos aprender a conectar o Arduino 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 Arduino
O código Arduino abaixo faz o seguinte:
- Conecta-se ao broker MQTT
- Inscreve-se em um tópico
- Publica mensagens periodicamente no mesmo tópico em que está inscrito
Passos Rápidos
- Se esta é a primeira vez que você usa o Arduino Uno R4, veja como configurar o ambiente para o Arduino Uno R4 na Arduino IDE.
- Abra a Arduino IDE no seu PC
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação à esquerda da 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-o na 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 (apenas letras, sem espaços). Isso é necessário porque, se você não fizer a alteração, pode haver várias pessoas executando este código ao mesmo tempo, o que pode causar conflitos, já que os IDs de cliente MQTT e os tópicos seriam os mesmos para todos.
- Clique no botão Upload na Arduino IDE para carregar o código no Arduino
- Abra o Serial Monitor
- Veja o resultado no Serial Monitor.
Como você pode ver, o Arduino publica mensagens no broker MQTT e depois recebe de volta a mesma mensagem. Isso acontece porque o código acima se inscreve no mesmo tópico em que publica os dados. Se você não quiser que o Arduino receba a mensagem que ele mesmo publica, basta fazer o tópico de SUBSCRIBE ser diferente do tópico de PUBLISH.
Conectar o Arduino 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 Broker Window. Não feche esta janela 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 usar depois. 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 Subscriber Window
- Inscreva-se em 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 Publisher Window
- 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 Subscriber Window da seguinte forma:
Pronto, você instalou com sucesso o broker MQTT Mosquitto no seu PC. NÃO feche as três janelas: Broker Window, Subscriber Window e Publisher Window. Vamos usá-las a seguir.
Código Arduino
O código Arduino abaixo faz o seguinte:
- Conecta-se ao broker MQTT
- Inscreve-se em um tópico
- Publica mensagens periodicamente em outro tópico
Passos Rápidos
- Copie o código acima e abra-o na 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 na Arduino IDE para carregar o código no Arduino
Enviar mensagem do Arduino para o PC via MQTT
O código do Arduino publica dados no tópico MQTT arduino-001/send, e a Subscriber Window no PC se inscreve nesse tópico para receber os dados.
- Abra o Serial Monitor e você verá o Arduino publicar periodicamente uma mensagem em um tópico.
- Verifique a Subscriber Window, você verá que ela recebe a mensagem publicada pelo Arduino, como abaixo:
Enviar mensagem do PC para o Arduino via MQTT
O Arduino se inscreve no tópico arduino-001/receive, e a Publisher Window no PC publica uma mensagem nesse tópico para enviá-la ao Arduino.
- Publique uma mensagem no tópico em que o Arduino está inscrito executando o seguinte comando na Publisher Window:
- Você verá essa mensagem ser recebida pelo Arduino no Serial Monitor, como abaixo: