Ingestão com STM32 e Zephyr

Envie leituras do DS18B20 a partir de uma Nucleo-F767ZI com Zephyr em C e Ethernet integrada. west, ST-LINK e o mesmo relay HTTPS local do Uno.

Close de cabos Ethernet Cat-5e brancos com conectores RJ45
O JSON das sondas normalmente sai da rede local por Ethernet ou por um relay próximo, não direto pela internet pública. Foto: DiscDepotDundee.co.uk. CC BY-SA 4.0

O ESP32 e a Pico W cobrem o Wi‑Fi. Se você quer outro fabricante de chips e uma toolchain que não seja nem Arduino nem Python, uma ST Nucleo-F767ZI rodando Zephyr envia via POST o mesmo JSON de ingestão pela Ethernet da placa. C, west, ST-LINK. O conector compatível com Arduino é só uma pinagem: o firmware não é um sketch de Arduino.

HTTPS nativo no Zephyr significa embutir uma CA da CDN na imagem, o que quebra quando a cadeia de certificados do edge muda. Este exemplo usa o mesmo relay HTTP→HTTPS na rede local do caminho Uno + W5100, assim a Cloudflare pode trocar de CA sem você precisar regravar a placa.

Peças

Peças para uma sonda de congelamento STM32 com Zephyr
Peça Por quê Comprar
Nucleo-F767ZI Cortex-M7, MAC + PHY Ethernet na placa, depurador ST-LINK. Sem módulo Wi‑Fi. ST Nucleo-F767ZI
DS18B20 à prova d’água Sonda para cano ou porão. Dados no pino Arduino D4 (PF14). Adafruit DS18B20 · Amazon
Resistor de 4,7 kΩ Pull-up dos dados do DS18B20 para 3,3 V. Não alimente a sonda pelo pino de 5 V do Arduino. 4,7k na Amazon
Ponto de rede DHCP na sua rede local. Uma Pi, um NAS ou um notebook roda o relay TLS. Qualquer cabo de rede Cat5e até o seu switch.

Ligação

  • DS18B20 VDD → Nucleo 3.3V
  • DS18B20 GND → GND
  • Dados do DS18B20 → Arduino D4 (STM32 PF14), 4,7k para 3,3 V
  • RJ45 → rede local. USB do ST-LINK para gravar e para a serial a 115200.

Compilar e gravar

  1. Abra Dashboard → Devices e baixe Zephyr main.c (com o caminho de ingestão já preenchido), ou copie os defines do aviso de ingestão.
  2. Num computador da rede local:
    python3 sketches/relay/push_https_forward.py --listen 0.0.0.0:8080 \
      --upstream https://probeharbor.dev
  3. Defina INGEST_HOST como essa máquina. Substitua src/main.c pelo arquivo baixado se quiser o caminho embutido.
  4. A partir de um workspace do Zephyr:
    west build -b nucleo_f767zi path/to/sketches/zephyr/ds18b20_ingest
    west flash
  5. Serial a 115200: dhcp ok e depois POST 200. A chave de sensor temp1 é importada no primeiro POST.

App no repositório: sketches/zephyr/ds18b20_ingest/ (prj.conf, overlay do D4, CMake).

Outras placas STM32

Qualquer placa Zephyr com Ethernet roda o mesmo C se você adicionar um overlay 1-Wire para o seu GPIO. A Nucleo-F429ZI e a Nucleo-H743ZI são as primas mais comuns. Uma Blue Pill com W5500 também é C, mas com Cube HAL + ioLibrary, não com este app Zephyr: use o relay da rede local do mesmo jeito.

Por que não começar por Nordic ou TI?

  • nRF52: Bluetooth ou Thread, sem HTTPS nativo por Wi‑Fi.
  • nRF9160: o LTE-M funciona, mas um chip e um plano de operadora são um primeiro kit de congelamento pior do que um ponto de rede na garagem.
  • TI SimpleLink / NXP RW612: SDKs em C com Wi‑Fi bem capazes, mas com uma comunidade hobbista menor que a de Nucleo + Zephyr.
  • CH32V307 agora tem suporte oficial: WCHNET C + Ethernet na placa (RISC-V QingKe, o mesmo relay TLS na rede local).

Relacionados

Os links de compra da Amazon podem incluir uma tag de Associados. Os links da Adafruit e de outras lojas são diretos (a Adafruit não tem programa de afiliados). O ProbeHarbor pode receber uma comissão por compras qualificadas na Amazon, sem custo extra para você.

Perguntas frequentes

Um STM32 pode enviar para o ProbeHarbor sem Arduino ou Python?
Sim. O exemplo para a Nucleo-F767ZI é em C com Zephyr: west build, gravação via ST-LINK, Ethernet na placa. DS18B20 no D4 do Arduino (PF14). HTTP para o relay TLS na rede local, igual ao caminho do Uno W5100. Guia: probeharbor.dev/about/stm32-zephyr-ingest.

Por que não usar HTTPS direto da Nucleo?
Dá para fazer, com o mbedTLS do Zephyr e uma CA embutida. O ProbeHarbor fica atrás da Cloudflare, então essa CA pode mudar. O relay na rede local mantém o microcontrolador em HTTP e deixa o Pi/NAS cuidar do TLS, o mesmo padrão do Uno com Ethernet.

O conector Arduino roda firmware Arduino?
Não. O D4 é só o pino no layout Arduino da Nucleo (PF14). O firmware é em C com Zephyr, não um .ino.