Estação Meteorológica

Neste projeto, exploro vários conceitos que estudei ao longo da faculdade e os aplico aqui. Entre eles estão bancos de dados relacionais, interfaces gráficas, Programação Orientada a Objetos, protocolos WEB, protocolos de transmissão de dados (MQTT), threads, estruturas de dados, frameworks WEB, instalação de servidores Linux em ambientes de Cloud Computing, criptografia, microcontroladores e plataformas de desenvolvimento IoT, entre outros. As ferramentas usadas foram: Python, C++, JavaScript, HTML, CSS, shell script, entre outros frameworks e bibliotecas.

Resumidamente, o sistema consiste em sensores de temperatura, umidade e pressão, especificamente o BME280, controlados por ESP32, que são microcontroladores que se conectam a redes domésticas com bastante eficiência, tanto em conexão quanto em processamento. O microcontrolador faz um somatório da leitura dos dados em tempo real, enquanto aguarda uma mensagem de um cliente MQTT remoto (subscribe). Assim que a mensagem é recebida, o microcontrolador envia uma mensagem ao cliente (publish) com a média dos dados colhidos no período entre as mensagens recebidas, por volta de 1 minuto entre mensagens. Este ciclo se repete enquanto o microcontrolador estiver ligado.

O cliente MQTT é um algoritmo escrito em Python, que gerencia qual sensor enviou a mensagem, encaminhando seus dados para o banco de dados através de seu endereço MAC, que funciona como um identificador. Essa transferência é feita usando o protocolo MQTT no formato JSON, sendo gerenciada por um Broker Mosquitto dedicado e protegido por senha.

Por último, temos a visualização dos dados colhidos, exibidos por um aplicativo WEB, na forma de gráficos e um display de máximos, mínimos, média e desvio padrão.

Tela inicial.





Gráfico de temperatura das ultimas 24 horas.





Display de análise de dados.


Este sistema pode ser aplicado em residências, estufas, fábricas ou qualquer ambiente onde seja necessário o acompanhamento dessas grandezas, podendo ser adaptado para emitir sinais condicionais e controlar remotamente, de forma automática, dispositivos eletroeletrônicos, emitir avisos e oferecer uma infinidade de outras aplicações.

Para mais informações técnicas, basta acessar o meu repositório no GitHub e explorar cada parte do sistema, assim como consultar seu código-fonte e dependências.