Close
0%
0%

LightInk

ESP32 E-Ink watch that can run solely on solar power

Similar projects worth following
0 followers
This project tries to mimic the 90s solar digital watches that run forever.
But with newer technology (eInk/WiFi/BT/Lora/GPS, ...).

The challenging part of this project is to minimize the ESP32 on time to sub "ms" levels while updating the display. This was done with re implementation of SPI in the wake stub code of the ESP32.

The requirement for a feature to be added in is that it can be power gated and off when not needed, and overall does not use much power (and fits in the space!).

The project name comes from Light-weight - Light powered eInk.

All the code and materials is in Github: https://github.com/DarkZeros/LightInk
Checkout the features demo video:
And the power usage demo video:


This project started long time ago in 2019, with the idea to build a solar watch that can use LORA packets to communicate to a receiver at home. Back then i started with a Heltec Wireless stick lite and an external eink display.


Then I discovered "Watchy" https://watchy.sqfmi.com/ and immediately bought one, it didn't have what i wanted (sleek design, LORA, and solar), however i though it was a very good foundation.


Back then, i contributed to Watchy many patches to optimize the display as much as I could, nut at some point, that was not enough and new Hardware was needed.

Therefore i started creating my own board based on a DC-DC low quiscent current chip. After many tests and trials (with many failures), I managed to have a watch working, using 2.7V only (the eink and the ESP32 seem to not care running on 2.7V), and the battery was 2 months (instead of 1 month of Watchy)!

Also because the watchy buttons were a PITA to work with, I decided to use the touch function in the ESP32, and that work quite well i have to say (also makes the case smaller).


I kept doing changes to the firmware, and my new HW, etc, until I hit a wall. The ESP32 takes 28ms to boot, and that uses around 1mAs of current. About 60% of the total power was being used by the ESP32 just to boot (not to update or display anything).

This is when i had an idea, not boot the ESP32 at all, use a wakeup stub to run RTC code (wakeup stub). I implemented code to handle the SPI communication and to update the region of the display controller buffer. With this I could boot+send+update display in less than 1ms.

With this I finally managed to have a watch with battery running 9months (until I decommission it for a newer HW).

Since then I have polished the code, the case, added LORA (yeah!) even GPS (was a bad idea), and I am still building the project up.

But I think this project has good ideas (Touch, wakeup stub, eink driver) that can benefit the community so I would like to share it. And if possibly receive feedback from other people

20250702_161733.jpg

JPEG Image - 3.66 MB - 04/23/2026 at 18:51

Preview

20250702_140024.jpg

JPEG Image - 3.13 MB - 04/23/2026 at 18:51

Preview

20250702_150217.jpg

JPEG Image - 2.26 MB - 04/23/2026 at 18:51

Preview

20250702_143933.jpg

JPEG Image - 2.40 MB - 04/23/2026 at 18:51

Preview

20250702_143744.jpg

JPEG Image - 1.93 MB - 04/23/2026 at 18:51

Preview

View all 7 files

  • 1 × ESP32 PicoD4
  • 1 × GDEH0154D67 or compatible 200x200 B/W 1.54inch panel
  • 1 × Wio-SX1262
  • 1 × Piezo Electric Disc Speaker 10-15mm
  • 1 × 316040001 Mini Vibration Motor 3V 2.0mm Circular

View all 7 components

  • 1
    PCB building

    I recommend using a PCB building service from JLCPCB and similar. 
    They also supply the components for an extra fee. 

    Building it yourselve can be challenging, since the board is designed to be very small to fit in the space.
    But if you want to try go ahead! You can use a hot plate like (Miniware MHP30) it worked well for me during my troubleshooting and fixes before ordering new boards.

    The project is designed to be just 1 sided, like Watchy, this allows a flat placement of the eInk display on the back, providing extra support and allows easy soldering and mounting.

  • 2
    Case 3D printing

    The case is printed in 2 separate pieces front and rear.
    I used again an online high quality service, otherwise the result might be rough at home.
    But i printed some at home and they were quite good (except for the border of the solar cell).

    I used glue (loctite or similar) to glue the pieces together as well as the components to the case.

    After closing the unit, i live with it, or break it apart to get the components back.

  • 3
    Preparing components

    The solar cell comes per-soldered with some cables, these interfere with the panel.
    It is better to remove the glue and unsolder these cables leaving the solar panel ready to solder again.

View all 10 instructions

Enjoy this project?

Share

Discussions

Does this project spark your interest?

Become a member to follow this project and never miss any updates