Watchy is the Arduino Project You've Been Looking For

Tue, Nov 2, 2021 4-minute read

Watchy is an exciting Open Source E-Paper Watch, based on Arduino and the ESP32 micro controller.

I’ve been a fortunate early backer, and doubly fortunate to have been part of some of the early waves that already have their physical Watchy. The component shortage has impacted the whole industry, and SQFMI is no different. However, the great news is that supply has opened up and SQFMI is currently in the process of shipping another huge wave of orders with more to come next month.

What’s cool about Watchy?

Have you ever thought it would be cool to design your own watch face? It is :) This is essentially all the code it took for me to implement my favourite watch face - Watchy PowerShell :)

Watchy is based on E-Paper, so it uses shockingly little battery. My Watchy lasts 5 days on a single charge. There are even some experiments to its open source code base to improve this even further - for example, going into a super deep sleep when you’re sleeping.

I’m also amazed at how approachable it is from an Open Source perspective. With many open source projects, getting familiar with the code base can almost turn into second day job. But with Watchy, the vast majority of its code is about 1,000 lines of C/C++. You can read through it all in one sitting and know exactly how your watch works. No complicated logic hidden behind servers that will eventually be retired, no naggy notifications, nothing extraneous.

The Arduino project you’ve been looking for

Despite how cool Watchy is as a watch, I would not recommend getting it for “just a watch”. The reality is that it’s an open source hardware project. Putting a new watch face on requires that you know (or are willing to learn) some of the Arduino toolchain. The community distributes watch faces as GitHub links, so you’ll need to know (or be willing to learn) a bit about downloading code from GitHub.

But this, in my opinion is one of the things that makes Watchy extra cool.

When you try to learn about Arduino projects online, it’s hard to find things that go much beyond making an LED blink.

With Watchy, you get the opportunity (not requirement) to play with an Arduino project that interfaces with a real microcontroller, has GPIO pins that actually do things, and gives you the opportunity to understand how physical and digital systems interact.

One great example of this was my Watchy not showing the battery as being full even though the charging circuit knew it was. Digging into this, I got the chance to see how Watchy was reading the voltage from the Analog-Digital-Converter (ADC) pin attached to the battery. I then got to explore the ESP32 microcontroller data sheet to understand how it does the ADC conversion, learn more about battery discharge curves, and then ultimately that the microcontroller has an explicit function designed to return the millivolts left in the battery based on factory calibrated data. Super cool! I was about to submit a pull request to improve the built-in functionality, but somebody from the community had already done it :)

Use WatchySim to more quickly design watch faces

While it’s super cool to be able to interface with hardware - once you start designing your own watch faces, Arduino does start to slow you down. Arduino takes a few minutes to compile and upload a new watch face, which can feel like forever if you just want to see if you’re positioning some numbers in the right location.

Most hardware projects improve this through computer-based simulators, but there wasn’t any for Watchy. After looking at the source code for a few watch faces, I realized that most don’t truly need a full-fledged Arduino + ESP32 + Bluetooth LE + WIFI + Weather API simulator. They just need something that can fake out what the Watchy SDK exposes. From that idea, WatchySim was born.

It grew very quickly (including major contributions from Paul Niven), and now is capable of simulating most Watchy watch faces without changes. It’s distributed as a source-only release, since source code is the distribution method of Watchy watch faces. It compiles and runs perfectly under the free Visual Studio Community Edition.

Getting your own Watchy

I’ve had many smart watches, and Watchy is the most fun I’ve ever had with one. SQFMI uses Mouser to fulfill their orders: https://www.mouser.com/new/sqfmi/sqfmi-watchy-kit/. The component shortage continues to be a challenge, so they’re not yet at the “Buy it Now, arrives on Tuesday” level of supply. But they are shipping, they are real, and they are fun. If you’re willing to be a little patient, I would really recommend checking them out!