Implementando com MQTT

Implementando com MQTT

Nesta quarta postagem sobre o protocolo MQTT apresentaremos um panorama geral sobre este padrão e sua associação com a IoT (Internet of Things – Internet das coisas). Em nossa primeira postagem, ‘Conhecendo o protocolo MQTT’, mencionamos que a conexão com a internet é a primeira condição para que as “coisas” que integram o contexto de IoT se tornem inteligentes, visto que o conceito de Internet das Coisas compreende muito mais do que o controle de um sistema de iluminação.

MQTT_IoT_Automacao_Microcontrolador_Arduino

A Internet das Coisas está mudando a forma como nos relacionamos com as “coisas” a nossa volta, dispositivos inteligentes já são uma realidade e estão presentes em nosso meio, em áreas como segurança, meio ambiente, mobilidade e outras. Acredita-se que em pouco tempo o conceito de IoT estará presente em todo o mundo. Não apenas em função da facilidade de conexão, mas também em função da acessibilidade de custo dos dispositivos que integram este cenário. Os módulos baseados no microcontrolador ESP8266 ratificam este contexto de implementação de baixo custo.

MICROCONTROLADORES

O microcontrolador é um tipo de circuito integrado que se destacou na automatização de dispositivos e recebeu o nome de SoC (System-on-Chip). Este dispositivo contempla a possibilidade de ser programado para desempenhar tarefas específicas, atendendo a inúmeros tipos de aplicações. Assim, devido ao seu uso na função de controle e automação, e características como memória RAM, memória EPROM, e da presença das interfaces de, comunicação: serial e USB; de rede: – Ethernet, WiFi e Bluetooth e de entrada e saída, é que este dispositivo recebeu o nome de microcontrolador. Além disso, a reunião de todas essas funcionalidades, com o adicional do baixíssimo consumo de energia, contribuiu de forma contundente para o custo acessível de sua integração, justificando a implantação dos microcontroladores em dispositivos de baixo custo, como uma torradeira, por exemplo.

Mas como saber qual microcontrolador melhor se adequa a dado projeto de sistema embarcado? As diversas interfaces de entrada e saída, conhecidas como GPIO (General Purpose Input Output) são determinantes para essa escolha. Visto que microcontroladores com entradas analógicas, como o Arduino, são os mais indicados para receberem informações de sensores analógicos, como sensores de temperatura, pressão, umidade e caso da aplicação cuja implementação abordaremos nessa postagem.

MQTT_IoT_Arduino_Microcontrolador

MICROCONTROLADOR ESP8266

Em síntese o ESP8266 é um microcontrolador de 32bits, com tensão de funcionamento de 3,3 volts. Por conseguinte 20% da capacidade de processamento é dedicada a pilha de protocolos WiFi, dessa forma 80% da capacidade de processamento desse microcontrolador se destina a aplicação do usuário. Além disso, o ESP8266 possui 17 interfaces de GPIO. No entanto, esse microcontrolador se destaca também por possuir:

  • Baixo Custo – o preço acessível o torna ideal para o contexto de Internet das Coisas que privilegia os componentes de baixo custo, facilitando a sua integração a todo tipo de aplicação.
  • Ambientes de desenvolvimento – são três o ambiente de desenvolvimento disponíveis: um que é baseado na Linguagem Lua, o ambiente do Arduino e o ambiente baseado no sistema operacional de tempo real RTOS.
  • Disponibilidade de módulos periféricos – A compatibilidade com os módulos propostos para o Arduino e a grande disponibilidade de componentes, tem possibilitado o surgimento de inúmeros desenvolvedores de aplicações embarcadas baseadas nesse microcontrolador.

Iot_MQTT_esp8266_Microcontrolador

 

MÓDULOS COM O ESP8266

Há vários módulos que fazem uso do módulo do ESP8266, principalmente para integrar o campo de Internet das Coisas, como por exemplo, o NodeMCU já citado em postagens anteriores no blog. Considerado o módulo mais popular dessa família o NodeMCU é, conforme mencionado na postagem ‘NodeMCU – uma plataforma com características singulares para o seu projeto‘, uma plataforma open source da família ESP8266 criado para ser utilizado no desenvolvimento de projetos ioT. Ao contrário de outros módulos, o NodeMCU já vem com um conversor USB serial integrado e o regulador de tensão.

