How they fit together
The outdoor unit sends audio, the server does the work, and the frame draws what it gets. Below is each part with what it does, why it is the way it is, and where the code is.
The parts
Records one minute straight into PSRAM with the radio off, connects, syncs the clock, uploads and sleeps. Deep sleep is 14 µA.
The first version on a Raspberry Pi drew 450 mA idle and died on solar power. We needed a board that can sleep between sessions.
Receives audio and images, runs BirdNET, calculates the listening plan, composes the page, dithers and pushes. The web pages are pure standard library.
Everything heavy happens where power is cheap and the logs are easy to read. The outdoor unit does not have to keep the radio on while the analysis runs.
An HTTP server that receives 960,000 bytes and pushes them to the panel. Watchdog and WiFi recovery, nothing else.
The frame should not need a clock, a plan or the internet. It shows what it last got, even without power.
Watches the garden at 1x, takes a telephoto picture at the feeder when something moves, crops it and sends it. The server asks the model what is there.
The microphone does not hear everything. Two thrushes on the lawn were never heard, and that was the start of the camera.
A day on the server
The listening plan
Calculated by the same code that runs the outdoor unit| Steps down with the battery | ||
| above 3.80 V | 10 min | 20 min |
| above 3.65 V | 15 min | 30 min |
| below | 30 min | 60 min |
| In the fine window, and the rest of the day. The outdoor unit has to survive November. | ||
The colours of the panel
The panel has six colours. Everything on the wall is drawn in them.A colour that is not in the palette has to be made with dithering, and dithered text is hard to read. So text, lines and pads are pure palette colours. Only the plates are dithered.