Estação de medição de temperatura Open-Source com Arduino e IoT - Comunicação

Este artigo é o segundo de uma série de três artigos que mostra como construir uma estação de medição de temperatura utilizando Arduino e IoT open source. Para você que perdeu o primeiro artigo, acesse este link antes de ler esse texto. Com esses três textos em mãos e os componentes, placas e ferramentas necessárias, qualquer um com um conhecimento técnico mínimo de eletrônica poderá construir e contribuir para a medição de temperatura em diferentes pontos do Brasil e, quem sabe, claro, do planeta (nada impede isso).

 

O coração do sistema é uma placa Arduino fácil de ser encontrada e comprada. Para comunicação com internet, será utilizado um módulo Wi-Fi ESP8266 ESP-01, o qual utilizará MQTT. Esta série esta sendo construída por mim e por Douglas Salin Zuqueto.

 

A série de artigos que está sendo escrita aborda os seguintes assuntos:

 

Esta série foi desenvolvida com o hardware oferecido pelo loja FILIPEFLOP, a qual foi fundamental para o desenvolvimento deste projeto, pois sem o auxílio do hardware, o projeto se tornaria inviável.

 

Este artigo será dividido em três tópicos gerais: conexão do ESP8266 à rede Wi-Fi, conexão com o broker MQTT e a integração do Arduino com o módulo ESP8266. Salienta-se que para realizar a programação do módulo ESP8266 foi usada a integração da IDE do Arduino. Para mais informações sobre e ela e para baixá-la, acesse este link.        

 

 

Conexão do ESP8266 à rede Wi-Fi

 

Para se conectar a uma rede Wi-Fi e usufruir da internet no Arduino e ESP8266, você terá que ter um roteador ou um hotspot por perto.  O próximo passo é começar a escrita do firmware. Neste caso, será usada a biblioteca ESP8266WiFi que a integração da IDE disponibiliza para que o ESP possa se conectar à rede Wi-Fi. Para saber como conectar seu ESP8266 ao computador para programá-lo com a IDE Arduino, veja este excelente artigo do Pedro Minatel.    

 

Veja abaixo o código utlizado para se conectar à rede Wi-Fi. Depois do firmware ser carregado para o ESP8266, abra o monitor serial para observar se a conexão foi bem sucedida.        

 

 

Conforme observado no código acima, é possível constatar que não existe mistério em se conectar na rede Wi-Fi. Com simples linhas de código, seu ESP8266 já está conectado na internet. Caso desejar estudar mais essa biblioteca ESP8266WiFi e ver mais alguns exemplos, acesse o repositório oficial da biblioteca.

 

Na figura 1 observamos o debug no monitor serial.

 

Arduino e IoT: Serial Monitor exibindo status da conexão do ESP8266 à internet
Figura 1 - Serial Monitor exibindo status da conexão do ESP8266 à internet

 

 

Conexão do ESP8266 com o MQTT utilizando a biblioteca PubSubClient

 

Agora chegou a hora de comunicarmos de fato com o broker MQTT. Para isso, é necessário fazer o download e a instalação da biblioteca PubSubClient. Para baixá-la, acesse este link. A instalação da biblioteca deve seguir o mesmo processo de outras bibliotecas para o Arduino.

 

Com a biblioteca instalada, o próximo passo é integrar o firmware anterior com a biblioteca do MQTT.  Observe o código abaixo e veja em especial esse trecho:

 

 

Nele estamos assinando o tópico MQTT EMCOL (EMCOL - Estação Meteorológica Colaborativa), o qual vai ser  responsável pela centralização de todas as temperaturas da rede de estações meteorológicas.

 

No loop principal foi criada uma variável payload, sendo ela responsável pela string que conterá as coordenadas da estação meteorológica, assim como a temperatura medida (string esta que será, futuramente, decodificada e visualizada no artigo 3 desta série). Essas informações serão usadas posteriormente para fazer o mapeamento de todas as estações com base em sua localização. Em outras palavras: se um equipamento (seja um Arduino ou não) for capaz de se comunicar MQTT e medir temperaturas, este pode publicar informações neste tópico e contribuir para este projeto!

 

Observe o código completo abaixo. Nele supomos a localização geográfica na latitude e longitude iguais a -29.1838681 e -54.8528838 respectivamente.

 

  

Abra o monitor serial e veja o que está acontecendo. Basicamente, até o momento, o ESP8266 já está conectando na rede wireless, está se conectando com o Broker MQTT (test.mosquitto.org) e também está simulando o envio dos dados para o Broker MQTT. Veja a figura 2.

 

Arduino e IoT - Debug da conexão ao broker
Figura 2 - Debug da conexão ao broker

 

 

Integração do Arduino como Módulo ESP8266

 

Você lembra do artigo anterior? Nele o Arduino foi preparado para enviar os dados referentes à temperatura via comunicação serial (pelo pinos 2 e 3, RX e TX, respectivamente). Agora será tratado, no firmware final para o ESP8266, a integração do Arduino com o ESP8266. Além disso, será feito um pequeno debug para verificar toda a comunicação do sistema (ou seja, Arduino -> ESP8266 e ESP8266 →Broker).

 

