Skip to content
Célio Benjamim edited this page Jul 25, 2025 · 7 revisions

Relatório de Projeto: SenseClima

Resumo

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.

1. Introduçã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.

2. Arquitetura do Sistema

2.1. Hardware do Sistema

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.
Diagrama de Conexão Física do Sensor DHT22

Figura 1: Diagrama de conexão física com o sensor DHT22

2.2. Conectividade e Comunicação

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
Fluxo de comunicação MQTT entre o dispositivo e o broker

Figura 2: Fluxo de comunicação MQTT entre o dispositivo e o broker

3. Arquitetura de Software

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.

4. Descrição dos Módulos

4.1. Módulo do Sensor DHT22 (HT_DHT22.h/.c)

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.
Diagrama de comunicação com o DHT22

Figura 3: Diagrama de comunicação com o DHT22

4.2. Módulo de GPIO (HT_GPIO_Api.h/.c)

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.

4.3. Módulo MQTT (HT_MQTT_Api.h/.c)

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.
Terminal MQTT com publicações ao vivo

Figura 4: Terminal MQTT com publicações ao vivo

4.4. Módulo BSP Personalizado (HT_BSP_Custom.h/.c)

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.

4.5. Módulo Principal da Aplicação (HT_SenseClima.h/.c)

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.

4.6. Arquivo de Entrada Principal (main.h/.c)

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.


5. Estratégias de Baixo Consumo

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.
Consumo de corrente em modo de baixo consumo

Figura 5: Consumo de corrente em modo de baixo consumo

6. Resultados Obtidos

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.
Gráfico de dados recebidos no broker

Figura 6: Gráfico de dados recebidos no broker

7. Conclusão

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.

8. Trabalhos Futuros

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.

9. Repositório e Documentação

O código-fonte, esquemáticos, layout da PCB e demais documentos estão disponíveis no repositório:

https://github.com/celiobenj/sense-clima