7-Color E-Paper Digital Photo Frame

A digital photo frame project utilizing an ESP32S3 and a 5.65-inch seven-color E-Paper display. It features a local Flask-based image server for automated dithering and image processing, with power-optimized hibernation cycles for long battery life.

7-Color E-Paper Digital Photo Frame

The 7-Color E-Paper Digital Photo Frame is a sophisticated DIY project that combines low-power embedded hardware with automated image processing to create a vibrant, energy-efficient display. By leveraging the unique capabilities of a 7-color E-Paper screen and the processing power of the ESP32S3, this project transforms standard digital photos into stylized, dithered art pieces that persist on-screen without consuming power.

System Architecture

The project operates on a client-server model. A Raspberry Pi (or any local PC) runs a Flask-based API server that acts as the brain of the operation. This server monitors a specific folder for new images, automatically resizes them to the display’s 600x448 resolution, and applies Floyd–Steinberg dithering to map the image colors to the specific 7-color palette supported by the hardware.

The ESP32S3 acts as the display controller. It wakes up from deep sleep, connects to the local Wi-Fi, and requests the processed image data from the Flask server. Once the image is received and rendered, the ESP32 calculates its next wake-up time based on a schedule provided by the server and enters hibernation to conserve battery.

Hardware Integration

The project is specifically designed for the Seeed Studio XIAO ESP32S3 and a 5.65-inch Seven-Color E-Paper Display. The use of the XIAO form factor makes the device compact, while the ESP32S3’s PSRAM is utilized to buffer image data before pushing it to the display. Power is typically provided by a 3.7V LiPo battery, making the frame truly wireless.

Intelligent Power Management

One of the standout features of this project is its power-saving workflow. E-Paper displays are ideal for this application because they require zero power to maintain an image. To maximize battery life, the ESP32 follows a strict hibernation schedule:

  • Daytime (8 AM - 8 PM): The device wakes up every hour to check for new images.
  • Nighttime (8 PM - 8 AM): The device enters a long-term hibernation state, waking up only when the morning cycle begins.

Software and Image Processing

The server-side logic is handled by Python scripts using the Pillow and NumPy libraries. When an image is added to the source folder, the monitor.py script detects the change and converts the file into a format the ESP32 can easily ingest. This offloads the heavy lifting of image quantization and dithering from the microcontroller to the more powerful Raspberry Pi, ensuring fast updates and high-quality visual results.

For developers looking to customize the project, the repository provides both a test program for the E-Paper display and the main photo frame application. The modular nature of the Flask API allows for easy expansion, such as pulling images from cloud services or integrating weather and calendar data into the display cycle.