Agora, será modificado o firmware desenvolvido para o ESP8266 para receber informações da comunicação serial (enviado pelo Arduino), agrupá-las em uma string (informações separadas por vírgulas) e enviar, via MQTT, para o broker.

 

 

Em relação ao código anterior, algumas modificações foram feitas. Uma delas é comentar todas linhas que continha o Serial.println, onde estavamos usando para debugar o firmware. Agora, com a comunicação serial com o Arduino, não podemos mais usar esta serial para debug. Outra modificação foi no loop principal, onde foi chamada a função readData() (criada neste código mais atual), a qual será responsável por receber a temperatura enviada pelo Arduino e, logo depois, publicar as informações no tópico EMCOL.

 

Para ocorrer a comunicação serial com o Arduino, precisamos ligar o pino RX do ESP8266 ao pino 3 do Arduino (conforme definido no artigo anterior) e também interconectar os dois com o GND. Observe o esquemático abaixo que ilustra estas ligações:

 

Arduino e IoT - Circuito esquemático
Figura 3 - Circuito esquemático

 

 

Resultado / verificação do funcionamento

 

Para verificar se realmente está tudo funcionando corretamente, há dois modos.

 

O primeiro modo é feito através de comandos digitados no shell de qualquer computador com cliente MQTT Mosquitto instalado. Através do comando mosquitto_sub, você pode assinar o tópico EMCOL e ver as coordenadas e temperatura sendo recebidas. O comando a ser digitado em questão é:

 

 

A segunda maneira, mais intuitiva, é utilizando um cliente MQTT visualizável pelo navegador para assinar o tópico EMCOL e visualizar as mensagens. Para isto, utilizei o cliente MQTT grátis e acessível pelo navegador chamado MQTTLens. Observe o screenshot da comunicação na figura 4 (lembrando que todas as informações estão no Payload da mensagem MQTT, na ordem: LATITUDE,LONGITUDE,TEMPERATURA).

 

Arduino e IoT - Screenshot da comunicação (cliente MQTTLens)
Figura 4 - Screenshot da comunicação (cliente MQTTLens)

 

Sou engenheiro eletricista formado pela Faculdade de Engenharia de Guaratinguetá (FEG - UNESP) e trabalho com desenvolvimento de sistemas embarcados em São Paulo capital. Curioso e viciado em tecnologia, sempre busco me aprimorar na área de eletrônica e programação, em especial em desenvolvimento de firmware (área que mais gosto de trabalhar e estudar).Para mais informações, acesse minha página no Facebook:https://www.facebook.com/pbertoleti

Deixe um comentário

8 Comentários em "Estação de medição de temperatura Open-Source com Arduino e IoT - Comunicação"

Notificar
avatar
 
Ordenar por:   recentes | antigos | mais votados
marcelphilippeandrade31
Membro
marcelphilippeandrade31

Pedro Bertoleti eu estou tendo dificuldades para fazer o meu ESP8266 conectar na rede Wi-Fi. Eu fiz a upload do código conforme o Pedro Minatel fez, mas quando eu abro o meu monitor serial ele não mostra que recebeu um IP a única coisa que o monitor serial mostra é "wi-fi evt: 7" o que isso significa? Eu tenho que configurar o meu roteador? por favor me ajuda estou perdido.

Lindomar Schulze
Visitante
Lindomar Schulze

estou desenvolvendo uma estação meteorologica completa com dht22, ldr, bmp180, biruta, anemometro, pluviometro, sensor de raios uv e sensor de poeira e fumaça, eu consigo jogar todos esses dados com estes programas, é claro sei q terei de aumentar o progarma, mas a comunicação vai dar conta?

Luciano Ribeiro
Membro
Luciano Ribeiro

Aguardando a parte 3. Muito bom!

Haroldo Amaral
Membro
Haroldo Amaral

Também no aguardo da parte 3 Pedro!
Show de bola!

phfbertoleti
Visitante
phfbertoleti

Luciano, muito obrigado!

Elton Bicalho
Visitante
Elton Bicalho

Alguma dica para fazer este projeto com termômetro laser?

Luciano Ribeiro
Membro
Luciano Ribeiro

acredito que seu proposito é ler a temperatura de uma superficie (para isso server termometro a laser). Se você consegue traduzir a leitura para dentro do arduino, é só formar o payload e usa-lo. Entre em contato, talvez possa ajuda-lo.

phfbertoleti
Visitante
phfbertoleti

Elton, boa tarde.

Não é possível fazer este projeto com este tipo de termômetro.
Sem contar a parte de interface e comunicação com Arduino (algo que já é um desafio em si, devido aos leitores não serem padronizados quanto à comunicação com outros equipamentos), o termômetro laser não mede temperatura ambiente.
Logo, não se aplica ao propósito do projeto.

wpDiscuz