Também merece menção e destaque em nossa postagem, o microcontrolador cuja acessibilidade e facilidade de integração compreende uma de suas melhores qualidades, o Wemos D1 mini. Assim como o NodeMCU, este microcontrolador conta também com um conversor USB serial integrado e regulador de tensão, bem como também suporta a linguagem Lua. As dimensões reduzidas  constituem uma vantagem sobre outros, mas também o limita a apenas 8 portas GPIO, porém, constitui quantidade suficiente para a maioria das aplicações.

IoT – INTERNET OF THINGS

Ainda não mencionado em nossas postagens, porém de extrema importância, o armazenamento na nuvem possibilita um efetivo funcionamento para aplicações de baixo custo. E o faz por se tratar de um modelo econômico que em suma compreende a terceirização dos servidores, sejam eles de dados, web ou email. Assim, a alta disponibilidade dos servidores a um baixo custo, faz do Cloud Computing um solução ideal para o universo das tecnologias que abrangem o cenário de IoT.

Em aplicações de IoT que traduzem uma alta taxa de erros, os dispositivos devem enviar informações para um componente centralizador, que poderia ser, por exemplo, o servidor broker hospedado na nuvem, proporcionando ao mesmo maior poder de processamento e disponibilidade.

É neste contexto de viabilização de um maior poder de processamento e maior disponibilidade em aplicações críticas que apresentam baixo poder de processamento e baixa confiabilidade que o MQ Telemetry Transport se insere. O MQTT como já mencionado em postagens anteriores é leve e obedece a um padrão de implementação, sendo também simples, o que significa que não há necessidade de um conhecimento consistente acerca de configurações de roteadores e firewalls.

Sobre o broker é interessante observar sua atuação como servidor nos dois sentidos, ele tanto recebe dados quanto os envia, por isso é um centralizador, e ainda, pode ser hospedado tanto na nuvem quanto localmente.

APLICAÇÃO COM MQTT | CONTROLE DE IRRIGAÇÃO

Em nosso exemplo descreveremos as etapas de implementação de um controle de irrigação cuja interface desenvolvida em linguagem JavaScript será executada em um navegador web. Antes, porém, vamos relembrar alguns importantes conceitos que sustentam o protocolo MQTT.

  • BROKER: Atua como um centralizador tanto recebendo quanto enviando informações, diversos tipos de brokers estão disponíveis, inclusive opções gratuitas, por exemplo, o mosquitto, que pode ser baixado em mosquitto.org.
  • PUBLISHER: Dispositivo de IoT gerador das informações que serão enviadas ao servidor broker e por ele ficarão disponibilizadas.
  • SUBSCRIBER: Assinante do serviço enviado ao broker pelo publisher. Ao receber essas informações o subscriber poderá ou executar alguma ação ou exibi-las em uma interface web.

Complementando a informação acima, o protocolo MQTT não foi desenvolvido com algum tipo de interface de interação, ficando a cargo de cada aplicação o modelo de exibição das informações. E essas interfaces podem ser desenvolvidas para web, para smartphone ou mesmo desktop.

IMPLEMENTAÇÃO

Para a implementação do exemplo que vamos descrever, serão necessários dois módulos ESP8266, um broker, um sensor de nível de água do tipo boia, um sensor de umidade do solo, dois módulos relé e uma válvula solenoide. As funções dos módulos serão respectivamente determinar quando irrigar e quando acionar a bomba de irrigação. Assim, um módulo ficará localizado próximo a caixa d’água para verificar o nível da água, o segundo módulo ficará próximo a área a ser irrigada, uma vez que sua função será verificar a umidade do solo.

O módulo localizado próximo a bomba terá a função de evitar o acionamento da mesma sem que haja carga, o que será feito por meio de um sensor de nível, do tipo boia. O motor da bomba será ligado a partir de um módulo relé que conta com uma saída para um microcontrolador.

