HackSpace magazine

This watch is great for wearables hackers

By Ben Everard. Posted

Watches are surprisingly complicated devices. They need to pack some complex electronics, a one-handed user interface, and a battery into a package small enough to unobtrusively sit on your wrist. Makers and hackers have long been making watches – there are some you can buy as a kit, and there are some that can be re-flashed with other firmware, but the LILYGO TTGO T-Watch-2020 is the most technologically advanced watch designed to be hacked that we’re aware of.

It packs an ESP32 microcontroller (with WiFi and Bluetooth), a 240×240 TFT touchscreen, a three-axis accelerometer, a buzzer, a vibration motor, and a 380 mAh battery into a unit that’s 48 mm × 42 mm × 13 mm. While this is a little chunky for a watch, it’s not excessively so, and it is small enough to be worn comfortably. All this comes for $28.50, plus delivery ($5.50 to the UK). This puts it as one of the more competitively priced smartwatches, but can it live up to its promise?

The build quality is good for the price. The glass front and metal sides feel sturdy, though we haven’t had it long enough yet to really vouch for its toughness. The back panel, which is clip-on plastic, exposes the electronics and removable battery. While this makes it easy to get into, it does leave us some concerns about how vulnerable this watch will be to water.

The biggest disappointment in this watch is the stock firmware. When you first turn on the device, you’re greeted with a touch interface that looks good, but is ultimately pretty useless. It can connect to WiFi (if you’re patient enough to use the atrocious password entry system), and get time from NTP, but there’s no way of changing the time zone, so you’re stuck with China Standard Time (CST) if you use this. The complex interface chews through the battery far too fast to be useful, unless you enjoy plugging your phone into a USB cable every few hours. Fortunately, this device is designed to be reprogrammed, so the real test is how easy it is to code it into something more useful.

The default firmware looks pretty, but is almost useless

There is an Arduino library for accessing the phone’s hardware at hsmag.cc/SPlWgx. Unfortunately, the documentation for this is almost non-existent at the time of writing, however, there are some example projects to get you started. These aren’t commented well, but if you’re an experienced programmer with some familiarity with the Arduino and ESP32 platform, you should be able to figure out enough to start building something.

A challenge with working on this device is the limited battery life. If you want to use the device as a watch, you’ll probably want to go at least a day between charges – this is only possible if you avoid wasting power. To test out how functional this was as a watch, we put together a minimum viable smartwatch project that just displays the time and counts steps using short clicks on the power button to turn the screen on and off. You can see the code here: hsmag.cc/SaK7MN. It should give you a good base for building your own simple watch projects.

Despite the poor documentation, we were able to build a simple interface for the watch quickly by copying code from the examples

You’ll need to familiarise yourself with using interrupts and messages because these are key to how the library is structured. They let you keep an eye on what’s happening in the device without having to check the status of everything. For example, the power button has a short-tap option which is handled by the AXP power management unit. You can tell if there’s been a short tap with:

if (ttgo->power->isPEKShortPressIRQ()) { … }

It comfortably lasts a day in our testing, though this will depend on how often you check the time and step count. There’s plenty of space left on the screen for adding additional information read-outs (such as displaying information grabbed from the internet).The display supports Adafruit’s GFX library, which makes it easy to draw graphics. While we’ve used a simple drawString() method for putting text on the display, you can get far more creative if you want to. Alternatively, you can use the Light and Versatile Graphics Library (LVGL) to create an interface.

Audio out

You don’t just have to get output via the screen. There’s also a buzzer and vibration motor for keeping track of what’s going on when you don’t have time to look at the screen.

If you’re looking for a more time-related project, you can also access the real-time clock which includes features such as alarm interrupts.

For the price, this is a fantastic wearable computer for anyone willing to put in the effort to bend it to their needs. It can certainly be used as the base of a smartwatch, but it can potentially be much more. Just a few projects that we’d be interested to see are:

• Interacting with other devices over WiFi or Bluetooth, and therefore be a portable controller for almost any of your projects

• The perfectly customisable accessory to a cosplay outfit

• A games controller powered by the accelerometer sending commands over Bluetooth

These are just our ideas though. You may well have some more thoughts.

This is a powerful tool for making some really exciting projects. We’re looking forward to developing more projects with it over the coming months, and also seeing what uses other people find for it.  

Lilygo  $28.50    tindie.com


A fun platform for wearable computing, but lacking in documentation.