We were talking about the idea of a Raspberry Pi watch, then we found one and figured out how to program it. You can do it too.
Toby, our maker-in-residence, and Alasdair, our head of documentation, discussed the idea of a watch powered by a Raspberry Pi RP2040-based computer. They stumbled onto an RP2040-based 1.28-inch TFT display and watch board on Tindie when searching to see whether anybody else had previously thought of the idea.
They purchased a few to experiment with because it seemed like all the engineers at Pi Towers were too busy to cater to their watch-needing needs.
In today's mailbag, a 1.28-inch TFT watch built around the @Raspberry_Pi #RP2040 microcontroller, https://t.co/7JIw6UWeQc. Comes with pre-blown firmware, but no documentation at all. So I guess it's time to try and figure out how they're talking to the screen. Fascinating one! pic.twitter.com/ZVEFCqb1LY— Alasdair Allan (@aallan) March 11, 2023
Tindie's version is priced at $35.50, but what looks like an identical board can be found for significantly less money on AliExpress if you have the shopping skills to endure that specific shopping experience.
Toby and Alasdair bought the watch in two parts: a board with a screen and an RP2040 main board. The watch came with a strap but no battery, so they used this inexpensive rechargeable lithium polymer battery, though because the JST battery connector on the main board was an unusual size, they both chose to pull it off and solder their batteries directly to the board's contacts rather than trying to source the odd connector.
There is no documentation for the watch, even though it does ship with pre-installed software that shows a simple watch face. Alasdair set out to try reverse engineering to learn more about the hardware. Simultaneously, Toby began designing a 3D-printable case for other Raspberry Pi watch enthusiasts to replicate. The STL files for the case are free to download from Printables.
Raspberry Pi Watch Software
Alasdair poked deep inside the firmware and discovered that the unidentified display was a GC9A01, which meant the display could be controlled through SPI by CircuitPython and MicroPython. In addition, he noted that the board's IMU was a QMIC88658, and he noted which RP2040 I/O pins the three user-facing buttons were connected to.
Things started to pick up speed when he discovered that the watch they'd found on Tindie looked strikingly similar to a Waveshare board that used the same 1.28-inch display and that with a little tweaking for which pins were connected to which, the Waveshare example code worked almost immediately on their watch. He eventually stumbled into the GitHub repo for the firmware that shipped with the watch. which seemed like a good place to stop.
Alasdair adjusted his own RP2040 watch so that the display is oriented with the watch facing his hand because “that way I can see the watch properly when I'm typing“, which is weird of him but not out of the ordinary.
If you've tried incorporating the buttons and motion sensors that are accessible on this watch board but weren't present on the Waveshare board, jump in with some suggestions since we love a good improvement. The pins they are attached to may be found elsewhere in the “Hello World” sample code written by Alasdair.