Apparently this project has become a bit of classic in the DIY electronics world, so I decided to give it a go too. If you never seen this before, this clock displays the time using text instead of numbers, in 5 minute increments.
Credits: Based on Raksith’s version, which in turn is a simplified version of Doug’s.
BTW: Doug also sells complete kits here.
Bill of Materials
- about half a meter of 60 LED/m LED strip, white color
- about half a meter of 120 LED/m LED strip, white color
- Arduino Nano / clone or bare ATMEGA328P micro
- SN74HC595 shift register (x3)
- ULN2803A “LED driver” (x3)
- real time clock (RTC) based on DS1307 chip
- 12V to 5V step down transformer
- IKEA RIBBA picture frame or similar
- 12V adapter, 1A minimum
- a piece of baking paper the size of the glass to act as difuser
Apart the materials you will of course also need a frame, the faceplate described below, basic sodlering skills and knowing how to burn a program to an Arduino.
This is probably the hardest non-electronic part to get “right” and there are many variations to it. Personally I went to a local store that makes inscriptions/stamps/prints etc and explained what I wanted. What we need is a material (black in color) capable of blocking light and that can also leave the letters either transparent or cut them out of whatever material was most appropriate.
We ended up carving out letters on a vinyl sticker material with a special printer. The whole sticker was mirrored so that the sticky part became glued to the back of the glass. After squeezing out a few air bubbles here and there the faceplate was ready.
Below is the PDF file used to generated the faceplate. As mentioned, the mirrored version was used by me, but depending on the technology that is available to you the normal version is also available below. The PDF is “true size” with each side being 8.5 inches (or 21.6 cm).
To simplify things as much as possible I used a prototyping PCB specially made for DIP (dual in-line package) chips.
LED strips normally allow you to cut every 3 LEDs. The words making up the clock vary in length, and so should the LED segments hiding behind the vinyl faceplate. The reason for using varying density strips is to allow us to accomodate with ease both long and short “words”. For example…with 60 LED/m density the smallest cut is 5 cm long where as with twice the density just 2.5 cm is enough. For the smallest words making up the faceplate, like the word “TO”, only this smaller chunks can be placed in the back. So pick and chose whatever suits you best, in case you printed your own faceplate in a different language than the one proposed here.
Since the absolute maximum current an Arduino pin can source is around 40mA, and even that for short periods of time…we need something to interface the “logic” pins to what will actually “drive” the LED strips.
When driving common anode LEDs, it is necessary to tie the cathodes to a current sink. The ULN chips are high current darlington chips that do this. Current sinking chips such as these are for more common and less expensive than their sourcing counterparts.
Each “driver” inside the chip can sink a maximum of 500mA.
LED strip divisors
We need to make a structure internal to the frame, that will sit between the faceplate and LEDs in order to block the light from flooding into neighbouring words. You can use any light blocking material that you can work with…I went with cardboard, but I might redo with something more sturdy.
Since this is a simplified version of the word clock which does NOT have any means of configuring the time directly you will first need to set the time on the DS1307 chip using the “SetTime” Arduino project. After the time has been set, THEN you can upload the “Word Clock” project. Naturally this will have to be repeated for daylight savings time changes etc.
<TODO – zip files blocked from upload…>
A 12V adapter able to deliver 2A should cover all setups. During the startup sequence the code will flash ALL LEDS a couple of times. This will test two things…first that the connections have been made properly and that all LED strips are connected to the pins (not necesserily the right ones though). It will also test the adapters capability to drive ALL LED strips.
Since Raksith’s design seems to use two power sources which is way incovenient, I opted to step down the 12V of the strips to 5V for the electronics. I happened to find a module that takes anything between 6V-24V and brings it down to 5V through a convenient USB port ready to hook up to the Nano board.
Hope this was helpful and you have fun building your own!