How the two stations talk
Station 1 — Bird Mic Listener
One Raspberry Pi, one USB lavalier mic. Runs BirdNET-Pi (Cornell's acoustic classifier) 24/7 and builds the live collage as a local website.
Parts list — Station 1
| Part | Qty | Price | Buy | |
|---|---|---|---|---|
| Raspberry Pi (4B, 5, 3A+, or Zero 2W) | 1 | ~$25–80 | Amazon | |
| MicroSD card (≥32GB) | 1 | ~$10 | Amazon | |
| USB lavalier microphone | 1 | $16.95 | Amazon | |
| Raspberry Pi power supply | 1 | ~$10 | — | |
| Station 1 total | ~$62–117 |
Build steps — Station 1
- FLASHUse Raspberry Pi Imager → pick Raspberry Pi OS Lite (64-bit). In the customisation dialog set: username, WiFi SSID + password, hostname
birdnet, and enable SSH with password auth. - MOUNTPlug the USB mic into the Pi. Place it in a window, or mount it outside (weatherproofing needed if so).
- BOOTInsert the SD card, power on, wait ~60–90 seconds for first boot.
- SSH INFrom another computer on the same network:
ssh <your-username>@birdnet.local
- INSTALLRun the installer:
curl -s https://raw.githubusercontent.com/Twarner491/AvianVisitors/avian-visitors/newinstaller.sh | bash
Clones the repo, installs BirdNET-Pi, wires up the collage overlay. Takes 20–40 minutes and reboots automatically when done. - DONECollage:
http://birdnet.local/— Stock BirdNET-Pi admin UI:http://birdnet.local/index.php
Station 2 — E-Ink Wall Frame (optional)
A second Pi drives a Pimoroni Inky Impression 13.3" e-ink panel, mounted in a wood frame. It screenshots Station 1's collage, mats it, and pushes it to the display every 15 minutes when something changes.
Parts list — Station 2
| Part | Qty | Price | Buy | |
|---|---|---|---|---|
| Raspberry Pi 3 A+ or Zero 2 W | 1 | ~$25–35 | Amazon | |
| Pimoroni Inky Impression 13.3" (Spectra 6) | 1 | $299.99 | Amazon | |
| A4 wood photo frame | 1 | $21.99 | Amazon | |
| Long, flat micro-USB cable | 1 | $7.99 | Amazon | |
| Flat USB power brick | 1 | $7.59 | Amazon | |
| Station 2 total (per project's own figure) | ~$365 |
frame/hardware/ folder — you'll need access to a 3D printer or a print service if you want that exact mount instead of designing your own bracket.
Build steps — Station 2
- FLASHSame as Station 1: Raspberry Pi Imager → OS Lite (64-bit) → this time set hostname
birdpic, SSH enabled. - MOUNTPress the Pi onto the panel's 40-pin header, seat both into the printed backing, power up.
- SSH IN + CLONE
ssh <your-username>@birdpic.local sudo apt update && sudo apt install -y git git clone https://github.com/Twarner491/AvianVisitors cd AvianVisitors/frame
- CHOOSE SOURCEPick how the frame gets its birds, then run one of:
# Default — pairs with your Station 1 mic on the same network ./install.sh # No mic: pull from BirdWeather for any ZIP code ./install.sh --bird-weather --zip 94107 # No mic: follow one specific public BirdWeather station ./install.sh --station-id 12345 # Point at a mic hosted at a public URL ./install.sh --image-url https://bird.onethreenine.net/frame.png?k=YOUR_FRAME_KEY
Enables SPI + I2C, installs dependencies and a systemd timer, writes~/.birdframe/config.toml, reboots once. - TUNE (optional)Toggle species-name labels anytime:
birdframe-names on birdframe-names off
If your frame uses a different mat than the A4/A5 default, setopeningin the config file —0.7071is the default A5 ratio, up to0.98for a bare panel,~0.84as a B5 starting point.
Optional — Restyle or regenerate illustrations
Needed if you want a different art style, or your region's birds aren't in the bundled Western-US set.
| Requires | Cost / Type | Get it |
|---|---|---|
| Gemini API key | Paid — billing must be enabled for image generation | aistudio.google.com/apikey |
| eBird API key | Free — used to filter species by region | ebird.org/api/keygen |
pip install -r ~/BirdNET-Pi/avian/scripts/requirements.txt export GEMINI_API_KEY='your-key' python3 ~/BirdNET-Pi/avian/scripts/pregen.py --labels ~/BirdNET-Pi/model/labels.txt --force python3 ~/BirdNET-Pi/avian/scripts/cutout.py python3 ~/BirdNET-Pi/avian/scripts/build_masks.py # optional region filter (needs EBIRD_API_KEY set) python3 ~/BirdNET-Pi/avian/scripts/pregen.py --ebird-region US-CA
Community-shared illustration bundles for other regions/styles: illustration-bundles.md — worth checking before generating your own, may save the Gemini cost entirely.
Total cost summary
| Build | Range |
|---|---|
| Station 1 only (mic, viewable in browser) | ~$62–117 |
| Station 2 only (frame — needs Station 1 or BirdWeather) | ~$365 |
| Full build (both stations) | ~$427–482 |
Sources & further content
Twarner491/AvianVisitors
Source code, install scripts, BOM tables used in this guide.
theodore.net/projects/AvianVisitors
Creator's own project page and background.
Assembly guide (YouTube)
Teddy's own walkthrough video, made to accompany the write-up.
Nachtzuster/BirdNET-Pi
The base project this is forked from — audio capture + ID engine.
Hackaday coverage
Independent write-up on the build and its e-ink display.
Boing Boing coverage
Covers the $80 mic-only build before the frame was added.