A keychain-sized e-paper display that changes image every 30 minutes and lasts over 20 days on standby
Display and HMIe-paperkeychainlow-powerdisplayESP32
Official path: https://oshwhub.com/guozhaowen/box-keychain
01 Overview
The box-keychain is a compact e-paper keychain based on the ESP32 family, small enough to attach to your keys. It exploits the low power and static display properties of e-paper to achieve long standby times.
The device refreshes the screen every 30 minutes to show a preset image, suitable as a personal accessory or a subtle notification device. Users can also manually cycle images via a button for interactivity.
Deep sleep current is very low, giving a measured standby time of more than 20 days, so it can be carried daily without frequent charging.
This project is positioned as a DIY or small-batch build, not a commercial product, and does not involve certifications or mass-production optimization.
Unlike typical LCD or OLED screens, e-paper retains its content even when power is removed, so the display does not need to be powered during standby, further reducing power consumption.
The design emphasizes simplicity and reliability; both hardware and software are easy to modify, allowing users to customize image sets and refresh strategies.
02 Hardware
MCU: ESP32 family (exact module per schematic, typically ESP32-PICO or ESP32-C3), responsible for controlling the e-paper, handling button input, and entering low-power modes.
Display: E-paper panel (typical 1.54" or 2.13", SPI interface, driver IC like SSD1681 or UC8253), static display, content retained without power.
Power: 3.7V Li-ion cell (typical 200-400 mAh), regulated to 3.3V via LDO or DC-DC for the ESP32 and panel. Specific regulator IC per schematic.
Charging: Micro-USB or Type-C port with a TP4054 or similar charge management IC; charge current set by external resistor.
Button: At least one tactile button to wake the device or cycle images, configurable as GPIO interrupt wake.
Battery monitoring: Resistor divider network scales battery voltage to ESP32 ADC for low-battery detection.
Temperature sensing (optional): NTC thermistor connected to ADC for low-temperature compensation (e-paper refresh may be unreliable in cold conditions).
Layout notes: Keep antenna area clear of metal or battery; secure the e-paper flex cable to prevent bending damage.
03 Software flow
1. Flash firmware: Compile and flash using ESP-IDF or Arduino framework, packaging image resources into a Flash partition.
2. Initialize: On boot, initialize SPI peripheral, e-paper driver, and GPIOs; read battery voltage.
3. First display: Read the first preset image from Flash and refresh it to the e-paper.
4. Main loop: Before deep sleep, set RTC timer to wake approximately every 30 minutes.
5. Wake handling: On wake, check if triggered by button; if so, cycle to next image and refresh immediately; otherwise, refresh current image on schedule.
6. Low battery policy: If battery voltage is below threshold, show low-battery icon and extend refresh interval (e.g., 60 minutes) to prolong standby.
7. Error handling: If e-paper refresh fails (e.g., communication error), log error and attempt re-initialization; if persistent, enter deep sleep until next wake.
8. Update images: Update the Flash partition containing images via serial or OTA, without modifying driver code.
04 Core points
Deep sleep current varies across ESP32 variants; verify actual standby current for the chosen module to meet expectations.
E-paper refresh draws significant current (especially full refresh); ensure the power supply can handle transient peaks to avoid voltage drops causing resets.
E-paper driver IC initialization sequences and timings differ by model; do not copy code across variants without consulting the respective datasheet.
Image data must be preprocessed according to the e-paper's pixel format and scan direction, or the display may appear inverted or misaligned.
Low temperatures can slow or fail e-paper refresh; consider adding temperature sensing and compensation logic.
Battery voltage detection requires calibrating the ADC reference and accounting for divider resistor tolerances to avoid false low-battery alerts.