Featured / 01
EmbNode
C++17 FreeRTOS telemetry prototype
Embedded telemetry firmware for ESP32 and STM32 boards, written in C++17 on FreeRTOS. Sampling, batching, and sending each run as their own task, and the packet format, OTA update logic, and power accounting are tested on a laptop before any hardware is involved.
- Problem
- A battery-powered sensor on an unreliable network has to keep sampling on schedule when sends fail, and an OTA update cannot leave the device in an unknown state.
- System design
- Sampler, aggregator, and communications tasks hand data off through FreeRTOS queues. Communications tries MQTT first and falls back to HTTP.
- Evidence
- Host tests feed in truncated frames, bad CRCs, and OTA backends that fail or commit after the deadline, with a fake clock so timing is repeatable.
- Outcome
- The packet and OTA logic pass those tests. DMA sampling, delivery retries, and battery measurements on a real board are still to do, and a full queue currently drops samples without counting them.
- C++17
- FreeRTOS
- ESP32 / STM32
- MQTT / HTTP
- OTA / Watchdog
- CMake / CTest
- CRC16
- Frame checksum
- 3
- FreeRTOS tasks
- MQTT, HTTP
- Send path with fallback