About the project

Low power e-paper dashboard using ESP32

Project info

Difficulty: Moderate

Platforms: Arduino

Estimated time: 2 days

License: MIT license (MIT)

Items used in this project

Hardware components

ESP32 WiFi-BT-BLE MCU Module / ESP-WROOM-32 ESP32 WiFi-BT-BLE MCU Module / ESP-WROOM-32 x 1
400x300, 4.2inch E-Ink raw display, three-color 400x300, 4.2inch E-Ink raw display, three-color x 1
buzzer, 9.7 mm x 9.7 mm x 5 mm deep, M, 5 VDC, 80 dB, Surface Mount, Audio Indicator buzzer, 9.7 mm x 9.7 mm x 5 mm deep, M, 5 VDC, 80 dB, Surface Mount, Audio Indicator x 1
SD Card slot SD Card slot x 1
LiPo Battery (550 mAh) LiPo Battery (550 mAh) x 1
CP2104 USB to serial converter CP2104 USB to serial converter x 1
Extension header Extension header x 1

View all

Hand tools and fabrication machines

soldering station soldering station x 1

Story is a low power E-paper display with a wide array of possibilities. It can be a weather dashboard, To-do list, picture frame, basically anything that requires a display. It is developed completely using FOSS. Kicad for PCB design, Freecad for enclosure , Arduino for firmware and gimp for image processing.


  • ESP32 based low power e-paper display
  • WiFi and Bluetooth for connectivity
  • Under 75uA consumption in sleep mode
  • Onboard CP2104 USB-UART converter for programming
  • Micro SD Card slot for storing images, files, etc
  • Piezo buzzer for notifications and alerts
  • RGB LED for notifications and alerts
  • 2x Capacitive touch buttons for user input
  • Battery charger with a large 2000mAh battery
  • Extension header for interfacing and expanding capabilities

See it in action

Project Logs

Release v0.1

Software for this project is never ending. I find new enhancements and features that can be added almost everyday and I am sure you guys will come up with even more. This release contains a subset of basic features to call it a ‘smart clock’?

Currently it shows the time, date, calendar, weather and to-do list. It fetches the time from a time server. The weather is fetched from weatherunderground and the to-do list from todoist. I have modified the wifimanager library for easy configuration of SSID, password, time zone, todoist and weatherunderground API keys. The configuration is saved to SPIFFS so it can persist across resets. The time is updated via partial refresh every minute and a full refresh every 5th minute to avoid ghosting. 

The icons are from feathericons. The wifi symbol indicates if the device successfully connected to wifi when it had to update the weather and to-do list. This update interval is currently set to 6 hours.

It is pretty low power at the moment.  Consumes under 75uA in deep-sleep mode and should run at least 30 days with update every minute. It will run much longer if updated once a day.

3D printing an enclosure

I finally got around to making the 3D printed enclosure. If I may say so myself, it looks quite slick. I was going for a minimalist look with the thinnest bezels possible. It is completely designed using freecad and the files are available on github.

Building The GUI

Building the GUI was not difficult at all. I first designed it in gimp and then converted it to code. The GxEPD library has an easy to use interface for displaying text, images, and geometrical shapes. The font I used is the GoBold , andweather icons are feather icons

Adding the functionality was the difficult part. The plan is to use the weatherunderground API for weather, todoist for TO-DO list and a network time server for syncing time. All these details will be updated every six hours. The esp32 is in deep sleep for most of the time. It wakes up changes the time with a partial refresh and sleeps. Every 5 mins it does a full refresh to avoid ghosting.

Full Image Hardware

I always wanted a display on my office desk which showed time, tasks, calendar, etc and all I could find were devices with LCD displays. Their design did not appeal to me so I decided to make one myself with an e-paper display. The e-paper displays from good-display are very aesthetically pleasing if designed well and don’t need any power to display an image, which means the controller can update and go to sleep.

The design of is very simple. It uses the esp32 as the main controller with wifi and bluetooth functionality, SD-card slot, GPIO expander (PCF8574), piezo buzzer, RGB LED and 2 capacitive touch buttons. And to program it I have added a CP2104 USB-UART chip which is powered through a solder bridge, so i can cut the trace for lower power consumption when required. The board does not have any sensors but can be added through the GPIO expander.

The front panel contains the RGB LED and the two touch buttons. They are connected using a flat flex cable to the top side of the PCB. It wraps around the e-paper.


Github Repo


Photo of rgujju


Software developer by day, Hardware developer by night


Leave your feedback...