Intro: Personalised Word Clock With Animated Time Transitions
Build a tiny personalised Word Clock with animated time transitions.
The clock shows the recipients name and has personalised messages that appear at different times ie. Happy Birthday, Good Morning or whatever you choose.
Every minute, the clock redraws the time and produces an interesting animated transition effect.
A great personalised gift for someone who likes something unique.
Step 1: Gather Materials
The most important component for this project is a good enclosure. Most department stores will have a variety of low cost clocks that would be suitable. Look for funky looking clocks that have a glass front with a depth of at least 4cm. Ideally you are looking for something that is a "shadow box" style enclosure which has a front aperture of at least 11cm x 11cm. The enclosure also needs to be able to be easily dismantled and the internal clock removed. The electronic components are included in the list above. I tried to minimise the number of the components so went for an Arduino Mega to drive the LED array directly. See the circuit section for further details.
Step 2: Build Arduino Shield
Arduino Shields are boards that can be plugged on top of the Arduino PCB extending its capabilities.
Building this simple shield enables you to connect the Arduino to the LED array, buttons, RTC and other components without having to solder directly to the board. Cut the header pins to size and push into the Arduino board in the correct position as per the Circuit Diagram. Then push the header pins into the shield to position the pins in the correct holes as per the picture above.
Mount the Buttons on the Arduino Shield and follow the circuit diagram to connect the pull up resisters and wiring as per photo.
Step 3: Build the LED Display Board
1. Cardboard Cutout
The Word Clock display is made up of an array of 13x13 LEDs that are mounted on a cardboard cutout that fits snuggly into the front of the Clock Case. It is best to use cardboard because it wont melt when you are soldering wires to the LEDs and its easy to work with. Use the dimensions of the aperture of the Clock case to trace out the required shape and cut out a piece of 2-3mm thick cardboard.
2. LED Grid
Use the enclosed spreadsheet template file to create 7.5cm x7.5cm grid to position the LEDs on the display board. Enclosed is a template that can be modified and printed out then glued onto the cardboard.
3. Mount the LEDs
In the example I used high intensity white surface mounted LEDs that I cut from a 3v LED strip. Join the Anode (+ve) side of each LED in each vertical column together on one side of the cardboard. Then pass the Cathode (-ve) through to the other side of the cardboard through a hole and join each row together on that side. What you end up with is 13 Anode strips on the LED side vertically and 13 Cathode strips on the other side horizontally. These are then connected to the Arduino Shield from the previous step as per the circuit diagram.
4. Test the LEDs
I recommend at this point testing all of the LEDs to ensure that there are no faulty devices/connections. To test use a 5v-9v DC power source and place a 2.2K ohm resister in line with the positive supply. Its important to do this to protect the LED from over current and burn out. Connect the negative terminal to the LED Cathode and the positive terminal via the resister to the LED Anode of to test out. (Note ensure the Arduino Board is not connected when you do this). Make sure all the LEDs function and operate at the same brightness.
Step 4: Build the Circuit
In order to avoid the complexity and time required to have to put LED drivers in the circuit I have used an Arduino Mega to drive a 13x13 array of LEDs. The Arduino reads the RTC time and then draws the display by turning on one LED at a time. It does this by addressing each LED systematically using X,Y coordinates. The LEDs are protected by 150 Ohm resistors and being that they are only activated individually means the current is limited.
Position the components and carefully plan the mounting of the Arduino PCB, the Shield, Buttons and RTC PCB. Ensure that the Arduino Board can be accessed externally for programming purposes as well as the external power socket. Do this by ensuring the Arduino power socket and serial port are close to the case edge. In my case I orientated the Arduino Serial and Power Port to protrude through the base of the clock case. I hot glued on plastic feet to elevate the clock enough to provide clearance and stability when sitting on a table.
3. Connecting up the components
Use hookup wire to connect the Arduino PCB, Buttons and RTC on the Shield as per the diagram. Play particular attention to the wires and position of the components to ensure they are fit snuggly and securely in the case.
Step 5: Load the Code and Test the Unit
Download Arduino IDE version 1.06 on your desktop machine
There are two additional libraries that need to be installed before setting the time and testing
(i) Arduino time library - see attached zip file
(ii) DS1307RTC library - see attached zip file
1. Set the time in the RTC
I used the following instructable code to set the current time on the RTC pcb.
2. Load and Test the final code
Download the standard code provided on this page "Tiny WC Arduino Code.txt" and download into the Arduino. Once loaded the clock should be functioning with LEDs lit with the dimmer and time set functions working.
Step 6: Build the Front Display
1. Build the Baffles
Measure the distance between the LED display board and the case glass. Cut 30 strips of A4 Black cardboard to the dimension of that distance.
2. Cut slots into the Baffles
Stack the strips of cardboard into a flat bundle and use tape to hold them together firmly.
Carefully mark the distance between each square on the top of the bundle. When marked correctly there should be 14 marks with the distance between them aligning to the LED panel.
Using a Band Saw or a Junior Hacksaw cut into the bundle 50% of the way through the mark as per the diagram.
3. Assemble the Baffles
Carefully dismantle the bundle and systematically assemble the Baffles as per the pictures. Trim the width of the baffles to fit into the box and ensure there is enough clearance on all sides. For the name TEXT cells remove the baffles as per the picture to ensure that they are not visible when illuminated behind the name TEXT.
4. Glue the Baffles onto tracing paper
The baffles are glued directly onto an A4 sheet of tracing paper over a stencil. Use five minute two part epoxy glue. Smear on baffle edges and hold in place over tracing paper until glue dries. This ensures the baffles are rigid and ensures that there is no light escaping between each cell when a LED lights.
5. Assemble the Word Clock Display
Using the template provided modify the text as required and get three black transparencies printed to the correct size. Get them printed in reverse so that when pushed against the glass the toner side is facing away from the glass. This gives a deeper black on the front display. I went to a local print shop and had this done in one of their colour laser printers which cost less than $4. My advice is to get about 9 copies in case you damage or make mistakes when cutting.
Cut the three sheets to fit the front panel of the box. trim the second and third layer progressively smaller so you can tape them down on top of each other once they are perfectly aligned.
Ensure you leave two sides open so that you can slide a square of tracing paper between the first and second layer of the transparencies.
Finally take the tracing paper that is glued to the baffles and trim to fit on top of the transparencies.
Carefully align the baffles on top of the transparencies tape into position making sure all letters have no obstructions or overlap. Hold up to the light to double check any issues and shake out any loose material.
Step 7: Final Testing
1. Set the custom birthday date
Use the Arduino tools to edit the provided code and change the date for the Birthday to align to the recipient or owner of the clock.
2. Test the clock transitions
You can use the link to the code mentioned previously to change the RTC date/time to check that all transitions occur.