Skip to content

E-Ink Smartwatch based on ESP8285-M3

Notifications You must be signed in to change notification settings

ArchKeyTech/espWatchOS

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A DIY Smartwatch

Ok, we can argue about the smart part, but let's call it that way ;).

The goal of this project is to build a DIY smartwatch (with WiFi + Sensors) that runs for a month. Key is to use an e-ink display (like a Kindle) and lots of deepsleep.

It is mainly based on

  • a 3D printed case (PLA) and wristband (TPU)
  • an ESP8285-M3 module
  • an e-ink display
  • a BME280 environment sensor
  • a DS1307 for time keeping
  • a custom PCB + additional parts for power and charging

The software/firmware is under code, using the platformio framework to build. It currently is in ALPHA which means I'm playing around with adding features and functionality. The basic functionality of different watchfaces and refreshing every minute works, as well as sensor data and charts work 👍. An initial case already works, but might need further updates.

Everything else is still TODO. I am developing this in my spare time, so documentation is incomplete.

Click on the image below for a demo (there are more videos on my Instagram):

Required Parts

If you want to join this project and help developing the hardware + code, these are the links I used for ordering. You can contact me via instagram to check if there are free PCBs ;).

Known Issues

PCB REV.10:

  • the button footprints have been updated, they might fit now
  • the pins 4+5 on the usb footprint are corrected

How I built it

Details

Schematics

I know the schematics can be cleaned up. I haven't spent that much time with KiCad, so if you have advice, please let me know. The same goes for the PCBs.

PCB

Experiments/Notes

Partial refresh: tuning the u8g2 lib for redraw performance

Use the following LUT in u8x8_d_ssd1607_200x200.c, starting at line 306. It has less flickering

/* orginal values without 0-0 and 1-1 transition */
  
  U8X8_A(L(3,0,0,3)), // 0x02
  U8X8_A(L(3,0,0,3)), // 0x02
  U8X8_A(L(3,0,0,3)), // 0x01
  U8X8_A(L(3,1,0,3)), // 0x11
  U8X8_A(L(3,1,0,3)), // 0x12
  U8X8_A(L(3,1,0,3)), // 0x12
  U8X8_A(L(3,2,0,3)), // 0x22
  U8X8_A(L(3,2,0,3)), // 0x22
  U8X8_A(L(3,2,1,3)), // 0x66
  U8X8_A(L(3,2,2,3)), // 0x69
  U8X8_A(L(3,2,2,3)), // 0x69
  U8X8_A(L(3,1,2,3)), // 0x59
  U8X8_A(L(3,1,2,3)), // 0x58
  U8X8_A(L(3,1,2,3)), // 0x99
  U8X8_A(L(3,1,2,3)), // 0x99
  U8X8_A(L(3,0,2,3)), // 0x88
  U8X8_A(L(3,0,0,3)), // 0x00
  U8X8_A(L(3,0,0,3)), // 0x00
  U8X8_A(L(3,0,0,3)), // 0x00
  U8X8_A(L(3,0,0,3)), // 0x00

Also, we speedup initialization by calling u8g2.initDisplay(); instead of u8g2.begin(); And, by disabling the line 370 with a comment: // u8x8_d_ssd1607_200x200_first_init(u8x8);

About

E-Ink Smartwatch based on ESP8285-M3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 91.6%
  • C++ 8.4%