This is a simple yet powerful digital wristwatch. The heart of this watch is the much-respected ATmega328 using a precise RTC clock-source to keep the time. To check the time, just press one of the two buttons on the side, and the time will show up on a twelve LEDs shaped like a classic analog watch face. While designing this watch my two top priorities were to make this watch look nice and compact while still being easy to solder and assemble, making it available to both beginners and experienced folks. With some optimization, the watch is running at really low power which means you should get around 1 year of run time on a single CR2032 coin cell!
If you wish to know more about assembly and soldering click here.
Step 1: OverviewMeasuring thickness under 10 mm this wristwatch can last for a year on one a single CR2032 battery and keep extremely precise time using DS3231 Real Time Clock (RTC) chip with built-in crystal!
Step 2: Device RequirementsMicrocontroller
The IC on this board is the ATmega328. This is the same chip that runs the Arduino Uno boards. However, this board relies on the internal oscillator of the 328, instead of having an external crystal like the Uno.
Power system
The watch has a battery holder for a 3V, 20mm coin cell battery. I recommend using the CR2032, as this has a higher capacity of 250mAh at 3V. The watch wakes up when one of two interrupt buttons are pressed. When it’s time the watch enters the deep sleep mode to improve battery life.
User interface
To show the time I’m using 12 LEDs positioned in a circle, like a simple analog watch face. for that, I picked size 0603 red LEDs coupled with fairly high value (680 Ohm) resistors keeping the current low while still being visible in direct sunlight.
Also, there are two side buttons positioned on the right side for showing and setting the time. There are few methods we can use to interact with a button for example: double, triple press, short or long-press. In the example code, I’m using thesimple quick press to show the time, double press to show the temperature and long press to set the time. Using the two buttons you easily set the time by scrolling through hours and minutes.
Step 3: PCB - Schematics and LayoutKeeping the time
The finest RTC I can get is DS3231 keeping the time precise as it gets. Internal temperature compensation and integrated crystal make this chip ideal.
This chip tells the ATmega what’s the time and temperature.
PCB design.
Here you can see how the watch PCB looks like on both sides.
Then upload a Zip or RAR file containing all the gerbers and drill files to JLCPCB (cheapest) and have the PCB fabricated for 2$ + shipping cost in any color (at the time of making this tutorial).
Step 4: Burning the BootloaderUsing the FTDI connection pads provided on the back of the PCB you can use a cheap FTDI converter to upload the code.
I went a step further and created a custom FTDI USB to UART converter that utilizes the micro USB type B on the watch so that modifying and uploading code is straight forward and easy (simply remove the battery and connect the custom converter to watch).
Visit GITHUB for complete detailed instructions on how to read the time or program your watch however you like, make a stopwatch, counter, alarm, temperature-based alarm.. anything.
Step 5: Soldering and AssemblyThe assembly process should be fairly simple and straight forward. Gather the parts, start with one side at a time and you shouldn't run into problems.
For a detailed step by step guide visit my website.
If it's your first time soldering I definitely recommend checking some tutorials before soldering some of the smaller components 0603 etc.
Step 6: ProgrammingUsing the FTDI test (connection) pads provided on the back of the PCB you can use a cheap FTDI converter to upload the code.
I went a step further and created a custom FTDI converter that utilizes the micro USB type B on the watch PCB so that modifying and uploading code is straight forward and easy (simply remove the battery and connect the custom converter to watch PCB and to your programming PC/MAC etc as shown in pictures).
Visit GITHUB for complete detailed instructions on how to read the time, set time and even read a temperature.
Step 7: 3D Modeling and PrintingDesigned in Fusion 360, after countless versions I was finally satisfied and these are the results!
Everything except wrist watch band and glass - 3D prints, That includes
- Main body
- Outer Glass ring
- Bottom body
- Buttons
I used the following settings in Cura for my prints:
- 3D Printer - Prusa I3 MK3S
- Material: PLA
- Layer Height - 0.1 mm
- Shell Thickness - 0.8 mm (Nozzle: 0.4 - 2 Shells)
- Top and Bottom Thickness - 0.8mm
- Fill Density - 100%
- Filament - 1.75mm
- Support Type - Everywhere
- Platform adhesion Type - Skirt
Watch glass is press-fitted, so is a glass ring to the main body. PCB screws with M1.4 Phillips screws to bottom casing and then to the main casing but don't forget to place the 3D printed buttons.
In case you have trouble 3D printing, I included CAD files and adapter so that you can wear the watch as a badge!
All STL files and.f3d files can be found HERE.
If you ever wanted to try SMT soldering this might be the perfect start for you! A step by step soldering tutorial, from soldering one simple LED to soldering a whole watch with more than 50 components. Head over to the shop site on the Tindie and have a try 🙂
Thank you for reading this short overview! If you wish to know more about assembly and soldering click here. Good luck with creating your own programmable watch.
Best
Marijo
Comments