An Arduino Watch Without A Clock

When you show up at a party wearing this bare PCB watch, there are effectively two possible reactions you might receive from the other people there. Either they are going to snicker at the nerd who’s wearing a blinking circuit board on their wrist in public, or they are going to marvel at the ridiculously low part count. We’ll give you one guess as to which reaction you’d likely get at any event Hackaday is involved in.

Designed and built by [Electronoobs], this extremely simple watch consists of a ATmega328P microcontroller, a dozen LEDs with their associated 200 Ω resistors, and a battery. There’s also a single push button on the front which is used to not only set the watch, but turn the LEDs on when you want to check the time. Short of dropping down to one LED and blinking out the time, it’s hard to imagine a timepiece with fewer components than this.

You’re probably wondering how [Electronoobs] pulled this off without an external clock source for the ATmega328P chip. The chip actually has an internal 8 MHz oscillator that can be used, but you need to flash the appropriate bootloader to it first. Accordingly, the backside of the PCB has both SPI and a UART solder pads for external bootloader and firmware programming.

As you might expect, there’s a downside to using the internal oscillator: it’s not very good. The ATmega328P spec sheet claims a factory calibrated accuracy of ±10%, and [Electronoobs] has found that equates to a clock drift of around 15 seconds per day. Not exactly great, but considering the battery only lasts for two days anyway, it doesn’t have much of an impact in this case.

Compared to other “analog” LED watches we’ve seen, the simplicity of this build is really quite remarkable. The closest competitor we’ve seen so far is this slick binary watch.

