Ingesta con STM32 y Zephyr

Envía lecturas DS18B20 desde una Nucleo-F767ZI con Zephyr en C y Ethernet integrado. west, ST-LINK y el mismo relay HTTPS en la LAN que el Uno.

Primer plano de cables Ethernet Cat-5e blancos con conectores RJ45
El JSON de las sondas suele salir de la LAN por Ethernet o por un relay cercano, no directamente a internet. Foto: DiscDepotDundee.co.uk. CC BY-SA 4.0

El ESP32 y la Pico W cubren el Wi‑Fi. Si quieres otro fabricante de chips y una cadena de herramientas que no sea ni Arduino ni Python, una ST Nucleo-F767ZI con Zephyr envía por POST el mismo JSON de ingesta a través de su Ethernet integrado. C, west, ST-LINK. El conector compatible con Arduino es solo un patillaje: el firmware no es un sketch de Arduino.

Usar HTTPS nativo en Zephyr implica incrustar en la imagen una CA de la CDN, y eso falla cuando rota la cadena de certificados del edge. Este ejemplo usa el mismo relé HTTP→HTTPS en la LAN que la opción Uno + W5100, así Cloudflare puede cambiar de CA sin que tengas que volver a flashear.

Piezas

Piezas para una sonda de congelación STM32 con Zephyr
Pieza Por qué Comprar
Nucleo-F767ZI Cortex-M7, MAC + PHY Ethernet integrados, depurador ST-LINK. Sin módulo Wi‑Fi. ST Nucleo-F767ZI
DS18B20 impermeable Sonda para tuberías o sótano ventilado. Datos en el pin Arduino D4 (PF14). Adafruit DS18B20 · Amazon
Resistencia de 4,7 kΩ Pull-up desde los datos del DS18B20 a 3,3 V. No alimentes la sonda desde el pin de 5 V de Arduino. 4,7k en Amazon
Toma Ethernet DHCP en tu LAN. Una Pi, un NAS o un portátil ejecuta el relé TLS. Cualquier latiguillo Cat5e hasta tu switch.

Cableado

  • DS18B20 VDD → Nucleo 3.3V
  • DS18B20 GND → GND
  • Datos del DS18B20 → Arduino D4 (STM32 PF14), 4,7k a 3,3 V
  • RJ45 → LAN. USB del ST-LINK para flashear y para el puerto serie a 115200.

Compilar y flashear

  1. Abre Dashboard → Devices y descarga Zephyr main.c (con la ruta de ingesta ya rellenada), o copia los defines del aviso de ingesta.
  2. En un equipo de la LAN:
    python3 sketches/relay/push_https_forward.py --listen 0.0.0.0:8080 \
      --upstream https://probeharbor.dev
  3. Define INGEST_HOST con esa máquina. Sustituye src/main.c por el archivo descargado si quieres llevar la ruta incrustada.
  4. Desde un espacio de trabajo de Zephyr:
    west build -b nucleo_f767zi path/to/sketches/zephyr/ds18b20_ingest
    west flash
  5. Puerto serie a 115200: dhcp ok y luego POST 200. La clave de sensor temp1 se importa con el primer POST.

Aplicación en el repositorio: sketches/zephyr/ds18b20_ingest/ (prj.conf, overlay para D4, CMake).

Otras placas STM32

Cualquier placa Zephyr con Ethernet puede ejecutar el mismo C si añades un overlay 1-Wire para tu GPIO. Las Nucleo-F429ZI y Nucleo-H743ZI son las primas habituales. Una Blue Pill con W5500 también es C, pero eso es Cube HAL + ioLibrary, no esta aplicación de Zephyr: usa el relé de la LAN de la misma manera.

¿Por qué no empezar por Nordic o TI?

  • nRF52: Bluetooth o Thread, no HTTPS nativo por Wi‑Fi.
  • nRF9160: LTE-M funciona, pero una SIM y un plan con operador son peor primer kit de congelación que una toma Ethernet en el garaje.
  • TI SimpleLink / NXP RW612: SDK en C con Wi‑Fi muy capaces, pero con menos comunidad aficionada que Nucleo + Zephyr.
  • CH32V307 ya tiene soporte oficial: WCHNET C + Ethernet integrado (RISC-V QingKe, el mismo relé TLS en la LAN).

Relacionado

Los enlaces de compra de Amazon pueden incluir una etiqueta de afiliado (Associates). Los enlaces de Adafruit y otros vendedores son directos (Adafruit no tiene programa de afiliados). ProbeHarbor puede recibir una comisión por compras válidas en Amazon sin coste adicional para ti.

Preguntas frecuentes

¿Un STM32 puede enviar datos a ProbeHarbor sin Arduino ni Python?
Sí. El ejemplo para Nucleo-F767ZI está en C con Zephyr: west build, flasheo con ST-LINK, Ethernet integrado. DS18B20 en el D4 de Arduino (PF14). HTTP hacia el relé TLS de la red local, igual que la vía Uno W5100. Guía: probeharbor.dev/about/stm32-zephyr-ingest.

¿Por qué no HTTPS directamente desde la Nucleo?
Se puede, con mbedTLS de Zephyr y una CA integrada. ProbeHarbor está detrás de Cloudflare, así que esa CA puede cambiar. El relé local mantiene el microcontrolador en HTTP y deja que la Pi/el NAS gestione TLS, el mismo patrón que el Uno con Ethernet.

¿El conector Arduino ejecuta firmware de Arduino?
No. D4 es solo el pin con disposición Arduino de la Nucleo (PF14). El firmware es C con Zephyr, no un .ino.