Arduino Wristwatch Has LED Hands

When you read “Arduino wristwatch”, you fall into the trap of envisioning an Arduino UNO clumsily strapped to someone’s wrist. [Marijo Blažević’s] creation is much more polished than that. A round circuit board holds two surface mount ICs and 12 LEDs. The whole thing looks nice fit snugly inside of a watch body. It isn’t a Rolex, but it does have considerable geek cred without being unwearable in polite company.

One IC is an AVR micro, of course. The other is a DS3231 real time clock with built-in crystal. A CR2032 keeps it all running. The main body, the outer ring, the bottom, and the buttons are 3D printed in PLA. The crystal and the band are the only mechanical parts not printed. The bill of materials shows a 36mm crystal and even provides links for all the parts.

You don’t want to run LEDs all the time because it is bad on the battery. When you press the button once, you get one of the LEDs to light to show the hours. Another press reads the minutes in units of 5 minutes. A third press shows you one of five LEDs to show how many minutes to add. For example, if the time is 9:26 you’d get LED 9 (hours), LED 5 for 25 minutes, and the third press would show LED 1 for 1 extra minute. If either of the minute indicators show 12 o’clock, that indicates zero minutes.

The exciting thing, of course, is that you can program it beyond the code on GitHub. Already it can tell time and display the temperature. You don’t have a lot of I/O, but you ought to be able to get some more options and maybe some flashy LED blinking patterns in if you try.

20 thoughts on “Arduino Wristwatch Has LED Hands

  1. I’m OK with people wanting to build their own watches, but given the ease of finding watch-sized LCD modules do they have to stick to 12 LEDs and a crappy UI to show the time?

    1. It’s to make the games easier, 1D snake, you just move clockwise or anticlockwise and there’s no pesky corners to get stuck in. Tetris, a square block falls from the left or right and when you get a line of four at the bottom it scores and clears….

    2. Good thing you’re OK with people building their own watches… I’d hate to think of all the people going off all willy-nilly building watches not aware they needed your prior authorization. ;)

      An issue I see with the available LCDs is that they’re all somewhat large at 1.2 to 1.3 inches in diameter, usually with a bit of a frame/flat cable adding additional dimensions along an edge. That, and the battery required to drive them for a reasonable duration, makes it difficult to design and build a compact watch. Individual LEDs do put some pretty strict limits on UI, but at the same time, that can be the point. Hands on an analog watch are pretty limited in functionality outside telling time as well.

      I like that this project moves the USB/Serial off to a separate board. The additional components for that led me to use a Tiny841 and the Micronucleus bootloader on the watch I built for my son here: but that restricts program size a bit. Also nice that he’s getting such long run time from the battery. I had thought a coin cell wouldn’t be sufficient to power, in my case, up to 24 LEDs simultaneously, so I went with a small LiPo.

    1. The RTC for my digital clock is implemented in firmware with a standard crystal. I used a 24-bit Numeric controlled oscillator (in 3 lines of code) for trimming the crystal tolerance. The clock only missed about 1 second over 4 week and 6 days in actual use – that includes drifts from minor temperature variations etc.

      I compare time with a time standard website and using binary search faster/slower for the trim value.
      It can be trimmed further, but it is already close to the more fancy RTC chips.

      A bit more detail here: Pictures for the clock is on the previous page.

      IMHO even the 6 7-segment display is insufficient for a good UI for anything more complicated than setting time. :(

    2. I haven’t used the 328p much, but I don’t believe it has an internal real time clock. It has a real time counter that’s connected to the internal clock source (I assume that’s the internal oscillator) by default, but that’s definitely not accurate enough for long term time keeping. The datasheet indicates that you can configure the real time counter to source from an external 32.768 kHz crystal, but at that point, you’re not gaining much over an external RTC.

      I suppose 32.768 crystals are generally smaller than the DS3231, but in my experience, they’re often not very accurate without calibration, where as a dedicated RTC is. The RTC I used in my watch was accurate to within, I believe, 1 to 2 seconds per week without any calibration. Since my watch was rounding to the nearest 5 minutes, it would be well over a year before it indicated an incorrect time.

        1. That’s funny, I hadn’t considered that physically wearing the watch would thermally stabilize the RTC. My son built several cheap solder kit clocks, which all used (I’m sure cheap) 32.768 xtals. None of them can keep accurate time for more than a few hours. I improved one to barely usable by soldering a little grounded copper pocket around it. Temperature changes could definitely have been the cause of the remaining drift.

        2. You would still need to calibrate the frequency of the crystal by playing with the load capacitance via a trim cap. Without calibration, you have to deal with the initial tolerance from the factory, changes due to soldering, load capacitors tolerance, parasitic capacitance due to PCB and chip input pads. You are lucky to get within 50ppm which is a few minutes per month.

          My first summer job was in a factory that also make digital watch. They have a pickup coil of some kind hooked up to a special counter that tells you the tolerance in seconds per month. It still took me half and hour to fiddle with the trim cap in my watch. (I wasn’t working on the watches.)

          The 12MHz crystals I used for my clocks had been sitting on the shelf for likely 20 years or so. By the time I soldered them in, the frequency was like 150ppm off. At least they were aged enough that I don’t have to worry about aging effects. They seems to be stable enough at room temperature – heated during harsh winter and no air cond for the summer.

          I calibrate that out in my firmware. Changing the timer overflow counts get me to +/-5ppm (15 sec/month). I picked 12MHz as it can be divided by 60000 which is as high res as I can get.

          The NCO in my new clock got to +/-0.3ppm (1sec/month). The NCO (3 lines of C) can handle fractional division and works great for trimming frequency.

      1. You are far better off with the DS3231.
        >we have found these DS1307 modules to vary hugely in their time-keeping accuracy – some gaining/losing a few seconds per day, and others gaining/losing as much as 3-5 minutes per day.

        >The DS3231 chip on the module is marketed as being accurate to 2ppm (parts per million), which means less than one second lost or gained every 5 to 6 days. The units we have tested thus far have all come in at under 1ppm accuracy, so a couple of seconds at most lost or gained per month.

        External crystal with trimmer capacitor is messy to adjust. That’s why I opt for software trim.

        In my previous firmware RTC used for a timer, I trimmed the tolerance by changing the timer divider (60000 +/- tweak counts for a 12MHz crystal) which gets me to about +/-15 seconds per month after a few calibrations. My new clock is less than +/-1 second per month. :)

        STM32F030 ARM chips have the newer onchip RTC peripheral that allows down to 1ppm tolerance adjustments in software.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.