Este artigo é o terceiro de uma série de três artigos que mostra como construir uma estação de medição de temperatura Open-Source com Arduino e IoT. Com esses três artigos 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ção de medição de temperatura Open-Source com Arduino e IoT – Configuração: Criação de um software no Arduino capaz de se comunicar com o sensor de temperatura DHT-22 e configuração da comunicação serial com o módulo ESP8266 ESP-01;
- Estação de medição de temperatura Open-Source com Arduino e IoT – Comunicação: Preparação do ESP8266 ESP-01 para comunicação serial com Arduino e comunicação com o Broker MQTT;
- Estação de medição de temperatura Open-Source com Arduino e IoT – Publicação dos dados: Finalização do software no Arduino, desenvolvimento de um WebSocket para comunicação com o Broker MQTT (através de qualquer navegador, em qualquer dispositivo capaz de navegar na Internet) e finalização do projeto (funcionamento completo).
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 dois tópicos gerais: desenvolvimento da interface web que se conecta ao WebSocket do Broker MQTT e uso/demonstração do sistema.
WebSocket – O que é?
Um WebSocket, em resumo, nada mais é que o bom e velho Socket (TCP, em modo full-duplex) projetado para rodar em aplicações mais alto-nível, como site/WebAPPs em HTML5, por exemplo. Em outras palavras: é o bom e velho Socket TCP rodando diretamente no Browser!
Além disso, um WebSocket permite que esta comunicação fique transparente ao usuário da aplicação, de modo que ele nem perceba o que está ocorrendo. Com isso, o WebSocket atua no back-end de WebAPPs.
Para saber mais sobre WebSockets em HTML5, leia o aertigo deste link.
WebSocket com Broker MQTT e Interface multiplataforma
No projeto desta série de artigos, toda a medição de temperatura feita pelo Arduino + sensor de temperatura e transmitida para um broker MQTT via Wi-Fi com o ESP8266 ESP-01 será visível via página Web. Em outras palavras, a interface com o usuário do sistema final é uma página web aberta em um browser comum.
E aí está um dos grandes pontos do projeto: permitir a interface com o usuário de (quase) todo browser, em qualquer dispositivo (mobile ou não) com acesso à Internet. Com isso, abstrai-se a interface com usuário final, desprendendo-se assim de requisitos de sistema operacional. Portanto, é correto dizer que a interface com usuário final é multiplataforma.
Recursos de software para implementação da interface
A aplicação web desenvolvida para ser a interface com o usuário final é dividida em 3 partes: Layout, Geolocalização, MQTT e configurações.
Para a construção do layout foi utilizada a biblioteca MaterializeCSS. Ela oferece um conjunto de componentes web, tais como: tabelas, formulários, ícones, menus e etc. Além de oferecer um sistema de grid (para design responsivo) e cores baseadas no Material Design. Ambas as funcionalidades foram utilizadas na construção do layout.
Para a comunicação MQTT, foi utilizada a biblioteca mosquitto. Essa biblioteca possui um encapsulamento de WebSockets, onde, no back-end, toda comunicação de dados será feita via Sockets.
O sistema terá uma área onde o usuário entrará com 3 informações:
- Tópico a ser assinado (no nosso caso será EMCOL);
- Latitude;
- Longitude.
Essas configurações serão salvas no localStorage do navegador (análogo a um banco de dados local do navegador) para que, posteriormente, essas informações sejam usadas na tela principal e na área de geolocalização.
Já a parte de geolocalização é feita através do uso de uma biblioteca denominada leaflet. Com base nas coordenadas que o usuário salvou nas configurações, as coordenadas serão mapeadas automaticamente no mapa e através de uma label, a temperatura também será apresentada. No caso das outras estações, elas também serão mapeadas no Mapa. Assim, mostrando visualmente, uma verdadeira rede de estações meteorológicas implementadas. Portanto, o sistema tem porte para ser aplicado a nível mundial!
Interface – Download
A interface, assim como todo o projeto, podem ser baixados no GitHub oficial do projeto. O GitHub está dividido em três repositórios distintos: um para o software que roda no Arduino, um do software que roda no módulo ESP8266 e o sistema on-line.
A interface de usuário é capaz de rodar em qualquer servidor web, inclusive localmente no seu próprio computador! Em suma, pode-se disponibilizar a interface em qualquer hospedagem web gratuita.
Vídeo – Funcionamento completo
Um vídeo do sistema funcionando por completo (da leitura do sensor de temperatura até a interface web para usuário final) pode ser visto abaixo:
Futuro do projeto
O futuro deste projeto depende exclusivamente de você, caro leitor maker/hobbista/entusiasta de sistemas embarcados!
O projeto está no ponto de ser replicado e usado a nível mundial, formando assim uma base de temperaturas-ambiente open-source. Logo, quanto mais gente colocar o projeto pra rodar e ler temperatura, melhor!
Coloque o projeto para rodar e contribua assim para a primeira iniciativa open-source de medição de temperatura do Brasil! Ajude-nos a fazer com que o Brasil seja a diferença!







Pedro Bertoleti tenho uma dúvida para que eu possa acessar o sistema Web eu preciso de instalar o servidor (broker) mosquitto? e eu preciso instalar também o cliente mosquitto?, essa parte eu não entendi eu fui nessa página (https://mosquitto.org/download/) e instalei o binário para o Windows, esse binário é o servidor (broker)? desculpa, mas uma outra pergunta é: eu instalei o Wampserver para colocar o projeto Web para que eu possa acessar o localhost estou fazendo da forma correta? já que o MQTT utiliza um outro servidor (broker) que é acessado pela porta 1883. Caso eu esteja fazendo da forma… Leia mais »
Hey, eu sou um estudante de eletrônica e gostei bastante das matérias.
Tenho algumas dúvidas quanto a esse projeto:
1- No lugar do MQTT Broker, é possível usar o thingspeak?
2- Pode-se trocar o DHT-22 por um sensor de umidade FC-28?
3- Na programação do Módulo ESP8266, a biblioteca que ele importa é a https://github.com/itead/ITEADLIB_Arduino_WeeESP8266? Ela pode ser utilizada com pic ao invés de arduíno?
Eu estou tentando fazer algo desse tipo usando seu outro artigo de
PIC na IoT com ESP8266 e ThingSpeak