A self-hostable, wireless e-ink picture frame system for the Soldered Inkplate 10.
This repository contains two components:
inkplate
- Arduino sketch for the Soldered Inkplate, an ESP32-based e-paper display:- Displays pictures hosted on server.
- Automatically updates the picture at midnight.
- Enters low power mode until the next scheduled refresh or a manual refresh (via wake button), extending battery life to several months.
server
- Server written with Axum + HTMX + Jinja:- Web dashboard for uploading and managing images.
- Handles image processing and storage to a SQLite database.
- Produces single binary for easy deployment.
The server requires a Rust installation in order to build.
- Navigate to the
server/
directory. - If you're cross-compiling for a different target architecture, you may prefer to use
cross
. Otherwise runcargo build --release
.- e.g., Raspberry Pi OS (64-bit):
cross build --release --target aarch64-unknown-linux-gnu
.
- e.g., Raspberry Pi OS (64-bit):
- Deploy the binary created in
target
to your server.
-
Install the
arduino-cli
brew install arduino-cli
-
Create
inkplate/secrets.h
with your Wi-Fi credentials and server info:const char *ssid = "YOUR_WIFI_SSID"; const char *password = "YOUR_WIFI_PASSWORD"; const char *host = "YOUR_SERVER_IP" const uint16_t port = "YOUR_SERVER_PORT";
-
Connect the Inkplate to your computer via USB.
-
Update
sketch.yaml
with your appropriate Inkplatefqbn
andport
:arduino-cli board list # Identify device's port
-
Compile and upload the
inkplate/inkplate.ino
sketch to the Inkplate.arduino-cli compile --verbose --upload --profile default
Note
If you encounter a "Bad CPU type in executable" error on Apple Silicon, install Rosetta using softwareupdate --install-rosetta