A few months ago, my watch broke. Instead of buying a new one, I decided to try to build a watch myself. Since I am not a mechanical engineer, I had to use electronics – 60 LEDs to emulate a classical watch face and some microcontroller to drive them. I was more interested in how will it turn out than actually using it, but anyways, here’s the result:
I got my inspiration from a project called TicTacTroc, which I cannot find on the web anymore – maybe my Google-Fu just sucks. I even used a part of their PCB layout, since I was too lazy to manually lay out 60 LEDs in a circular manner. However, I changed the main processor to a STM32F0 in a TQFP32 0.8 mm package (just because I had a few extra of these), added some lithium battery charging circuitry and done some minor tweaks and changes. Because a watch needs to be small, I had to use very small 0603 components, which were not exactly simple to hand-solder.
When the PCBs arrived, I cut them out and used a file to round them. Then, after a few hours of tedious soldering and programming, I was done – the display was working as intended. Programming the charlieplexed display was not easy, but in the end it worked just fine. There was an error in the PCB layout, but I was capable of fixing it (and it is fixed in the files on my GitHub).
However, when I measured current consumption, I was dissapointed – I had a nice, sleek, 170 mAh battery I hoped to use, and I wanted it to last 3 days, that is, the average current draw had to be below 2,36 mA. But even with just a single LED on and sleep enabled, it was still drawing 4,48 mA. I could disable all the LEDs and use the button to wake the processor, but then it would loose a lot of its “cool factor”. And since I am currently really busy, I decided to publish this anyways, hoping someone will find it interesting or inspiring.
So if I ever redo this project, what what I change? Well, the STM32 uses too much current, even at 1 MHz, and the internal clock is too inaccurate. So I would probably use the ATmega88/168/328 with a 32.768 kHz crystal driving the asynchronous timer 2. That should reduce the power consumption, but it will be harder to fit all the firmware onto the limited resources available on the ATmega. Or maybe the STM32L would be a bette choice, but those are hard to get.
Still, one of the main reasons why I am publishing this is as an inspiration – either the firmware might be interesting (there are a few custom function, written in pure CMSIS for STM32) or just the PCB layout. So, if you want, you can download the files on my GitHub.