Começando com MQTT e Arduino Uno

Ari Mahpour
|  Criada: Outubro 19, 2021  |  Atualizada: Julho 1, 2024
Iniciando com MQTT

No mundo de hoje, onde dispositivos conectados se tornaram onipresentes, o termo Internet das Coisas (IoT) se tornou a descrição de fato para "dispositivo que está conectado à internet". Embora este acrônimo, glorificado e em camel case, seja belo por direito próprio, há muito mais em "dispositivos conectados à internet" do que as pessoas percebem. Neste artigo, gostaria de mergulhar mais fundo em um dos protocolos mais prevalentes usados em dispositivos IoT: o protocolo MQ Telemetry Transport (MQTT). Vamos cobrir brevemente o que é, como funciona e o que há de novo sobre ele versus outras tecnologias usadas por aí. Também vamos passar por um exemplo abrangente usando um dispositivo Arduino.

O Que e Por Que do MQTT

Em uma configuração típica de cliente-servidor, temos um provedor (ou seja, os próprios dispositivos) que publica dados de sensores no servidor e um consumidor que solicita visualizar esses dados de sensores do servidor. O MQTT não é diferente. É um protocolo leve usado para comunicar entre dispositivos. Os dispositivos normalmente "publicam" (ou seja, enviam) dados para um "broker" MQTT (ou servidor), que então é mantido para ser servido a outros dispositivos ou aplicações web. Outro dispositivo ou aplicação web irá "subscrever" esse conjunto de dados (ou seja, solicitar os dados) do broker MQTT e, então, o broker MQTT entrega esses dados a eles. Pense nisso realmente como apenas um servidor web glorificado com duas grandes exceções:

  1. Os pacotes de dados são muito leves (o que melhora a velocidade, eficiência e custo)
  2. MQTT pode usar outros modos de comunicação além da internet (por exemplo, Bluetooth)
Figure 1: MQTT Broker with Devices
Figura 1: Broker MQTT com Dispositivos

Pelas duas razões mencionadas acima, o MQTT tornou-se um protocolo muito popular com dispositivos IoT. Historicamente, as pessoas usariam solicitações HTTP POST/GET para alcançar essa forma de comunicação dispositivo-servidor, mas isso limitava a capacidade de usar outros dispositivos de comunicação, como Bluetooth ou ZigBee. Já que o MQTT é agnóstico nesse aspecto, agora podemos ter capacidades de passagem de mensagens dentro de uma rede baseada em malha usando MQTT sem nunca conectar à internet

Iniciando com MQTT

Existem muitas maneiras de começar com o MQTT, incluindo o projeto de uma solução completa de ponta a ponta. Para simplificar, utilizaremos um serviço gratuito de corretor MQTT fornecido pela Adafruit neste exemplo. Isso nos permitirá focar apenas no lado do cliente do processo de desenvolvimento. Para começar, você precisará do seguinte:

  1. Dispositivo Arduino (Este exemplo usa o Arduino Uno)
  2. Shield de Arduino que suporta conectividade à internet (por exemplo, Arduino Ethernet Shield) ou um dispositivo compatível com Arduino baseado em Wifi, como o ESP8266.
  3. Software Arduino IDE
  4. Conta com Adafruit IO.

Há algumas coisas que precisamos fazer primeiro para configurar nosso ambiente. Vamos primeiro configurar nosso hardware. Vou usar um Arduino Uno e um Arduino Ethernet Shield conectados à minha rede local.

Figure 2: Arduino Uno and Arduino Ethernet Shield side by side
Figura 2: Arduino Uno e Arduino Ethernet Shield lado a lado

Precisaremos empilhar o Ethernet Shield em cima do Arduino e conectá-lo à rede assim:

Figure 3: Arduino Uno and Arduino Ethernet Shield hooked up together and plugged in
Figura 3: Arduino Uno e Arduino Ethernet Shield conectados juntos e ligados

Uma vez que tenhamos configurado nosso hardware, vamos abrir o Arduino IDE e instalar as bibliotecas necessárias. Abra o Arduino IDE e navegue até Ferramentas > Gerenciar Bibliotecas…

Figure 4: Manage Libraries menu option
Figura 4: Opção do menu Gerenciar Bibliotecas

Procure pela Biblioteca MQTT da Adafruit e clique em instalar:

Figure 5: Library Manager
Figura 5: Gerenciador de Bibliotecas

Você será solicitado a instalar também as dependências da biblioteca. Prossiga e clique em “Instalar tudo”.

Figure 6: Library Dependencies Dialog
Figura 6: Diálogo de Dependências da Biblioteca

Depois de instalar as bibliotecas de suporte, você pode abrir um exemplo navegando até Arquivo > Exemplos > Biblioteca Adafruit MQTT > mqtt_ethernet.

Figure 7: Menu navigation for the mqtt_ethernet example
Figura 7: Navegação do menu para o exemplo mqtt_ethernet

Neste ponto, precisamos fazer uma pausa e pegar nossas credenciais da nossa conta Adafruit IO. Faça login no Adafruit IO e clique em “Minha Chave” no topo:

Figure 8: My Key Menu Option
Figura 8: Opção do Menu Minha Chave

Agora volte ao seu exemplo de esboço Arduino mqtt_ethernet e preencha os campos AIO_USERNAME e AIO_KEY com os campos “Nome de Usuário” e “Chave Ativa” localizados na sua conta Adafruit IO. Certifique-se de que seu dispositivo está conectado e então clique em Upload:

Figure 9: Arduino Sketch ready for the upload
Figura 9: Sketch do Arduino pronto para o upload

Para visualizar o status do dispositivo (e para garantir que está conectado ao corretor MQTT) navegue até Ferramentas > Monitor Serial. Você deverá ver uma saída que se parece com isso:

Figure 10: Serial Monitor output of the Arduino mqtt_ethernet example
Figura 10: Saída do Monitor Serial do exemplo Arduino mqtt_ethernet

Neste ponto, confirmamos que os dados estão sendo enviados com sucesso para o corretor MQTT. Para dar uma olhada nos dados reais no servidor, vamos voltar à nossa conta Adafruit IO e clicar em “Feeds” e depois em “photocell”

Figure 11: Adafruit IO Feeds
Figura 11: Feeds da Adafruit IO

Agora obtemos uma captura ao vivo dos dados que nosso Arduino está enviando para o corretor MQTT. Também podemos baixar dados históricos.

Figure 12: Live and historical data sent to the MQTT broker from the Arduino
Figura 12: Dados ao vivo e históricos enviados para o broker MQTT a partir do Arduino

Parabéns! Você configurou um dispositivo habilitado para MQTT e publicou seus dados em um broker MQTT. Agora, dê o próximo passo construindo seus próprios sensores personalizados e publicando os dados no seu broker MQTT.

Conclusão

Neste artigo, aprendemos o que é MQTT, por que é usado e como implementá-lo em um microcontrolador. Também demonstramos como começar com um serviço de broker MQTT gratuito e visualizar os dados no servidor deles. Agora, você deve se sentir confortável para iniciar seu próprio sketch no Arduino baseado no exemplo que usamos para publicar seus próprios dados de sensores no broker MQTT e visualizá-los na nuvem.

Sobre o autor

Sobre o autor

Ari is an engineer with broad experience in designing, manufacturing, testing, and integrating electrical, mechanical, and software systems. He is passionate about bringing design, verification, and test engineers together to work as a cohesive unit.

Recursos relacionados

Retornar a página inicial
Thank you, you are now subscribed to updates.