A válvula solenoide também será ligada por meio de um módulo relé, sendo este conjunto pertencente ao módulo de controle de irrigação que conta com um sensor de umidade do solo. Um percentual máximo e mínimo de umidade do solo deverá ser determinado e percebido pelo microcontrolador, que ligará a solenoide para dar início a irrigação quando o percentual atingir o percentual mínimo de umidade. E quando este percentual representar o valor máximo a solenoide será desligada.

A função de estabelecer a comunicação e intermediar as mensagens entre os módulos caberá ao protocolo MQTT e ao broker. Entre as opções disponíveis, neste exemplo será utilizado o shiftr.io, uma opção que também é gratuita. Além de intermediar as mensagens, o broker permitirá as configurações dos parâmetros máximo e mínimo de cada módulo de irrigação bem como a visualização do estado de cada um dos elementos do sistema. Assim sendo, consideremos como elementos do sistema, o módulo de controle de irrigação, o módulo de controle da bomba e a interface web.

MÓDULO DE IRRIGAÇÃO

As tarefas atribuídas a este módulo englobam medir a umidade do solo, publicar essa informação e ligar a solenoide quando necessário e somente se constatado um nível alto de água. Uma vez que repetidas quedas de conexão podem ocorrer é recomendado que uma função de conexão seja implementada e chamada repetidas vezes. Haverá também uma função de configuração que incluirão os percentuais de umidade, máximo e mínimo, a assinatura dos tópicos por meio de uma função de assinatura, bem como o nível de água.

Quando a umidade do solo for verificada a mesma será publicada para o servidor broker, para que as condições sejam verificadas, com a finalidade de constatar se haverá ou não a necessidade de ligar a solenoide.

MÓDULO BOMBA

O funcionamento do módulo de controle da bomba assemelha-se ao módulo de controle de irrigação, onde haverá assinatura dos tópicos e suas respectivas publicação ou não; e onde o nível da água também precisará ser verificado. No entanto, o uso da bomba é opcional, sendo necessária apenas se o reservatório de água estiver em um nível inferior tendo como referência o nível do jardim a ser irrigado.

INTERFACE WEB

A comunicação web com IoT será desenvolvida em JavaScript embutido em uma página html. Essa linguagem foi escolhida pela disponibilidade de biblioteca compatível com o broker da shiftr.io. Será a partir dessa interface que os valores de percentual de umidade máximo e mínimo serão submetidos ao broker. Os valores recebidos do assinante também serão exibidos nessa página.

No código HTML será inserido uma biblioteca do broker, assim a conexão, a assinatura e a publicação serão feitas respectivamente pelas funções connect(), subscriber() e publish() já implementadas nessa biblioteca.

Caros leitores, em nossa curta caminhada para conhecermos o protocolo MQTT, suas funcionalidades e possibilidades de aplicações tivemos o cuidado de explorar repetidamente alguns conceitos para melhor fixação. Nesta publicação introduzimos alguns novos temas, e descrevemos os passos necessário para a implementação de um controle de irrigação que funcionará para você como um guia. Esperamos que tenham gostado. Bons estudos, fiquem com  a gente e até uma próxima postagem.

NOTA

Quase todos os componentes para a implementação do nosso exemplo, controle de irrigação, poderão ser encontrados na MasterWalker Shop. É importante ressaltar que a válvula solenoide poderá ser substituída por um ‘sensor de fluxo / vazão de água (rosca de 1/2″)‘, ou ainda por um ‘mini motor DC – bomba de água submersível‘, ambos disponíveis na loja. Qualquer dúvida entre em contato com a gente, teremos o maior prazer em ajudá-lo.

REFERÊNCIA BIBLIOGRÁFICA

OLIVEIRA, Sérgio. Internet das Coisas: com ESP8266, Arduino e  Raspberry PI. 1º Ed. São Paulo. NOVATEC, 2017.

Gostou desta postagem? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.

Implementando com MQTT
2 votos / Média de avaliação: 5 / Pontuação: 100%


Postagem anterior:
Próxima postagem:
Postagem feita por

Formada em Engenharia da Computação pela Faculdade Presidente Antônio Carlos, Web Designer, é também colaboradora da plataforma de conteúdo digital Oficina da Net. Tem um livro de ficção publicado como autora independente.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *