-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Este relatório apresenta o projeto SenseClima, um sistema embarcado de monitoramento ambiental com comunicação remota via MQTT e foco em baixo consumo de energia. O dispositivo foi desenvolvido com o microcontrolador iMCP HTNB32L, que oferece conectividade NB-IoT nativa. O objetivo é realizar medições periódicas de temperatura e umidade do ar utilizando o sensor DHT22, enviando os dados a um broker MQTT, com controle remoto do intervalo de envio e funcionamento autônomo baseado em bateria.
O relatório descreve a arquitetura de hardware e software adotada, com ênfase nas soluções aplicadas para economia energética, modularidade do firmware, e integração entre sensor, comunicação e alimentação.
O monitoramento contínuo de variáveis ambientais é essencial em diversas áreas, como agricultura, meteorologia, cidades inteligentes e automação residencial e empresarial. O avanço de dispositivos de Internet das Coisas (IoT) viabiliza a criação de sistemas compactos, autônomos e conectados. Neste contexto, o SenseClima foi idealizado para operar em automação local com mínima intervenção, fornecendo dados do ambiente por longos períodos.
Este documento apresenta a solução desenvolvida, contemplando tanto os aspectos físicos do hardware quanto os módulos de software responsáveis por sua operação. A proposta visa conciliar robustez, simplicidade de implantação e eficiência energética, com possibilidade de expansão futura.
O projeto do SenseClima foi concebido sobre uma base de componentes integrados e otimizados para consumo energético e simplicidade de montagem.
Principais componentes:
- Microcontrolador: iMCP HTNB32L com NB-IoT integrado.
- Sensor ambiental: DHT22 (temperatura e umidade).
- Fonte de alimentação: Bateria Li-Ion 3.7 V.
Figura 1: Diagrama de conexão física com o sensor DHT22
A comunicação entre o dispositivo e o servidor é realizada por meio do protocolo MQTT, utilizando rede NB-IoT. O uso de tópicos padronizados garante compatibilidade e rastreabilidade dos dados transmitidos.
Tópicos utilizados:
- Temperatura:
hana/prototipagem/senseclima/01/temperature - Umidade:
hana/prototipagem/senseclima/01/humidity - Intervalo de leitura:
hana/prototipagem/senseclima/01/interval
Figura 2: Fluxo de comunicação MQTT entre o dispositivo e o broker
O firmware foi desenvolvido de forma modular, utilizando linguagem C sobre o sistema operacional FreeRTOS. A estrutura do projeto segue o padrão:
├── Firmware/
│ ├── Applications/
│ │ └── SenseClima/ # Contém todo o código-fonte da nossa aplicação SenseClima
│ │ ├── Inc/ # Aqui ficam os arquivos de cabeçalho (.h), que definem as interfaces e estruturas de dados:
│ │ │ ├── HT_BSP_Custom.h # Define funções para inicialização personalizada da placa.
│ │ │ ├── HT_DHT22.h # Contém as definições e protótipos para interagir com o sensor DHT22.
│ │ │ ├── HT_GPIO_Api.h # Oferece a API para operações gerais de Entrada/Saída (GPIO), como ler e escrever em pinos.
│ │ │ ├── HT_MQTT_Api.h # Define a API para todas as funcionalidades MQTT (conectar, publicar, assinar).
│ │ │ ├── HT_Peripheral_Config.h # Centraliza as definições de configuração para diversos periféricos (UART, I2C, SPI, pinos).
│ │ │ ├── HT_SenseClima.h # Define a estrutura da lógica principal da aplicação, incluindo estados e protótipos de funções.
│ │ │ └── main.h # Contém definições globais importantes, IDs de mensagens e configurações iniciais da tarefa principal.
│ │ ├── Src/ # Aqui ficam os arquivos-fonte (.c), que contêm a implementação das funcionalidades:
│ │ │ ├── HT_BSP_Custom.c # Implementa as rotinas de inicialização e configuração específica da placa.
│ │ │ ├── HT_DHT22.c # Contém a lógica detalhada para a leitura e controle do sensor DHT22.
│ │ │ ├── HT_GPIO_Api.c # Implementa as funções para controle de GPIO (leitura e escrita de pinos).
│ │ │ ├── HT_MQTT_Api.c # Contém a implementação completa das funcionalidades de conexão, publicação e assinatura MQTT.
│ │ │ ├── HT_SenseClima.c # Implementa a lógica principal da aplicação, incluindo a máquina de estados (FSM), as threads de leitura do sensor e o gerenciamento de sono.
│ │ │ └── main.c # O ponto de entrada da aplicação, responsável pela inicialização do FreeRTOS e configuração da conectividade celular.
│ │ └── Makefile # Um arquivo de script que gerencia o processo de compilação do projeto SenseClima.
│ │
│ └── SDK/ # O Kit de Desenvolvimento de Software (SDK) do fabricante.
│ ├── PLAT/ # Componentes específicos da plataforma de hardware.
│ │ ├── os/ # Implementação do Sistema Operacional (FreeRTOS).
│ │ ├── driver/ # Drivers de baixo nível para o chip e a placa (ex: GPIO, UART).
│ │ ├── middleware/ # Camadas de software intermediárias.
│ │ │ ├── developed/ # Middleware desenvolvido pela HT Micron (ex: comunicação e IoT).
│ │ │ └── thirdparty/ # Bibliotecas de terceiros (ex: mbedTLS para segurança, lwIP para rede, MQTT para protocolo).
│ │ └── HT_API/ # APIs de abstração de hardware específicas da HT Micron.
│ └── ... (outros diretórios do SDK contendo bibliotecas pré-compiladas, ferramentas, etc.)
Cada módulo cumpre uma função específica e comunica-se com os demais através de interfaces bem definidas.
Responsável pela leitura dos dados ambientais. O sensor opera com um protocolo proprietário, sendo necessário controle preciso do tempo de sinal para obter os valores de temperatura e umidade.
- Validação dos dados por checksum.
- Em caso de falha na leitura, publica-se
"NaN"via MQTT.
Figura 3: Diagrama de comunicação com o DHT22
Este módulo provê abstração para controle de pinos digitais, incluindo:
- Inicialização de pinos como entrada ou saída.
- Escrita e leitura de níveis lógicos.
- Utilização como wakeup source durante o modo de sono.
Gerencia toda a comunicação com o broker MQTT, incluindo:
- Conexão com autenticação.
- Publicação de dados.
- Assinatura de tópicos para controle remoto.
- Funções de callback para tratamento de mensagens recebidas.
Figura 4: Terminal MQTT com publicações ao vivo
O Board Support Package configura o ambiente de execução, realizando:
- Inicialização de clocks e periféricos.
- Configuração do console UART.
- Habilitação de pinos para wakeup.
- Carregamento de parâmetros salvos em memória flash.
Este módulo organiza a lógica de operação da estação:
- Gerencia tarefas de leitura do sensor.
- Publica dados nos tópicos apropriados.
- Implementa máquina de estados para controle do ciclo de funcionamento.
- Entra em modo de sono profundo entre leituras, despertando por RTC.
Ponto de entrada do firmware. Inicializa todos os módulos, configura a rede NB-IoT e dá início à execução da tarefa principal (HT_SenseClimaTask). Também registra eventos de rede, como status do SIM card e qualidade do sinal.
Um dos principais desafios foi maximizar a autonomia do dispositivo operando com bateria. Para isso, foram adotadas as seguintes estratégias:
- Modo de sono profundo (hibernate) entre ciclos de leitura.
- Temporizador interno (RTC) para agendamento da próxima execução.
- Redução da frequência de operação do sistema quando ocioso.
- Reconexão condicional à rede MQTT apenas quando necessário.
Figura 5: Consumo de corrente em modo de baixo consumo
Após testes em bancada e campo, os principais resultados observados foram:
- Transmissão confiável via MQTT em intervalos definidos.
- Estabilidade do sistema mesmo após longos períodos de operação contínua.
Figura 6: Gráfico de dados recebidos no broker
O projeto SenseClima demonstrou ser uma solução viável e eficiente para monitoramento de variáveis do ambiente em cenários IoT. A combinação de sensores, comunicação em rede e técnicas de economia de energia resultou em um dispositivo compacto, confiável e de fácil manutenção.
Sua arquitetura modular também o torna flexível para expansões futuras, como adição de novos sensores ou integração com painéis solares.
Entre as melhorias planejadas, destacam-se:
- Controle remoto funcional do intervalo de leitura via MQTT.
- Otimização dos algoritmos de economia de energia.
- Implementação de interface web ou aplicativo para visualização em tempo real.
- Integração com sistemas de alarme e notificações.
O código-fonte, esquemáticos, layout da PCB e demais documentos estão disponíveis no repositório: