MicroPython Smartwatch

Inspiration

While browsing Hacker News one day, I came across this post. It shows an intense segment of getting MicroPython running on a $3 smartwatch. I was not interested in so much work. But maybe you are. Either way, it got me thinking about MicroPython and tiny portal computing environments.

MicroPython

When I worked at Peloton, we once did a Black Girls Code event where we gave everyone a BBC microbit to tinker with. The board has 25 LEDs wired on and this acts as the primary display. In order to program the board, they wanted an easy to use and easy to learn language. Lucky for them, in 2013, Damien George had a successful Kickstarter campaign where he developed a language called MicroPython that would run on a wide array of microcontrollers. The platform was ported to the microbit and used as the primary development tool for the board. I was enamored by the ubiquity of Python in so many platforms and systems combined with it's simplicity and forgiving nature for rapid prototyping and design.

Smartwatch

So, the downsides of these microcontrollers is that they aren't packaged into something you can easily use. Maybe some have a 2 or 4 line LCD, but in general, they become large and clunky when you add a battery and a screen to the already-cumbersome boards. What if you just want a decent environment ready to go? Something that will last a long time on a charge and has a full packaging system. My Apple watch is a fairly powerful computer, even without the benefit of being tethered to a phone. But an Apple watch is expensive, hundreds of dollars generally speaking, and the barrier to entry is rather high. I wrote some watchOS apps in my past, and even with SwiftUI today, I find it to be rather difficult and unintuitive. It would be nice if you could just run whatever you wanted, but Apple's walled garden makes that impossible.

Less Smart Smartwatch

So what else is out there? Turns out that a company called Pine64 created a full array of products from microcontroller boards to phones to tablets to - you guessed it - a watch. Cheap, and inherently designed to be hackable. You can pick one up for about $50 delivered in the US (it is only $27 for the watch but another $22 for delivery or something at the time of this writing). It is entirely relative, but I found the price to be offputting. For triple, I could have an SE-edition Apple watch. It seemed far too expensive for what it was. The watch comes with InfiniTime OS installed. It allows you to write applications in C++, but not MicroPython.

WASP-OS

Enter WASP-OS, an alternative operating system created by Daniel Thompson in late 2019/early 2020. The promise of this OS was to bring MicroPython to the PineTime. Now you had a great developer experience with familiar tooling and patterns ready to go. Seems like a slam dunk! Except that $50 every time you wanted to tinker with something was a bridge too far. Luckily, WASP-OS had been improved to work on multiple different devices based on the same SoC used in the PineTime (nRF52832, in case you're curious). The two options that had any kind of documentation were Colmi P8 and Senbono K9. The K9 touch display does not work with WASP-OS, so that ruled it out right away (it only acts as a single button, pressed or not, which means there's no swipe navigation, and since half the devices had no buttons anyway, that was a non-starter).

Colmi P8

So TVC Mall has these available here for a very respectable $16.29 and $5.38 shipping. I bought two, and then I bought two more once I got the first two working. It took about a week or so to show up, but that was fine for me. After all, $20 for a MicroPython environment that lasted days on a battery, with a 240x240 screen, was a no-brainer. This is the P8b model (has an Apple-watch-like wireless charging cable, which is fine, but has a few caveats vs the P8a, which we will fix below).

Setup

It was not easy to get this working, and required multiple different things, but I will try to give you a brief run-through of what I did. Let us assume you have received the watches and charged them up. Let us also assume you have an Android device lying around and a computer running some Linux:

And you are good to go! You have a smart watch with a MicroPython environment ready to go. You can develop your own custom apps, or make edits to existing ones! Happy hacking!