Til innholdet
Fugleramme
Byggeloggen

Delelisten, strømmen, tidslinjen og valgene underveis

Alt er vanlige deler. Det som tok tid var strømmen ute og fargene inne.

Rammen på veggen, 24. september 2026.
Rammen på veggen, 24. september 2026.
Boksen ute, på gjerdestolpen.
Boksen ute, på gjerdestolpen.
Innsiden: batteriet, lademodulen og XIAO-brettet.
Innsiden: batteriet, lademodulen og XIAO-brettet.

Delelisten

  • Waveshare ESP32-S3-ePaper-13.3E6, 13,3" Spectra 6, seks farger, 16 MB PSRAM
  • IKEA RÖDALM-ramme, 30×40 cm
  • Seeed XIAO ESP32-S3, 8 MB PSRAM
  • INMP441 I2S-mikrofon, skumgummi mot vind
  • Waveshare Solar Power Manager (D), MPPT-lading
  • 3,7 V LiPo på 10 Ah
  • Solcellepanel, 6 til 24 V inn
  • En gammel PC med Linux, Python 3.12, to venv-er
  • systemd for tjenestene, cron for døgnet
  • Android-telefon med telelinse i vinduet
  • Før: Raspberry Pi 3 B med HQ-kamera, parkert

Strømmen ute

Deep sleep mellom øktene14 µA
Opptak og opplasting, noen titalls sekunder~100 mA
Raspberry Pi 3 B i tomgang, til sammenligning~450 mA

Solcellen var netto positiv i august med 24 økter om dagen. Planen trappes ned av seg selv når spenningen faller. Målet er at boksen skal overleve november.

Tidslinjen

21. juli 2026
Første bilde på skjermen, sendt fra Macen.
24. juli
Daglig push fra cron på hjemmeserveren.
28. juli
Utedel v1 på Raspberry Pi dør av strømmangel.
4. august
Utedel v2 på XIAO ESP32-S3 i drift, soldrevet.
28. august
Fuglesiden tar over for det frie AI-bildet.
13. september
Kostnadsbremsene på kameraanalysen.
September
Telefonen som kamera. Repoet gjøres klart for å bli åpent.

Valgene underveis

Det meste her ble ikke bestemt på forhånd. Vi prøvde noe, målte, og byttet ut det som ikke holdt. Hvert valg står med problemet, det som ble prøvd, det som ble målt og det som ble valgt.

Fast oppsett, ikke fritt bilde

Problemet
Et fritt AI-bilde hver dag var pent, uforutsigbart, og sa lite om hva som faktisk ble hørt.
Prøvd
Fritt bilde av dagens fugl, juli til august 2026.
Målt
Veggen viste en fugl. Ikke hvilke, ikke når, ikke hvor sikkert.
Valgt
Samme oppsett hver dag: artene med navn, klokkeslett og sikkerhet. Det frie bildet lever som reserve.

Koden setter fuglene på grenen

Problemet
Teksten trenger et tomt felt til venstre. Modellen bestemte selv hvor den tegnet.
Prøvd
Be om tomt felt i klartekst, tre ganger. Gi den en ferdig gren som referanse.
Målt
0,1 % blekk i tekstsonen ett forsøk, 14,8 % det neste. Med grenen som mal: 20,6 %, verre enn uten.
Valgt
Modellen tegner én fugl om gangen. Koden setter dem på grenen. Tekstsonen måles, og ureint forkastes.

Bare palettfarger på siden

Problemet
Panelet har seks farger. Alt annet må lages med prikker, og dithret tekst blir vanskelig å lese.
Prøvd
En halvgjennomsiktig hvit pute bak teksten, for lesbarhet.
Målt
En grumsete flekk. Fargen finnes ikke, så dithringen gjettet den.
Valgt
Alt tegnes i de seks fargene. Ren hvit pute når den trengs; den dithres ikke i det hele tatt.

Stedsfilter og blokkliste

Problemet
BirdNET foreslår arter som finnes i Norge, men ikke i en villahage.
Prøvd
Posisjon og dato som filter, som BirdNET anbefaler.
Målt
Myrrikse i 80 opptak fram til 19. september, opptil 0,91 i sikkerhet.
Valgt
En blokkliste for de klassiske feilene. De tegnes aldri, men står i fotnoten så det er synlig at de ble hørt.

Lytteplanen følger solen og batteriet

Problemet
En fast plan treffer morgenkoret i juni og bekmørke i desember.
Prøvd
Fast morgenrunde fra klokken fire, som i firmwaren.
Målt
Fem timers forskjell i soloppgang gjennom året. 70 % av de sikre funnene hang på ett enkelt minutt.
Valgt
Soloppgangen regnes ut på serveren, uten nettkall. Finvindu rundt den, tettere sampling, trappet ned når spenningen faller.

Dyr modell til det som kjører sjelden

Problemet
Regningen vokste uten at noen så hvor.
Prøvd
Kameraet på Raspberry Pi med en tenkende modell i 1280 px, hvert bilde.
Målt
1559 bilder på åtte dager var 80 til 90 % av forbruket. Halvparten uten fugl.
Valgt
Beste modell til nye arter, én gang. Billigste uten tenking i 768 px til kameraet, med tak per time og pause etter 429.

Vakten ser etter stillhet

Problemet
Utedelen lå femten timer i bootloader. Ingen merket det.
Prøvd
En vakt som reagerte på nye data.
Målt
Ingen nye filer, ingen reaksjon. En vakt som bare ser på nye data er blind for at dataene har sluttet å komme.
Valgt
Vakten ser etter det som ikke skjer, og er ellers helt stille. Én melding når noe er galt.

07:07, ikke 07:00

Problemet
Vær-API-et er mest overbelastet på hel time.
Prøvd
Cron på 07:00.
Målt
To dagers 503-stopp i juli 2026.
Valgt
Sju over sju. Og været stopper aldri siden: tre forsøk, så tegnes den uten værreferanse.

Prøvd og forkastet

Utedel v1 på Raspberry Pi 3 B

Trakk 450 mA i tomgang, fikk undervoltage på solcelle og døde 28. juli 2026. Mikrofonen og designvalgene ble med videre.

Modellen komponerer hele plansjen

Den tegnet sin egen gren midt på siden uansett hva referansen sa. Koden tok over komposisjonen.

Kamera på Raspberry Pi med HQ-kamera

Virket, men kostet for mye i modellkall. Telefonen med telelinse tok over i september 2026.

Plansjer fra en 3D-modell i Blender

For arter uten brukbar plansje. Streken virket, fjærdrakten gjorde det ikke, og hver art kostet mer modellering enn den var verdt. Lagt dødt 20. september 2026.

Verktøyene

Mye av koden er skrevet sammen med Claude Code. Det som ble målt, valgt og forkastet står under valgene over. Repoet har en AGENTS.md med konvensjonene, så en agent jobber etter de samme reglene som en kollega ville gjort.