This project is my custom modification of LILYGO's stock example firmware for the LILYGO T-Wrist E-paper 1.54in Display. I was also inspired to do this project in the first place by qewer33's qpaperOS project. However, I found the LILYGO firmware to be an easier place to start making my own modiications, so I forked that project instead.
DISCLAIMER: I am an absolute amateur and by no means an actual developer. All of my modifications to this firmware have been done by reverse-engineering what LILYGO provided and performing lots of trial and error. Things will be wrong, or unoptimized, or both; offers to contribute to the project to improve it are absolutely welcome but complaint issues will be summarily deleted.
To build the watch, you will need the following: LILYGO T-Wrist E-Paper ESP32 development board (with T-U2T USB/serial adapter) (Note: you don't need to buy the GPS version but if you don't have a LILYGO T-U2T, buy a version with T-U2T bundled. You need T-U2T to program the board!) 3D printed "Shell" piece (provided by qewer33) 3D printed "Bottom Plate" piece (provided by qewer33) 3D printed "Buttons" piece (provided by qewer33) 250 mAh 1S lipo battery (I used this one: https://www.amazon.com/dp/B091FBD9KZ) 4x short M2/M1.6/M1.4 screws 22mm watch strap (compatible with Huawei GT2/GT3 straps)
Building from scratch requires:
- The Adafruit-GFX-Libarary (specifically, lewisxhe/fork/GxEPD)
- The ESP32 Dev Module, if using Adafruit-IDE
However, I just used VSCode:
- Clone this repo using VSCode
- Install PlatformIO extension
- Connect a USB cable to LILYGO's T-U2T adapter
- Connect the T-U2T adapter to the E-paper board
- Connect the USB cable to your machine
LILYGO included all the necessary libraries in their repo and I carried them over into this fork so no other dependency installation should be necessary.
The biggest changes in my build from the LILYGO stock example firmware are:
- Changed the rotation 90-degrees so the display will show properly when using the watch case design provided by qewer33
- Cleared out all the cruft example files and keeping only the source and libraries for "WatchDemoNoGPS"
- Changed format of the date to "Day, MonthDate, Year" instead of "Year, Month, Day" (displays like "Tuesday, Sept19, 2023")
- Updating the HttpClient used for weather API data fetching to use AerisWeather's API instead of Seniverse (China only)
- Split out WiFi and weather API credentials into secrets.h (not managed by git)
- Changed LILYGO boot logo to Open Source Hardware logo
- Changed LILYGO watch display logo to "tedtms" logo
- Added task to reconnect WiFi, sync NTP/weather every 15min
- Changed NTP servers
My planned enhancements to this project include:
- Updating the font to something nicer, perhaps the font used by qpaperOS
- Removing the watch display's bottom logo and filling that space with weather forecast data from AerisWeather
- Rearranging the display elements for better aesthetic
There are a couple of problems I'm currently trying to work out (and will be tracking as Issues):
- The battery life is abysmal for some reason. Even running LILYGO's stock firmware, a 250mAh LiPo battery lasts roughly 4 hours
- The way the stock firmware implements RTC sync is creating a 1-hour offset for the time that changing the timezone or DST offset values doesn't fix. I have commented out that line for now but would like to figure out what's causing the issue.