The parts list, the power, the timeline and the choices along the way
All ordinary parts. What took time was the power outside and the colours inside.



The parts list
- Waveshare ESP32-S3-ePaper-13.3E6, 13.3" Spectra 6, six colours, 16 MB PSRAM
- IKEA RÖDALM frame, 30×40 cm
- Seeed XIAO ESP32-S3, 8 MB PSRAM
- INMP441 I2S microphone, foam against wind
- Waveshare Solar Power Manager (D), MPPT charging
- 3.7 V LiPo, 10 Ah
- Solar panel, 6 to 24 V in
- An old PC running Linux, Python 3.12, two venvs
- systemd for the services, cron for the day
- Android phone with a telephoto lens in the window
- Before: Raspberry Pi 3 B with the HQ camera, parked
Power outside
| Deep sleep between sessions | 14 µA |
| Recording and upload, a few tens of seconds | ~100 mA |
| Raspberry Pi 3 B idle, for comparison | ~450 mA |
The solar panel was net positive in August with 24 sessions a day. The plan steps down by itself when the voltage drops. The goal is for the box to survive November.
The timeline
The choices along the way
Most of this was not decided in advance. We tried something, measured, and replaced what did not hold up. Each choice is listed with the problem, what was tried, what was measured and what was chosen.
A fixed layout, not a free image
The code puts the birds on the branch
Only palette colours on the page
Location filter and block list
The listening plan follows the sun and the battery
An expensive model for what runs rarely
The watch looks for silence
07:07, not 07:00
Tried and dropped
Outdoor unit v1 on a Raspberry Pi 3 B
Drew 450 mA idle, got undervoltage on solar power and died on 28 July 2026. The microphone and the design choices carried on.
The model composes the whole plate
It drew its own branch in the middle of the page no matter what the reference said. The code took over the composition.
Camera on a Raspberry Pi with the HQ camera
Worked, but cost too much in model calls. The phone with a telephoto lens took over in September 2026.
Plates from a 3D model in Blender
For species without a usable plate. The line work worked, the plumage did not, and each species cost more modelling than it was worth. Dropped on 20 September 2026.
The tools
Much of the code was written together with Claude Code. What was measured, chosen and dropped is under the choices above. The repo has an AGENTS.md with the conventions, so an agent works by the same rules a colleague would.