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.
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:
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
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:
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.
Precisaremos empilhar o Ethernet Shield em cima do Arduino e conectá-lo à rede assim:
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…
Procure pela Biblioteca MQTT da Adafruit e clique em instalar:
Você será solicitado a instalar também as dependências da biblioteca. Prossiga e clique em “Instalar tudo”.
Depois de instalar as bibliotecas de suporte, você pode abrir um exemplo navegando até Arquivo > Exemplos > Biblioteca Adafruit MQTT > 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:
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:
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:
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”
Agora obtemos uma captura ao vivo dos dados que nosso Arduino está enviando para o corretor MQTT. Também podemos baixar dados históricos.
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.
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.