Low Power eInk Display

Experimental DIY Project, Oct 2026


What is this ?

A wall e-Ink display that can render anything (currently Calendar) for days/weeks and updates very infrequently via my home WiFi.

eInk Calendar showing current date and upcoming events on a 4 inch display
finished project on my desk

What I wanted (a rough idea)?


How does it work? (for Calendar v1.0)


Project Steps

Step 1 : Getting parts

Getting all the components to set the constraints ahead and based on this everything is build around.

  1. ESP32 eink Display Driver BoardView partexternal link icon
  2. 5.83 inch eInk display (Red/Yellow/Black/White) View partexternal link icon
  3. 18650 LiPo battery - x1 View partexternal link icon
  4. Single 18650 battery board (for charging and 3.3v DC supply to ESP32) View partexternal link icon
  5. 38-Pin ESP32 Expansion Board (for seating EPS32 board and have easy access to all pins for future prototyping) View partexternal link icon

Step 2 : Designing the enclosure

The enclosure was designed with 3 parts — the front panel, the main (back panel) and the back cover. Post designing I exported the 3 objects in .STL format for 3D printing.

Assembly of 3 components in Onshape CAD
Assembly of 3 components in the onshape (CAD). The black one is the 5.83" display, which I designed just for reference.
Drag the 3D model to rotate. Scroll to zoom in and out.

Display Panel

Back Panel

Back Panel Cover

Step 3 : 3D printing

For 3D printing, I used my Bambu Lab A1 with a matt black PLA filament. I modified (from the default settings) and added 5mm brim on the outer edges since few test prints had shrinkage on corners.
(will add Timelapse video next time 😎)

3D printed parts on Bambu Lab A1
Preview of 3D back cover on the Bambu Lab Slicer.

Step 4 : Assembly of components

This is the most exciting step and all past hard-work comes together.

  1. Cleaned up 3D printed parts from the printer bed and deburred the edges.
  2. Added brass inserts (M2.5x3x3) on the front panel and rear cover using soldering iron.
  3. Added small magnets (x6) (6x3mm) to the rear back plate and the middle back panel(easy access to boards).
  4. M2.5 screws to hold the front and middle panels, EPS32 board and power board.
  5. Added 3.3V headers to the power board and connected the ESP board to power it directly.

Step 5 : UI Design

Designed a simple layout in Figma with 480 x 648px resolution frame and using a single monospace font - Noto Sans Mono Bold

Figma UI design for eInk display
Figma design for the Calendar UI.

Step 6 : Testing and Uploading the code

Once the hardware was set, I booted up the Arduino IDE and installed all the dependencies to connect to the ESP32 board using USB-C. Post demo code that was given with the board, I fired-up Claude Code and handed the UI design for it to plan ahead.


Only step before final sketch upload was to convert the font file (.ttf) into the C++ header library file(.h ) using the below python script.

make_calendar_fonts.py
Arduino IDE with eInk display code
Arduino IDE with final sketch "Calendar.ino" along with all the required files in same folder.

Once the font file was generated (CalFonts.h), compiled and uploaded the sketch to the ESP32 and flash - the e-Ink came to life. Voila !

Calendar.ino

Learnings:

As I was building this project, lot of thoughts and ideas crossed my mind on what would I will do next time if I had to build this again.


Some of the thoughts: