loading
Picture of The Word Clock - Arduino version
DSC_8197.JPG
DSC_8139.JPG
Arduino.jpg
**************************************************************************

Major updates - A much better enclosure for this clock has been designed - check out

http://www.instructables.com/id/The-Wordclock-Grew-Up/

**************************************************************************

Last month I wanted to build a special gift for my beautiful wife, Megan.  She has a teaching background in English, so what better present to make for her than a clock that uses language to tell the time for her desk at work. 


THE BACKGROUND

The original project that I created used a Microchip PIC microcontroller (16F877), because that's what I had in the garage.  Since I published it (http://www.instructables.com/id/A-Word-Clock/), quite a few people, including my next door neighbor (Thanks Mikal) have asked me why I didn't use an Arduino.  Having never used one, my automatic reaction to Mikal was 'Whats a one of those??"  So, I did some research and found out what an Arduino was.  Wow - they are so cool - so simple to develop for, and the barrier to entry is so low!.  I ordered one from eBay, and re-designed the clock to use the Arduino Duemilanove as the controller.

I have to admit right from the start that the Arduino is a beautifully engineered piece of work - While I am used to the PICs, because I have been playing with them for years, I do admit that there is a certain level of 'unreachability' for the beginner because of the requirement that specialised programmers be purchased or built.  The Arduino is equally powerful, comes on it's own little self contained board, and best of all is self programmable using a USB cable.

POWER

I have also listened to people who have constructed the original clock, and done away with the need to run off AC power. This clock simply uses a DC supply of 12 Volts, so you can run it off a wall wart, or off a set of batteries.  If you are using batteries, may I suggest 'D' cells, as they run forever, or a couple of 6V 'Lantern' batteries. 


REUSE YOUR ARDUINO FOR ANOTHER PROJECT

Finally, I have designed the controller board so that you can construct the project with your Arduino Duemilanove board just by plugging it in.  But, if you want to recover your Arduino for something else, you can install the optional support components along with an appropriately programmed ATMega168 and a handful of support components and your project will still operate.  People on eBay will sell you a ATMega168 with a boot loader that you can simply pop back into your Arduino board.

So, here it is - The word clock - constructed using an Arduino!

I am now able to sell all sorts of components, ranging from complete clocks, through to kits, through to individual modules and components.  Please visit my web site www.dougswordclock.com for further information.


 
Remove these adsRemove these ads by Signing Up

Step 1: The new hardware - Controller board schematic

Picture of The new hardware - Controller board schematic

BETTER DRIVERS

My original clock used discrete transistors to drive the array of LEDs.  I have realised that while that approach works fine for a project that I have built for myself, it makes it more complex for others to build, so this new clock uses ULN2003A Driver ICs.  The ULN2003A contains a set of darlington transistors in a convenient DIP package, so there is MUCH less soldering to do. 

A NEW PCB

I have also re-designed the PCB to make construction much simpler - The Arduino controller simply plugs into the new PCB.  If you want, once you have constructed the clock, you can recover your Arduino board by purchasing an ATMega168 with a boot loader, and populate the PCB with just the new Microcontroller and a crystal.

IS THIS JUST A NEW SHIELD?

In the spirit of Arduino development, it would be fair to say that the controller board was a 24 output LED (or relay) driver shield.  It is just as happy to turn on a big set of 24, 12 volt relay coils as it is turning on a bank of LEDs.

Below you will find the new schematic diagram for the controller board as a PDF file. 

Note that you should look at step 4 to understand what resistors to use.  Don't simply use 360R and 36R with supply voltages above 10v.  You will need to use 680R and 270R instead.

Step 2: The hardware - Make the controller board

Enough talk - lets start by making the controller board.

If you want to etch your own board, you can download the attached a PDF file and follow the steps I used.


TONER TRANSFER IS EASY

When I made the board, I photocopied the page onto Toner Transfer paper (Press-n-Peel Blue), then I used an old laminator to transfer the image onto a piece of very clean PCB stock.  I etched the board in a mixture of Hydrochloric Acid and Hydrogen Peroxide etchant.  There is a brilliant Instructable that describes the process at www.instructables.com/id/Stop-using-Ferric-Chloride-etchant!--A-better-etc/


BE SAFE

When you etch ANYTHING - make sure you are wearing safety goggles, and old clothing.

CLEAN UP

When the etch process is complete, everything was rinsed very well under running water to remove all traces of etchant.  Just before I rinsed everything, the etchant was collected for use with the next project.

DRILL HOLES

Once the board had been rinsed and dried, I used a Dremmel to drill the holes, and removed the Press-n-Peel film using some steel wool, detergent anf good old elbow grease.

This time, I took buckets of photos of the process - It is very pretty!

I personally really enjoy making printed circuit boards, and I am sure that you can make them yourself.  However, if you would like your own controller PCB, I am able to supply blank, or pre-assembled boards.  Have a look at the last step for further information.

Step 3: The hardware - Populate the controller board

Now that we have an etched, sized, drilled and cleaned PCB, we need to start mounting components.

POPULATE THE PARTS IN ORDER OF SIZE

I soldered all of the components, using the stencil layout as a reference.  I started by mounting the six jumpers that I needed to place because I used a single sided board.  Then I soldered the header pins and the IC sockets, Then the resistors, diodes and off board connectors.  Finally, I plugged in the Integrated Circuits and the Arduino Board, and that step was done.

Note there there was a small change with the final board version - the two resistors (R2 and R3) are actually mounted below where the photos show them, and jumpers are installed in the corresponding space.  Just follow the parts layout for the exact placement.

It was a very restful 30 minutes to do the soldering.   Make sure that you use some sort of fume extraction when you solder.  To many fumes can end up being bad for you.

Here are heaps of photos, showing the steps I used to populate the board.

Step 4: The display board

THINK FIRST

Before you do anything, have a think about the size you would like the project to be.  In this version, I used high intensity LEDs.  they have a beamwidth of about 10 degrees, which means that I had to mount the stencil about 30mm from the LEDs to get an even illumination.  If you purchase 'Flat Top' LEDs, then you can make the clock much thinner.


MOUNTING THE LEDs

I decided to make the display board using a piece of fiberglass material, with the LEDs mounted into a series of holes that I pre-drilled.  This is a different mounting system than the original, but I feel that it is probably more accessible, as it doesn't rely on another expensive PCB.  The LEDs are soldered on the back of the board to a piece of 26 way ribbon cable that is terminated with a 26 way IDC socket.

You can use a piece of thin plywood, or acrylic if you like - Just use whatever material you can that will hold the LEDs stable.


MAKING IT (Hey thats a great name for a magazine :-)

I started with a square of fibergless sheet, upon which I measured a 12cmx12cm square.  I divided that into a grid that was 13 dots x 9 dots (which turned out to have a spacing of 1cm x 1.5cm), and drilled starter holes using a small drill. 

DRILL HOLES

Then I measured the LEDs, and they were indeed 5mm diameter, so I drilled LOTS of 5mm holes.....Before I started drilling, I was aware that there was going to be a very big mess.  There was board material everywhere.  I did the drilling outside, and made sure I wore a dust mask.

So many little holes....


MOUNTING LEDs

Once that was done, I slid each led into a hole, being careful to make sure that they were all oriented the same way.  A drizzle of hot melt glue was useful in holding the leds in place.  When assembling, I mounted every second row on the board, and gently folded the leads down as time came to mount the final sets of rows.


SOLDERING IT TOGETHER

Then I trimmed the leads, and soldered in the current limiting resistors, and soldered the LEDs together, following the layout diagram exactly.  When you are following the diagram, remember that you are working on the BACK of the board, so you need to mentally reverse the layout.  Also - don't forget to use 36R resitors (see below) when you are connected to a set of 3 LEDs and 360R (see below) resistors when you are connecting to a set of 2 - It alters the current flow to make the LEDs a uniform brightness.

DO I *REALLY* USE 360R AND 36R RESISTORS?

As an update, I have been using Blue Flat Top LEDs, with a forward voltage drop of about 3.3v @ 20mA.  The supply that I was using was about 10.5VDC.  With the original design, with 2 LEDs, the voltage drop across the LEDs was 6.6v, meaning that 3.9v was being dropped across the resistor (11-6.6).  With a 360R resistor, this limited the current to 10.8mA, and with 3 LEDs, the voltage drop across the LEDs was 9.9v, meaning that 0.6v was being dropped across the resistor (11-6.6).  With a 36R resistor, this limited the current to 16mA.

What I have subsequently discovered is that with supply voltages of 12V, the current through the leds ends up being way too high (15 & 58mA), which is a problem.

In my most recent versions, I have setled on 680R for the 2 Leds and 360R for the 3 Leds, providing 7.9 and 7.8 mA respectively.  Much lower current, and still ample illumination.


ADD A RIBBON CABLE

When everything is finished, prepare and solder on the ribbon cable with the 26 way connector.
The connector plugs into the controller board.  (But I guess you figured that out!)

The photos below should show the process that was used.

To be completely honest, I think next time I will simply use the display board from the first WordClock that I built.  Yes, it would mean making another circuit board, but it was so much simpler to make, and the result looks much nicer.

Step 5: Make the time changing buttons

Picture of Make the time changing buttons
DSC_8115.JPG
DSC_8116.JPG
DSC_8119.JPG
DSC_8120.JPG
DSC_8140.JPG
Next, we need to mount a couple of push buttons onto a piece of board material.  I wired some short lengths of wire to the buttons, ready for connectint to the terminal block on the controller board.

In my case, I used a red and a black button.  I found some ribbon cable that had red and black wires, so I used red for the forward button, and black for the backwards, with grey as the common.

Have a look at the photos to show you how the buttons were connected.



Step 6: Program the Arduino and test the displays

Picture of Program the Arduino and test the displays
startup2.gif
Next, we need to use the Arduino sketch editor to program the controller.

Open the attached sketch file in the editor, connect the controller using a USB cable, and press the 'Upload' button.  This is the cool bit about using an Arduino - everything works just by itself!

The sketch will be transfered, and it should start executing immediately.  In this step is a startup animation as a Gif image.  This is what the startup should look like.  You may notice that there are a few dark LEDS in the picture where all of the LEDs are lit.  These are the LEDs that are not connected.

I have included a debug function in the software that prints the time out every time that it is updated via the Arduino serial port, as well as flashing the Digital13 Pin every second.  Simply use the Arduino serial monitor to see the time being displayed.  

It is important to note that you will not see LEDs lighting up when the controller is being powered by the USB cable, as the LEDs are powered by the external power connection. So to test the unit, lets connect the device to a DC power supply.  When the unit is plugged in, every word should light up in sequence, and the clock should start running.  If one of the words fails to light up, or part of a word doesn't light, check the orientation of the LEDs, and their wiring. 

I brought a set of 500 LEDs from eBay, and was disappointed with an 8% failure rate when I used them.  Some vendors are awesome, and others are not.  But - they were cheap!

Step 7: Make the word stencil and baffles

Finally, we need to make the word stencil for the front of the clock.

I used a piece of PCB material, which I etched using the pattern shown below.   I simply followed the same press-n-peel process that I used to make the controller board.  This time, I intended to use the copper layer on the side closest to the LEDs, but created the stencil the mirror image to what it needed to be - so for this one, the copper is on the outside. 

I have on order some 1/32" PCB material which I intend to use.  I will be careful to get the stencil the correct way around, (with the copper towards the LEDs), and I expect to have a bright, clear display, and I should end up with much less bleed through than I experienced with the original project, because I will make sure that the copper is on the inside of the display.. 

Prior to using the display, I cut up some more PCB stock to use as 30 mm baffles, and glued the baffles in place with hot melt glue.  If you have used 'FLAT TOP' Leds, then you won't need 30mm high baffles, you can probably get away with 10mm or so.  Just hold the stencil over the lit display and move it up and down till you are happy with the illumination, measure the height, and make the baffles that height :-)

Others who have built my previous clock have used acrylic as a display material with cut vinyl as the lettering.  That probably looks awesome!  In one case, they have used glass!




Step 8: Making a simple enclosure

I had some spare time before I had to be somewhere else, so I decided that while the saw was out for cutting baffles, I would make a simple enclosure.

Before you do anything, remember the basic workshop safety rules - wear safety goggles, keep fingers clear of rotating saw blades, and generally don't be stupid.  

I used chipboard, because (you guessed it) there was some in the garrage.

I trimmed the board to a uniform width for the top, bottom and sides.  Next I cut the bottom and top to length.  Once I was happy with the size of the bottom, I cut a couple of grooves for the display and stencil PCBs to sit in.  Then I measured and cut the sides.  I glues the bottom and sides together and used chipboard screws to hold them together.  Note that I didn't glue the top - you need to be able to remove the top if you want to extract the display or stencil PCBs.

Next, I cut a piece of thin ply as the back.  Then I mounted some back supports into the box soI had something to screw the back into.  Next, I mounted the Controller PCB, being careful to use washers between the back of the board and the wood, so I didn't put stress on the solder connections.

Finally, I routed the cables through holes I had previously cut in the back, mounted the button board on the back of the case, and closed it up.

WHOOT - It works, and looks great.


Step 9: Bill of Materials

Here you will find the complete parts list you need to create the project yourself.



Bill Of Materials


Controller board


Arduino Duemilanove module
ULN2003A Driver IC * 4
4094 Shift Register * 3
5mm red Led * 2
1K Resistor * 4
1N4004 Diode
2 Pin PCB Mount Screw Connector
3 Pin PCB Mount Screw Connector
26 way header
8 way header * 2
6 way Header * 2
16 Pin IC Socket * 7
Controller PCB

Display board


5mm blue LED * 117
360R resistor * 25 (can be 680R - see step 4)
36R resistor * 25 (can be 270R - see step 4)
26 way ribbon cable * 30cm
26 way IDC Connector
150mmx150mm fiberglass / perspex mounting board - or Display PCB

Button board


Red Pushbutton
Black Pushbutton
Veroboard - 3cm x 2 cm
wire (3 strand) - 30cm

Stencil board


150mm x 150mm single sided fiberglass PCB material
150mm x 30mm fiberglass PCB strip horizontal baffle * 10
14mm x 30mm fiberglass PCB strip - vertical baffle * 10
Hot Melt Glue

Power Supply


12V DC, 500mA Wall Wart Plug Pack.

Step 10: Next Steps

Where to next?

Well,  I will continue to be working on the following things in the ensuing months;

1.  I have ordered some ATMega168 with bootloader chips from eBay.  When they arrive, I will program and install the chip, and recover my Arduino for another project.

2.  I will continue experimenting with better display options.  The secret is in getting a diffused light to light the back of the letters.  Some suggestions have been vinyl cut letters on a sheet of white acrylic or glass.   That should be fun.

3.  Ideally there should be some way to add battery backup.  I would like to add that.

4.  Automatically setting the clock.   WOW - Here in Australia, we don't have any useful time sources that can be used for automatic clock setting.  In the USA and Europe, there are VLF time sources that can be used, but here in OZ, we just have to rely on  GPS.  That would be a cool addition, a GPS receiver that could get the current time to keep it accurate.

So Many Options!  But then, that's what Arduino is about!



Step 11: Whats been hapening these last few months....

Picture of Whats been hapening these last few months....
ArduinoController-v3.JPG
BigDisplay-boardset1.png
BigDisplay-boardset2.png
Update:

As an update, I have redesigned the Arduino clock controller board - I decided that in reality all I needed was the ATMega Chip itself, and that placing an entire module was a waste of PCB space.

I have further updated it to version 3 - supporting a RTC chip, and reducing the size of the PCB.

Here is a photo of the v2 and v3 boards, and an assembly manual, (which I have been sending out with my kits) - That should make assembly easier for anybody who wants to make one themselves.

The new PCB

The new PCB that I designed has larger tracks, and larger pads, making assembly easier.  When you look at the PDF, you will see that there are large copper masses 'directly over' existing tracks.  Please don't worry - that is normal - it is a ground plane, and the track that it is over is the ground track.  All of my boards try to use ground planes so that I have to etch less copper from the board.


Programming the new board:

One Idea I got from EvilMadScience.com, was to use one of their programming cables, instead of using an entire Duemilanove module.  It is really cool - you pay $20, and you can use the cable for many many projects - all you have to do is include a trivial programming header on the PCB.  The cable is available from: evilmadscience.com/partsmenu/130-usbttl


A New Display PCB

I have been designing a new display PCB - I can etch it on 2 6x6 inch pieces of single sided PCB stock - the neat thing about the new display, is that it gets cut into a set of "LED Strips", with each strip being used to illuminate a word.   the spacing between LEDs is about 23mm, so I can use these strips to make BIG WORDS (Much larger than the 6 inch displays i have been making).  The clock size that I am making currently will be about 240mm x 240mm for the word plane, set into a total display that is about 320x320, making a really nice wall clock - It will take a couple of weeks, but as soon as I have something more tangible to display, I will put it up here.  

I etched the PCB over the Easter weekend, and am looking forward to making a bigger display.

Another side effect of the LED strips, is that you are not limited to English words - we can modify the software for any language, and you can use whatever size strips you need behind words to make the clock work!!!

Updated Software to allow the brightness to be reduced at night

I have modified the software to allow the brightness of the clock to be automatically adjusted based on the time - At 7pm, it will reduce the brightness, and at 7am, it will increase it again - This was to allow the clock to be less intrusive in my daughters bedroom.

Attached is the software that allows that to happen, and Matt Sparks DS1302 library.  It is in the file Wordclock-reduced-brightness.zip attached to this step.



1-40 of 244Next »
GianlucaG15 days ago
Why not a 34 bit constant current serial driver M5450?...
siddhi385 days ago

Something worth trying....

Really Very Innovative....

Looking forward to make one.....!!!

tchunda1 month ago
Wat an awesome project can't wait to make it
BeerLogic3 months ago

cool on the rev 3 version of the circuit you connected the ULN2003A common lines to the connector so I can be tied to the supply line and protect the ULN2003A if it is used to drive inductive loads.

BeerLogic3 months ago

based on the layout of the words five of the LEDs are not connected. Since they are behind the mask why would you populate them?

BeerLogic3 months ago

If you use the board as a relay driver you should connect the common on the UL2003A to ground to provide a fly back diode as relays are an inductive load and you can damage the ULN2003A if the the diode is not included.

hello Doug and thanks for your awesome project. I have made the clock but cant figure out how to stop the test funksjon and make the clock show the actual time, do i need to edit the code ?

drj113 (author)  mahdi.hazara.34 months ago
The test function is entered when the controller believes that the buttons have been held down during startup.

Make sure that the buttons are not shorted.

There was a hardware change at one stage, with the original hardware connecting the buttons to +5V, and the current hardware connecting them to ground - If you are using the updated firmware, then there is a $define early in the code to allow the use of old hardware. simply remove the comment and it will work.
failureowned6 months ago

Good day sir ., i would like to ask what if i use Arduino uno, i would like to know the schematic of it., i'm doing this college project hope you could help me with this.,

drj113 (author)  failureowned6 months ago
The Arduino UNO should just work - Exactly the same as the duemilanove.
thanks a lot sir., i did it well :)
it will work.
groszek6 months ago
groszek6 months ago
groszek made it!6 months ago

Beauty :)

1.jpg2.jpg3.jpg
Snellingkorey6 months ago

This is amazing. it should be in the shops.

drj113 (author)  Snellingkorey6 months ago
Thanks for that - I have actually made a small business that sells these.

www.dougswordclocks.com It is fairly successful :-)
crazycoder9 months ago

Great Project just Love it. .. Thank you..

Shyam

crazycoder9 months ago

Great Project just Love it. .. Thank you..

Shyam

crazycoder9 months ago

Great Project just Love it. .. Thank you..

Shyam

crazycoder9 months ago

Great Project just Love it. .. Thank you..

Shyam

crazycoder9 months ago

Great Project just Love it. .. Thank you..

Shyam

crazycoder9 months ago

Great Project just Love it. .. Thank you..

Shyam

crazycoder9 months ago

Great Project just Love it. .. Thank you..

Shyam

crazycoder9 months ago

Great Project just Love it. .. Thank you..

Shyam

crazycoder9 months ago

Great Project just Love it. .. Thank you..

Shyam

hi, could i maybe get the eagle file?

it would be awesome :)

thank you,

max

Hello good sir! I am doing this project for my capstone at highschool and I gotta ask: what is the schematic for the control board? I'm temporarily housing a bread board with the IC chips and other components, but I would love to know what the actual schematic for the control board is so I know what connects to what. Thanks and keep us the good work!

drj113 (author)  ruiz80980231 year ago

Hi, Sorry for missing this comment - If it isn't too late, I can email you a schematic as well as the board layout so you can etch one yourself.

Doug

gizemacrf1 year ago

I cannot do programming . Can you help me ,please ?

drj113 (author)  gizemacrf1 year ago
Of course I can. I can send you a pre-programmed chip if you like, or even a complete kit.

My website is www.dougswordclocks.com

Doug

SO COOL!!!! Better than an ordinary clock :)

rloco1 made it!1 year ago

thank you so much for your instructions. my wife has seen the qlocktwo in a store, and fel in love with it, but it was waaay out of our budget. after learning how to work wit an arduino and electronics it was an interesting learning project. with as result a beautifull clock (in dutch) and a happy wife :-) .

IMG_20140203_174112.jpg
ste861 year ago
I see that you are using the atmega 328 and the Arduino so I think that the sketch should be 2 but in 'instructable you put in one ....: (..... or the sketch goes well on both? ... Excuse the spelling .. but I use google translator, I am Italian ....; p
Awesome...!!
nice one
gazoutg1 year ago
First of all thanks for the tutorial
I got no problem with the programming part but im a complete newb about electronic/circuits and i have a question:
since there is 19 I/O pins on the arduino and not all pins can be high at the same time why not just put the hours directly on output 1 to 4 in rows of 3 connected to transistor activated by output 5,6 and 7 ?
(like this guy did: http://www.instructables.com/id/Reverse-Geocache/step3/Hardware/)
Woulnt you be able to controll all Leds directly from the arduino without any other modules?
drj113 (author)  gazoutg1 year ago
Ahh - That aproach works well with single LEDs, but remember that each word of this clock is made from somewhere between 2 and 7 LEDs, and I decided to use 12V powered LED strips.

Also - the clocks that I make have both hours and minutes.

Another way of doing it is to multiples a big array of LEDs, 13 x 13, which allows you to have any word order that you want.

Doug
drj113 (author)  gazoutg1 year ago
I used the shift register approach, as I wanted 24 words, and using the shift registers meant that I didn't have to do multiplexing.

Simple as that!
1-40 of 244Next »