The lab

esp32-sense

The sense node that feeds apollo. An ESP32 running MicroPython with a BME280 driver I wrote by hand off the datasheet rather than pulling a library, posting to the house every cycle. If it fails to report fifteen times in a row it resets itself, on the theory that the most likely fix is the one nobody is there to do.

Discipline
Hardware & Firmware
Year
2026
Stack
MicroPython · ESP32 · BME280 · I²C

Writing the I²C driver by hand was not principle, it was debugging: the available libraries abstract away the compensation registers, and when the humidity readings looked wrong I wanted to see the raw words and apply the datasheet's compensation formula myself.

The self-reset is the part that matters in practice. A sensor in a cupboard that silently stops reporting is worse than one that is obviously dead, so fifteen consecutive failures trigger a hard reset rather than a log line no one reads.

Open to interesting problems

Got something
that needs building?

hello@louisreed.co.uk