Analisando propostas

Firmware Stm32l053r8 para Sensor Iot Autonomo — Bme688 + Lora + I2c Multi-Device + Ultra-Low Power

Publicado em 26 de Abril de 2026 dias na TI e Programação

Sobre este projeto

Aberto

Procuro programador de firmware embebido para desenvolver software para um no sensor IoT autonomo de deteccao de incendio florestal com gestao inteligente de energia. O hardware esta a ser desenvolvido em paralelo — o firmware e desenvolvido em dev boards e depois integrado.

O que ja esta definido (entrego ao candidato seleccionado):

- pinout completo do mcu com todos os perifericos
- protocolo de comunicacao lora (payload de 12 bytes definido)
- 5 regras de deteccao de incendio especificadas
- targets de consumo energetico por estado
- arquitectura de energy harvesting com 4 supercaps independentes
- documento de especificacao tecnica completo

o que preciso:

1. BARRAMENTO I2C — 4 DISPOSITIVOS
  O sistema tem 4 dispositivos no mesmo barramento I2C. Esta e a parte mais complexa do firmware.

Dispositivo 1: BME688 (Bosch) — Sensor ambiental

- Endereco I2C: 0x76 ou 0x77
- Le: temperatura, humidade relativa, pressao, indice VOC (gas)
- Modo forced (nao continuo) para poupar energia
- Calibracao basica do sensor de gas

Dispositivo 2: INA219 #1 — Monitor de corrente/potencia

- Endereco I2C: 0x40
- Le: tensao, corrente e potencia do barramento principal
- Configurar resolucao 12-bit, ganho adequado para correntes 0-50mA

Dispositivo 3: INA219 #2 — Monitor de corrente/potencia

- Endereco I2C: 0x41 (ou 0x44, conforme resistor de endereco)
- Mesma funcao, segundo ponto de medicao

Dispositivo 4: Aem13920 (e-peas) — pmic teg com interface i2c

- endereco i2c: 0x41 (atencao: pode conflitar com ina219 #2, verificar)
- 39 registos configuráveis
- le: estado de carga, tensao de entrada, status do mppt
- escreve: configuracao mppt ratio, thresholds
- datasheet e-peas sera fornecido

nota: verificar enderecos i2c para evitar conflitos. Se AEM13920 e INA219 #2 conflitarem no 0x41, alterar endereco do INA219 via pinos de endereco.

1. COMUNICACAO LoRa

- Configurar SPI para RFM95W nos pinos SCK=PB3, MISO=PB4, MOSI=PB5, NSS=PA15
- DIO0 em PB1, RST em PC13
- Transmitir payload de 14 bytes (actualizado):
  [ID_no:2B][Temp:2B][RH:1B][Press:2B][VOC:2B][Alarme:1B][Vscap1:1B][Vscap2:1B][Vscap3:1B][Vscap4:1B]
- SF7, 868MHz, TX power +14dBm
- Transmissao apenas quando necessario (alarme ou intervalo programado)

1. deteccao de incendio (5 regras, por prioridade)

- r1: temperatura acima de limiar configuravel (default 45c)
- r2: temperatura acima de limiar e voc acima de limiar
- r3: r2 e humidade em descida (derivada negativa)
- r4: derivada temporal de temperatura (subida rapida, mais de 2c/min)
- r5: tripla confirmacao (3 leituras consecutivas com r3 activo)
- cada regra activa um nivel de alarme diferente no byte de alarme

1. Gestao inteligente de energia (diferenciador do projecto)
  esta e a inteligencia central do sistema, protegida por patente:

4.1 Leitura de 4 supercapacitors via ADC

- PA0: tensao supercap TEG (via divisor 100k/100k)
- PA1: tensao supercap Solar (via divisor 100k/100k)
- PA2: tensao supercap VAWT (via divisor 100k/100k)
- PA3: tensao supercap PVDF (via divisor 100k/100k)
- Tensao real = leitura ADC x 2 (divisor 2:1)
- Sample time ADC: minimo 160.5 ciclos (impedancia fonte ~50k ohm)

4.2 Controlo de Power Gates (4 MOSFETs P-ch via GPIO)

- Pa4: gate mosfet canal teg
- pa5: gate mosfet canal solar (nota: canal solar pode ser bootstrap directo, sem mosfet)
- pa6: gate mosfet canal vawt
- pa7: gate mosfet canal pvdf
- logica: gpio high -> n-ch on -> p-ch on -> canal activo
  gpio low -> n-ch off -> p-ch off -> canal desligado

4.3 Algoritmo de decisao energetica

- Ler tensao dos 4 supercaps via ADC
- Ler corrente/potencia via INA219 x2
- Ler estado AEM13920 via I2C
- Decidir qual supercap alimenta o sistema:
  Se V_scap > 3.5V: canal disponivel (energia boa)
  Se V_scap 2.5-3.5V: canal marginal (usar so se necessario)
  Se V_scap < 2.5V: canal indisponivel (deixar carregar)
- Priorizar canal com mais energia
- Se nenhum canal > 2.5V: deep sleep, apenas RTC activo

4.4 Modos de operacao baseados em energia total

- modo rico (energia total > 15v soma): leitura cada 5 min, tx cada 30 min
- modo eco (energia total 8-15v): leitura cada 10 min, tx cada 1h ou se alarme
- modo coma (energia total 4-8v): leitura cada 30 min, tx so se alarme
- modo deep sleep (energia total < 4v): desliga tudo, rtc wake cada 1h para verificar

1. Gestao de consumo (critico)

- modo sleep: mcu em stop mode, menos de 5 ua total, acordar por rtc
- modo wake: ler sensores (menos de 100ms, menos de 2ma), decidir, voltar a dormir
- modo tx: transmitir lora (menos de 100ms, menos de 40ma), voltar a dormir
- o mcu deve dormir 99%+ do tempo
- antes de dormir: desligar power gates dos sensores e radio
- ao acordar: ligar power gate necessario, esperar estabilizacao (1-5ms), ler, desligar

1. GPIOs AUXILIARES

- PB0: LED de status (opcional, para debug)
- PA9/PA10: USART1 (debug serial)
- PB6: I2C1 SCL (barramento partilhado BME688 + INA219 x2 + AEM13920)
- PB7: I2C1 SDA

Categoria TI e Programação
Subcategoria Outros
Tamanho do projeto Grande

Duração do projeto Não estabelecido

Habilidades necessárias

Outro projetos publicados por N. E. I.