A WiFi photo frame for the Pimoroni Inky Frame 7.3" color e-ink display.
Fetches images from a configurable URL, renders them on the 7-color ACeP e-ink panel (800x480, 5:3), and sleeps for an hour before fetching the next one. Quiet hours (10pm-6am) are respected — no updates overnight.
Designed to work with trmnl-photos, which serves pre-dithered photos sized for this display.
- Pimoroni Inky Frame 7.3" — 7-color ACeP (black, white, red, green, blue, yellow, orange)
- Raspberry Pi Pico W (RP2040) with 8MB PSRAM
- FAT-formatted microSD card (required)
Download the latest Pimoroni MicroPython firmware from pimoroni/inky-frame releases. Use the pico_w_inky-*-with-filesystem.uf2 build.
Hold BOOT, tap RESET, copy the .uf2 to the RPI-RP2 drive.
Copy secrets.py.example to secrets.py and fill in your details:
WIFI_SSID = "your_network"
WIFI_PASSWORD = "your_password"
WIFI_COUNTRY = "CA" # required for Pico W
PHOTO_URL = "http://your-server:8099/random?w=800&h=480&palette=7color"pipx install mpremote
mpremote cp secrets.py :secrets.py
mpremote cp main.py :main.py
mpremote mkdir lib
mpremote cp lib/trmnl_display.py :lib/trmnl_display.py
mpremote cp lib/trmnl_network.py :lib/trmnl_network.py
mpremote cp lib/trmnl_power.py :lib/trmnl_power.py
mpremote cp lib/trmnl_storage.py :lib/trmnl_storage.pyInsert a FAT-formatted microSD card and press reset.
On each cycle the device:
- Reads battery voltage (before WiFi — GPIO29 shares SPI with the radio)
- Connects to WiFi (with retry, up to 3 attempts)
- Syncs time via NTP
- Checks quiet hours (10pm-6am) — if so, sleeps until 6am
- Downloads image from
PHOTO_URLto the SD card - Renders image on the 7-color e-ink display
- Sleeps for 1 hour, then resets and repeats
See NOTES.md for Pico W gotchas discovered during development (WiFi country codes, WPA3 issues, ADC conflicts, sleep behavior, etc).
MIT