Dumbwatch V2

Minimal ATtiny85-based watch with OLED Display

Similar projects worth following
After taking stock of the lessons learnt from the ATmega based V1 I decided to switch over to the ubiquitous ATtiny85 for an even more minimal wearable.

This ATtiny85 based timepiece is an exercise in making the most minimally viable (not accurate) timepiece possible. Building on the I2C OLED/MCU combo of the previous version, this upgrade makes the important distinction of being functionally wearable with minimal fuss.

In it's current form, the watch time is manually set with a single tactile button located just below the display.

This watch is built with the intention of being a base to iterate new revisions as easily as possible. Hence, the OLED and ATtiny are socketed making it easy to flash new firmware and possibly swap out displays.

Dumbwatch V2 R0 Schematic.pdf

Schematic drawn in

Adobe Portable Document Format - 31.64 kB - 03/18/2023 at 16:27



Arduino Code for Watch. Using the damellis core and tiny4kOLED library.

plain - 2.41 kB - 03/02/2023 at 11:04


  • 1 × ATtiny85 MCU
  • 1 × Veroboard/Stripboard
  • 1 × Capacitor 10uF
  • 1 × 128x64 OLED Display SSD1306 I2C Based
  • 1 × Tactile Button

View all 6 components

  • Revision A: LiPo or Go Home

    Maso06/06/2023 at 14:29 0 comments

    While I  initially basked in the success of producing a “functional” wearable, I had been making notes of what to consider in my next revision of this project. The biggest issue I found with the initial version was the power drain and its impact on the single-use batteries. In a surprise to few, powering an OLED with a ATtiny and no power saving contingencies make for a very short operation run. In fact, on my extended test with a fresh CR2032 cell I found the watch barely lasted 24 hours before the battery was completely drained. As a result of this testing, I aimed to implement a more sustainable platform to build upon for my experimentation.

    It was at this point I conducted some initial research into the power saving options for the ATtiny itself. However there was a more pressing factor that that I sought to rectify, the ergonomics. While my first sketches portrayed the watch as being a stacked design with the battery compartment at the bottom of the body, I quickly realised that with the height of the headers this unit was going to be close to 30mm tall at least! Hence the last minute change of mounting the battery offset to the main body of the watch. In this revision, I wanted to implementing a rechargeable LiPo battery system that allowed for more flexibility with the placement of its components. Pairing a 150mAh battery with a USB-C charger board from Core Electronics proved to be the best solution.

    Dumbwatch V2 Rev. A with USB charging
    Dumbwatch V2 Rev. A with USB charging

    Following this addition, I learnt a harsh lesson on building in some form of power isolation when implementing rechargeable capabilities. I found that connecting the USB-C power while the watch was on caused the ATtiny to go into a fault state. With no avenue for a reset button on the watch I had to disconnect the battery (mangle the JST connector). Upon further reading it seemed that my LiPo board did not support simultaneous charging and power output. Hence the addition of a micro SPDT switch to ensure that I could isolate the rest of the components while the device was being charged. Yes, this meant that the time would be reset every time I charged the thing, however I felt that this was a necessary inconvenience at least for the time being.

    One additional modification to streamlining this project was switching from four pin tactile switches to two pin variants. This was a game changer in my part placement where I no longer had to fear if I had placed a switch in the wrong orientation relative to ground. I maintained the one button setup for this revision, which I have grown to regret especially with the dubious accuracy that the current code provides. I will not consider an RTC as I feel that compromises this project’s goal of simplicity with the parts.

    That being said, the modifications for Rev. A have amounted to a properly wearable watch that I have been able to take out and about in its skeletal form. After some time with the watch in this form I have pulled myself together to tackle the final hurdles for this device: the accuracy, power consumption and a more aesthetic presentation.

  • Revision 0: The best ATiny85 devboard is none at all

    Maso03/04/2023 at 06:09 0 comments

    The Dumbwatch V2 was designed to be the minimally viable timepiece using as few parts as possible. Building on from the stresses of the ATmega328-based V1 my curiosity was piqued by a Digispark clone that was being sold at my local electronics store. The support for an I2C display with a handful of buttons in an even smaller package was too tempting to ignore and so began my journey getting to know the ATtiny85.

    Step 1: Digispark Board

    In this journey I found the Digspark to be far from what I needed to get this project off the ground. The documentation is quite old and most of the support pages are on non-HTTPs pages that had my browser screaming blue murder every time. To top it off, there was no mention of the particular bootloader that I needed to get the darn thing to compile. I was only through a chance repo search I found that "micronucleus" was the missing piece I needed. After that, it finally came to life...albeit in a rough way.

    Thus began my journey into debugging the SSD1306 display where I found the worst aspect of the Digispark dev board system. Their specific libraries existed outside of my managed Arduino library folder and caused me much grief in the error messaging where I could see the display was not initialising in the proper way. While I eventually wrangled it to work to an extent I kept hitting walls with the devboard such as it's power delivery being pinned to 5V, which was less than ideal when I was aiming to get a 3v battery to run the whole thing.

    Step 2: ATtiny85 Chip

    When all hope was lost I decided to throw caution to the wind and just work off a bare ATtiny85 with an UNO as the ISP. It was like night and day after I got it blinking an LED, then powering up the OLED in a better many with Tiny4KOLED and TInyWire libraries working to their full potental.

    With the code being in a somewhat functional state for timekeeping. Then began the implementation of how to set the time with physical buttons. V1  had separate "Hours" and "Minutes" buttons the intention with this version was to always have a single "Time" button that incremented the minutes. I thought PB1 (PIN6) would be the most suitable point to wire up the button using an internal pull-up. However I then found that with the I2C implementation of TinyWire that wasn't possible and I promptly moved it to PB4 (PIN3) and just like that, it started working. Then it was a matter of throwing on a 3v battery and I was one step closer to moving it to a move fixed arrangement.

    Step 3: Stripboarding

    At this point I was feeling very confident in the build. Having proven my design was viable was every required part working effectively on the breadboard was a relief. The final step of this version would involve strip boards that would make laying out the pins a very easy exercise. After marking out the intended footprint of the watch (50 x 50mm) I plotted the intended runs for the parts. While the DIP-8 footprint worked effectively with the stripboard, I found the need to flip the SDA and SCL for OLED a tricky exercise using solid core wire to make the routes.

    The cutout between the capacitor and the wider hole for the watch strap is the passthrough for the battery wiring.

    Step 5: Power Up

    With the watch assembled there was one last step before I could wear my creation. That was to ensure that the power was working out. V1's construction was disorganised at best, which led to power issues that ultimately resulted in several cooked ATmega's. Going through three of those chips made me especially cautious with powering this up for the first time. First power-up led to the discovery of a short that was quickly fixed. Finally I was greeted to a most welcome sight:

    The final step was attaching the CR2032 battery holder and enjoying the results.

View all 2 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates