Stylish wrist watch that shows time in binary code
Standard Tesselated Geometry - 3.77 MB - 07/23/2018 at 09:16
Standard Tesselated Geometry - 1.92 MB - 07/23/2018 at 09:16
x-zip-compressed - 96.06 kB - 07/23/2018 at 09:16
ino - 5.28 kB - 07/23/2018 at 09:16
The watch has 4x4 minus three LEDs arranged in a multiplexed matrix. Where one column corresponds to one digit in digital time. The time is shown in binary coded decimal and one of digit is represented as with a maximum of four bits.
It both looks exceptionally stylish and works great with a simple user interface and battery life up to two years. Arriving at the final design was an iterative process where a lot of different problems had to be solved. In my opinion the end product turned out great and is something I love to wear on a daily basis.
One of the first things people would notice with the watch was of course how it looked. I wanted a watch that looked good and reminiscent of an actual product. In short, it had to be something I could wear to meetings at work.
The design, when the watch is off, is a simple two-tone combination of black and silver. This is present in the leather watch strap and clasp, along with both the case and the PCB.
I hid most of the components on the backside of the PCB and had it produced with a black solder mask. I thought it was cool to keep the black silicone chips on the front side with the silver soldered leads. That way even the electronics and PCB match the two-tone design of the rest of the watch.
The watch body needed to be solid when put together, yet easy to open up for changing the battery or making modifications to the code. That would mean no glue where I could use something less permanent. In fact, the only glue used in this build was for the crystal glass.
The opening and closing was solved with the main body being made of two parts: the watch case back, and the front watch ring. The watch case holds all the components like the PCB, watch band, and watch crown. The watch ring holds the glass, and slides down into the case back where it's secured with two tiny screws.
As discussed in the step about selecting components, this had to be really low power. It would be no good watch if you constantly had to change the battery every few days or even weeks. It would have to last for at least half a year to not be a real bother. Luckily this was solved! The watch spends most of it's time in deep sleep before waking up when the watch crown is pushed. In deep sleep it consumes as little as 10µA. This gives a battery life of more than two years!
Intuitive. The watch had to be intuitive and easy to use and understand. Well, at how understandable a binary watch could be at least. The time is represented in binary coded decimal (BCD) instead of just regular binary numbers. In BCD you take one regular decimal number and converts it to binary. This means a longer decimal number is is split up in each of its digits, and each individual digit is converted to binary. The system is beneficial for coding the time, because this means the biggest individual number in BCD is 9 (1001), instead of 2359 (100100110111) as with regular binary. More on how to use BCD to read the time in step 5.
As far as user interface goes, you simply press the watch crown to wake the watch where it immediately gives the time. Press the crown once more and you get the date. Because the watch has a battery life of two years you can easily toggle between daylight savings time without connecting to a computer. Simply press the button 15 times in rapid succession to toggle adding or removing an hour.
An overview over what components and tools were used in this build. More on how the parts were selected in the next step.
The components are divided among what's needed to make the PCB which acts like the watch movement, and the watch body itself.
There are four main parts of the circuit board. We have the atmega328p microprocessor. This is the same as is found in popular arduino models. This is the brain and will communicate with a real time clock (RTC) module, process the time, and display this on the LEDs. All of this of course needs a power source, preferable a tiny battery.
The microprocessor had to meet certain criteria. It needed at least nine pins for GPIO, eight for the LEDs and one for the push button. It also needed an I2C bus where it could act as a master to poll the RTC for the time. At lastly it had to be able to operate on low voltages and not draw exorbitant amounts of current while powered. The Atmega328P-AU nails all of these criteria while still being small enough to not eat the whole PCB area. A big plus is that it's also used for most popular Arduino boards. This means it has a lot of support and it should be familiar to work with as I'm experienced with Arduinos.
The PCB was designed to use an 8MHz ceramic resonator. However, it turned out that the processor should be clocked even lower to run on low voltages. Take a look at the picture in this step, taken from page 303 in the datasheet, which explains the ration between clock frequency and operating voltage. A clock frequency of about 4MHz should be the maximum for this project. I used the internal oscillator at 8MHz and activated the divide by 8 bit, which gives the apparent clock frequency as 1MHZ. The soldered 8MHz resonator is still needed, however it's just really needed while burning the bootloader in step 8. I didn't see any reason to remove the resonator after the bootloader was burned.
At first I considered using the DS1307 RTC. This is a more popular chip commonly found on RTC boards ordered for cheap from China. However, this requires around a 5V power source, even though it uses a regular 3V battery for time backup. Few tiny batteries provide up to 5V so to use this chip I would need a way of stepping up the voltage. Stepping up voltage always leads to power loses, which I could not afford. Ref the second law of thermodynamics. Thanks Mr. Carnot!
The DS3231 can operate on as low as 1.8V, which is perfect when everything is driven by a battery with 3V. It also has a quartz crystal built in, which means the circuitry is easier to solder. The inbuilt clock crystal is also temperature compensated! Ambient temperature can cause a clock crystal to have irregular oscillations. This means it becomes less accurate after the first time being set. The DS3231 measures the ambient temperature and uses this in a calculation to compensate for temperature fluctuations.
When do you need a temperature compensated real time clock? You need it when the RTC is in changing temperature environments. Perfect for a wrist watch, for when you're walking in and out of different rooms or going outside, when the temperature isn't constant.
The LEDs come in a 0603 package size - which is really tiny! They can draw up to 20 milli-amps each, but this is not really a problem. Due to the way the multiplexed LED matrix is displaying the time with column scanning, no more than three LEDs will be powered at the same time. The current is also reduced with larger than needed resistors. The light output are reduced with the current limiting resistors, so you can experiment to find the light level and current consumption you're happy with. My experience is that resistors between 100 and 400 ohm draw little current and are plenty bright.
Take a look at the table provided on listing for these LEDs. They all require the same amount of current, however the red LEDs require the lowest voltage while still providing more than 100mcd of light. All of this means that in terms of light and power, the red LED color gives you the most bang for your buck. You may of course choose other colors, but I recommend against colors that require voltages around 3V. Just because the battery voltage will decrease over the years, meaning the LEDs shut off. This leads to the weird situation where the watch is still powered and keeps the time accurately, the LEDs just require such a high voltage that the watch has no way of telling you the time.
I wanted this to be powered by a regular old coin cell, also known as a watch battery - which is fitting. A CR2032 usually has a voltage of 3V and typical capacity of 200mAh. One drawback however is that relatively large loads may drop the voltage down to 2V. This is handled in two ways: first reducing the current load, and second not caring if the voltage drops. The current load has been reduced by using low power ICs like the Atmega328P and DS3231. It is also reduced by using current limiting resistors on the LEDs, and because the matrix is driven with column scanning no more than three LEDs are really on at the same time. Because LEDs are the components that draw the most current in this watch, this had the biggest impact. Also, so what if the voltage drops from the battery? I've prepared for that. The DS3231 can safely be powered by 1.8V, I chose red LEDs because they require the lowest voltage to turn on, and the Atmega328P has a special bootloader that's clocked at 1MHz and brown out detection at 1.8V. All this means the watch is happy to chug along with either large current loads or low voltages!
The watch circuit could be powered by a lithium cell. It doesn't have the problem of voltage reduction at the same current draws as a CR2032, but it would bring some additional problems and challenges. For this project, a lithium-ion battery would have two main drawbacks. While the capacity of a tiny cell is close the capacity of a CR2032, it needs some extra for safe charging and safe discharging. It would also need a way of connecting a charger. I prefer the option here where the case can be opened and the battery swapped right away. Lithium batteries are also a bit more dangerous to work with and just requires more care and consideration.
You may be familiar with the voltage range for a lithium-ion battery. They usually start at around 4.2 volts when fully charged, decrease quite quickly in voltage to 3.7V, before shutting off at 3.2 volts. If I was going to use such a varying voltage range to power the LEDs, I would also need some supporting circuitry to keep the LED voltage somewhat more regular. This not only adds to the complexity of an already tiny PCB, it will also consume more power. I've reduced power in every area I could, and the end result is this watch which will accurately keep the time for about two years on a regular coin cell battery!