27 thoughts on “An Arduino Watch Without A Clock

  1. While the factory calibration may only be +/- 10%, the 8 MHz oscillator is almost certainly stable enough to do much better than 15 sec/day. A calibration run of a few days will let you discover the number of “Arduino seconds” are in a standard one for the particular chip under test. With that, it’s easy to count standard seconds.

    The same trick works well enough even with Arduinos whose clock is a ceramic resonator to get the error (well) under a second per day. You can keep the conversion factor in the code or in the Arduino’s non-volatile memory.

    1. The biggest problem with the internal oscillators isn’t their calibration, but their temperature coefficient. Even if you calibrate it perfectly for the test conditions, you then take it out of the air conditioned room and strap it to your wrist, and go out in the sun, and the clock speed wanders all over the place.

      Ceramic resonators can be reasonably stable, and seeing as you can get them with the capacitors already built in, it would only take 1 component to make it work way better.

      Better yet, rather than running at 8 MHz (probably busy looping), I would just use a common 32kHz watch crystal.
      That, and some of the sleep modes (I think some still allow counters to run), would actually give decent battery life.

      1. The beauty of building a wrist watch is that you have one thing working to your advantage. You’re strapping your device to something that’s very good at regulating its temperature to within a very narrow bandwidth. For this reason many wrist watches are actually more accurate if they’re worn consistently. You basically ovenize your clock, though in this case it’s a biological oven. If you design things properly and maximise contact between the MCU and the wearer your tempco worries are probably reduced to a very manageable bandwidth.

      1. In my experience humans make decent heat sinks and are temperature controlled, so being on a wrist is probably better than being on the same person but farther from the body.

  2. Although low part count is a virtue, adding just a 32k oscillator wouldn’t take much off the coolness factor, while heavily improving accuracy. This, and using low-power modes of the chip to increase battery life to reasonable levels, would make this an actually usable gadget.

  3. For a moment, I was going to facepalm at the accuracy, but hey, that’s a really good design point – if it lasts two days per charge anyway, even .1% drift isn’t horrible.

    1. in short, yes.

      Sleep modes on the ATMega328 (and other related) disable the timers except for Timer2 if it is running in async mode (which means you run on the internal oscillator but have an external timing xtal or clock which feeds Timer2, usually a 32.768khz one of course). Power-Down and Standby also stop that Timer as well.

      The watchdog timer of course still runs (if enabled) in all sleep modes, but it is very inaccurate.

      The exception is IDLE mode, which has everything enabled except the main cpu essentially. Timers will still run.

      So for maximum battery life and also accuracy, an external watch crystal, put Timer2 in async mode and make use of Extended Stand By or ADC Noise Reduction modes (oh, and of course, turn off the ADC, set all the Power Reduction Register features on you can get away with, configure pins appropriately…)

      Average under 200uA should be doable I would guess.

  4. On the one side this is really cool, but on the other it’s really dumb… Adding a crystal and the two caps really would not have detracted from the simplicity. Also, using a disposable battery that only lasts two days? Could have at least used a rechargeable coin cell… And why does it last only two days? Is that the lowest the atmega can go? An STM32L0 can run with its internal or external 32khz oscillator for years on a coin cell… So in the end this is quite inspirational in its minimalism but not to be copied verbatim!

    1. CR2032 has about 200mAh. With the 200Ω resistors here, each LED draws somewhere around 5mA.

      So [b]if[/b] the LEDs were on continuously, they’d use up the battery in about two days.

    2. He is using a rechargeable coin cell, and the two day battery life assumes you’ll be checking it at least a few times a day. That’s what really draws the power on watches like this, not the microcontroller.

  5. Running ATmega at 8MHz as watch isn’t very effective, it would be interesting to see this design with 32KHz watch crystal. Enough for LED show and also usable for time keeping. For more accuracy and power saving DS3231 would be a good choice.

  6. Well usually if I want the approximate time, I can guess…. or look at the shitty activity watch I’ve got which has the choice of running the battery out in hours if you let it stay bluetooth synched to phone or getting randomly slow by up to 10 mins, some days it seems to stay dead on though. (Think it doesn’t like radiant sun heating, temp comp might be okay for indoor on wrist, gets warm in sun, goes flaky.)

    Anyway, yus, not meant to be the bestest watch evarrrr, electronoobs made the design choices that made him happy, did the watch and that’s it, it floats his goat, so success.

    If I were doing it for me though, it can go a tad more minimal for bragging rights, and/or get a tad more practical… first off, switch to the ATTiny85 for a real power sipper, then couple of routes to explore, there’s 6 I/O, can one push and pull the LEDs about a mid voltage, 6 up 6 down? Then are we able to duplex touch sensing, capacitive or resistive between a couple of the pins and get rid of the button, just have pad on PCB. The other way might be to have a halfass 4 bit resistor ADC deally and use the pins in analog mode, 4 to a pin, using bit codes… IDK fudgery either way deciding what all works best and doesn’t leave your LEDs flickering faintly, resistor values may be touchy.

    Now then, with either method, could then work on some joule thievery using the 85s propensity to suck power where it finds it and rectify so some inductive/rf loops on the band wouldn’t go amiss to slurp stray rf, and try to arrange that it can use any solar it slurps from the LEDs would be good too… so for battery I’d go for a small coin NiCad… you can abuse them a lot.

  7. I had a timex LED watch back in about 1975/76 that would go a good month on a battery and that had little 7 segment displays and was much smaller. This seems bad on every front. Poor accuracy, poor battery life, and big. And having the battery digging into your arm can not feel good. If the battery is only gong to last 2 days, it ought to do something cooler tan just lighting up one LED and flashing another one.

  8. So he wrote his own bootloader and the board has no sign of the misaligned Arduino headers. It’s almost as if this is a microcontroller project. not an Arduino project at all!

    And it even has a #BananaForScale.

    Nice job!

    ===Jac

  9. 10% isn’t bad at all for a device that can’t even display minutes. So I don’t really get all the fuss about accuracy. Although from a technical point of view there could have been some easy improvements, but then again there always are. Personally I wouldn’t like the battery+housing pressing in my wrist, the micro would be better as it is smaller AND as it would improve thermal coupling to the wrist (improving accuracy if calibrated properly).
    But hey… this is not a chronograph it’s just a watch for the fun of building a watch. What I don’t get is that if the battery is only running for two days then why not a charging connector instead of swapping the batteries, the connector would be way smaller then the battery casing that is now used… but seriously… who will be wearing this for more then 2 days. It doesn’t look comfortable it isn’t protected against moist, dirt or scraping of the components when you bump your arm against something hard (a practical requirement proven by the fact that all watches have scratches).
    It’s not a watch by any means… it’s a fun little project that has a sense of time, it looks geeky, it has LED’s, it’s adorable in it’s construction with the Velcro wrist band. All in all a fun project.

  10. Well, I think it’s cute and nicely implemented, but certainly check out David Johnson-Davies “Tiny Time 2” watch which uses an ATTiny 85, 12 ‘Charlieplexed’ LEDs, and a DS2417 “1-Wire” RTC chip.

    Cheerful regards, Mike

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.