loading

My place of employment, Javelin, is always looking for ways to make our products and services personable. Recently, an opportunity presented itself where I was asked to construct a word clock for a client. I found a number of great guides such as the Sleek Word Clock by scottbez1, Wordclock Grew Up by drj113. This guide deviates from those designs a bit by using off-the-shelf modules and components such as the IC2 Real Time Clock module and WS2812 LED strips.

Step 1: Gather Materials

Here is a list of materials used during the construction:

  • 169 RGB LEDs
    • I used a WS2812S strip, which has 60 LEDs per meter (comes out to 3 meters).
  • 1 - Arduino Leonardo
  • 1 - Real Time Clock Module (DS1307RTC chip with battery backup)
  • 1 - 1000 µF capacitor
  • 3 - 300 to 500 Ohm resistors
  • 2 - Push button switches
  • 1 - 10" x 10" x 4.5" shadowbox (purchased from Michaels)
  • 1 - Project PCB board
  • 1 - USB cable (high quality)
  • 1 - Sheet of foam core board
  • Access to a vinyl cutting machine
  • Contact cement (or other plastic friendly glue)
  • Clear silicone (a small tube of the stuff)
  • Tape (I used painters tape)
  • 9 1/4 by 9 1/4 inch square of window privacy film
  • 3D printer or opaque poster-board
  • Bits of wire
  • Soldering tools

Most of these items I had laying around my work area from previous projects; however, for the electronic components such as the LEDs, Arduino, and Real Time Clock, I found eBay was the cheapest route. Of course, your mileage may vary.

Step 2: The Grid

The base for this clock is built using a grid of zig zagged LEDs. But before I could place them on the foam board backing, we needed to set up and space out the letter grid. With the help of a co-worker, we came up with a grid based on the spacing between each LED (~17mm) on the strip and the 10" square of our shadow box frame. The result was a nice 13 by 13 LED grid inside 9 1/4" square. Later, I used a printout of the grid and, labeled each letter with its corresponding LED ID starting with the first LED being zero. The print-out was also used to mark the foam board for mounting the LED strips.

Step by Step

  1. Using foam core board, cut out a 9 1/4 inch square.
  2. Download and print out the template.
  3. Use the template to mark where each LED strip goes.
  4. Peel and stick the LEDs to the foam board, making sure to follow the flow indicators. These are normally indicated by little arrows on the LED strip.

Step 3: Wiring It Up

With the LEDs stuck in place, warm up your soldering iron and start wiring up the leads, zig-zagging your way from strip to strip. The strip should start in the lower right and work its way from right to left, bottom to top. Once the grid is assembled, it's time to start on the rest of the components.

Using the Fritzing diagram above, wire up the Real Time Clock, switches, and LED strip on a breadboard. Later, I transferred the circuit to a single-sided prototype board.

Step by Step

  1. Solder a 300 ohms resistor to the data in lead on the first LED strip.
  2. Solder a 1000 µF capacitor between the positive and ground leads on the LED strip.
  3. Solder the grid together, zig-zagging your way from one end to the other, based on the flow indicators on the LED strip.
    1. For even power distribution, I ended up running a second set of power leads, reconnecting them half way up the LED strip.
  4. Wire up the Arduino to the Real Time Clock, buttons, and LED strip, based on the diagram above.
    1. For testing and prototyping, I suggest using a breadboard. Once you have your circuit built and functional, transfer the same simple wiring over to a single-sided circuit board.

Step 4: The Code

The Word Clock code combines the basic functionality of the Real Time Clock module with the ability to address each LED individually on the grid. I used the same basic logic found in the other word clocks as the base of the code and then customized it to work with our Javelin logo, tag line, and the LED WS2812S strip.

Download the source code, which can be found here via GitHub, compile and upload to your Arduino.

Step by Step

  1. Download the source code.
  2. Load, compile, and upload the code to the Arduino.
  3. Set the time by issuing a date command via terminal interface.
    1. Linux
      1. date +T%s > /dev/ttyACM0
    2. OSX
      1. date +T%s > /dev/tty.usbmodem1431

Step 5: Building a Box

Once you have the code and base electronics working, it's time to start building the clock enclosure. The base of the Word Clock is built primarily using foam core board and double-sided tape. Starting with the back of the board where your LED strips are mounted, add a few strips on the top and bottom. If you're using the same 10 x 10 shadowbox, use four 9 1/4 inch by 1 inch strips for the top and another four for the bottom. This creates an area behind the grid to mount the Arduino and project board containing the RTC.

The electronic components are attached using the Velcro command strips. This allows you to disassemble the components, if needed. You can see in the photo above where the three wires from the LED strip wrap around to the back. I cut out a little hole in the side board to prevent the side from bowing.

The sides of the enclosure are built using thick poster board and used to frame in the grid. For the initial assembly I taped everything together. Prior to final assembly, I used contact cement to make everything solidly bound together.

Once you have the enclosure assembled, it's time for a trial fit inside the shadowbox. I used a few thick poster board bits as shims to center the grid.

Step by Step

  1. Cut out eight 9 1/4 by 1 inch strips from the same quarter inch foam board as the grid backing.
  2. Tape or glue two stacks of these strips, four to each stack.
  3. Attach one stack to the back of the grid at the top and bottom.
  4. Cut out four 1 1/2 inch strips from the thick poster board.
  5. Wrap the leads from the LED strip around the grid backing.
  6. Tape or glue the poster board strips around the grid backing, creating a nice square.
  7. Trial fit and center the grid square in your shadowbox, using bits of poster board as shims.

Step 6: Baffles Can Be Baffling

If you don't have access to a 3D printer, you can cut out the baffles. Just be sure to cut the slats slightly larger than the thickness of the material you are using. For the first iteration of baffles, we used a thick poster board, which I then piled up and cut using a jigsaw. It was messy, not to mention a bit dangerous. I'm somewhat partial to my fingers.

But to be honest, I would find someone with a 3D printer or join a local MakerSpace and have the baffles printed.

Step by Step

  1. Measure 28 strips of thick poster board, each 2 by 9 1/4 inch in size.
  2. Combine about 6 - 8 strips and bind one end together using tape. Using the grid guide, mark off where the grid lines are.
  3. Create a jig using a few screws and the edge of your workbench.
  4. Place the bound and marked strips in the jig and using some sort of cutting tool, cut the slots half way up the strips.
  5. Repeat steps 2 and 4 until all 28 strips are completed.
  6. Assemble grid and trial fit on your LED grid.

Step 7: 3D Printed Baffles

The baffles for the Word Clock were printed on a RapidBot 3D printer. You can grab the SLT files here via Thingiverse. I used a black PLA filament to keep light from bleeding to the neighboring cell. I experimented with a few other colors; however, black worked the best.

After printing out the baffles, I trial fitted everything together. Using tape, I placed the baffles on the grid and then printed out the letter grid. Once everything was assembled, I placed the whole enclosure inside the shadowbox.

Step by Step

  1. Download and print out baffles.
  2. Temporarily attach the baffles to the grid using tape.
  3. Print out the letter grid and tape it to the baffles.
  4. Slide the grid enclosure into the shadowbox.
  5. Give the clock a trial run.

Step 8: Building the Display

The face of the clock, inside the glass, is put together using a sheet of clear plexiglas, the vinyl cutout, and a diffuser. I found the big box home improvement stores carried small 11 by 14 inch sheets of Plexiglas, as well as rolls of privacy film. The privacy film works great as a diffuser.

I've tested a few different layering styles to cut down on light bleeding and provide good light diffusion. The result was to cut out the vinyl letter grid in revers. Apply the vinyl to the plexiglas. Then add a single sheet of privacy film over the vinyl. Once assembled, the clock layers look like this (front to back):

Glass | Plexiglas | Vinyl | Diffuser | Baffles | LEDs | Foam Board | Electronics | Shadowbox back

Step by Step

  1. Remove the protective film from one side of the plexiglas.
  2. Affix the vinyl cutout to the plexiglas.
    1. Be sure to use a bit of soapy water and a squeegee to push out as many air bubbles as possible when applying the vinyl to the plexiglas.
  3. Chase the air pockets out from between the plexiglas and vinyl (use some sort of soapy solution to make this part easier).
  4. Let the vinyl dry.
  5. Add the diffuser (privacy film) by laying it on top of the vinyl.
    1. Just like the vinyl, you probably should use some sort of soapy solution during the application process.
  6. Chase the air pockets out from between the film and the vinyl.
  7. Let the film dry.
  8. Trial fit the clock face to the grid using tape ... I love that stuff!

Step 9: Putting It Together

Final assembly is fairly straightforward. Using contact cement, I glued all of the foam board pieces together and re-enforced the enclosure using bits of additional foam board. I found the contact cement wasn't exactly friends with the foam inside the foam board so try and avoid getting glue on it. Once the enclosure dries, glue the clock face (the plexiglas and vinyl part) to the baffles using clear silicone. Be sure the letters and baffles are lined up properly.

I then added two holes in the backing of the shadowbox for the forward and reverse buttons. Then, tie a simple knot in the USB cable (which ends up being the power cable for the clock) and cut a small notch out of the bottom of the backing to allow the USB cable access to the outside of the enclosure.

Step by Step

  1. Make sure everything fits together.
    1. LED grid enclosure fits inside the shadowbox.
    2. Baffles line up with the correct LEDs on the grid.
    3. Vinyl cutout letters line up with the baffles
    4. Everything taped together should fit nice and square inside the shadowbox.
  2. Leaving the tape in place to hold it, glue the various bits of foam board together using contact cement.
  3. Once the enclosure has dried and the baffles are glued to the grid, glue the clock face to the baffles using clear silicone. To keep things simple, I ran a bead around the exterior of the baffles connecting the top of baffles with the plexiglas.
  4. Let that dry and cure overnight.
  5. Punch/drill out holes big enough to fit your forward and backward buttons in the shadowbox backing.
  6. Cut out a small hole along the bottom of the shadowbox backing, just large enough to allow your USB cable to pass through.
  7. Cut out a few more small strips of foam board to act as a buffer / space filler between the back of the enclosure and the back of the shadowbox.
    1. If your using the same 10 x 10 shadowbox, I used three layers of the 1/4 inch foam board.
  8. Tie a simple knot at the end of your USB cable.
  9. Place the clock inside the shadowbox and add the forward and backward buttons to the backing of the shadowbox.
  10. Attach the USB cable to the Arduino and run it out via the small hole at the bottom you just made. Be sure the knot stays inside the enclosure.

And there you have it! Your very own Javelin-branded Word Clock. Of course, if you want to make a word clock without the Javelin logo, modify and feel free to modify and customize the design to fit your needs.

<p>Thank you nitrohawk for this great project and super clear tutorial, here is my version freely inspired from yours.</p>
<p>I usually just lurk around on Instructables but this is a great one. Well written, detailed, and has good pics. Nice job! I'm going to start on my own clock today.</p>
<p>Hola , enhorabuena por el proyecto , yo estoy intentando emularlo para hacer un regalo.</p><p>lo tengo todo montado y funciona. el problema es con el RTC , estoy usando un modulo Tyni con el chip DS1307 , pero no consigo ponerlo en hora , y si por casualidad consigo hacerlo, cuando lo desconecto y lo vuelvo a conectar me dice que son las 5:15 2054_07_01. la bater&iacute;a me da una tensi&oacute;n de 3,25v y comprob&eacute; las conexiones y creo que est&aacute;n todas bien.</p><p>Estoy pensando en comprar otro DS1307, o intentarlo con un DS3231 , me valdr&iacute;a tu mismo c&oacute;digo con este ultimo chip RTC?( soy novato en programaci&oacute;n y no creo que pueda cambiar la configuraci&oacute;n a otro RTC), estoy un poco desesperado ya jajaja .</p><p>Muchas gracia de antemano por cualquier ayuda. un saludo!</p><p>P.D: estoy usando Arduino MEGA 2560</p><p>---google transale--</p><p>Hi, congratulations on the project, I'm trying to emulate it to make a gift.</p><p>I have everything installed and working. the problem is with the RTC, Tyni am using a module with the DS1307 chip, but I can not set it, and if by chance I get to do it, when you disconnect and reconnect tells me it is 5:15 2054_07_01. I get the battery voltage 3,25v and checked the connections and think they are all good.</p><p>I'm thinking of buying another DS1307, or try a DS3231, I would be worth your same code with the latter RTC chip? (I'm newbie in programming and not think I can change the settings to another RTC), I'm a little desperate now lol.</p><p>Many grace in advance for any help. a greeting.</p><p>P.D: i&acute;m using arduino MEGA 2560</p>
<p>Hey, I'm glad you found the project interesting. I've used a few DS1307 modules now and I've set them all the same by wiring up the module to the Arduino and running the TimeSerial example program. This example can be found inside the Time library once its been added via <b>File &gt; Examples &gt; Time &gt; TimeSerial.</b> </p><p><a href="http://www.pjrc.com/teensy/td_libs_Time.html" rel="nofollow">http://www.pjrc.com/teensy/td_libs_Time.html</a></p><p>The Time Library website gives an example of using Processing to send the time; however, its doing nothing more than sending the number of seconds since Jan 1 1970. The same thing is accomplished by running this from your command line (Linux &amp; OSX):</p><p>date +T%s &gt; /dev/ttyACM0</p><p>Just be sure to update the port in which your arduino is connected to.</p>
<p>Thanks for answering. I managed to set it, and this stable as long I do not touch any buttons, I think that offsets some time to press the buttons. I've included a digital thermometer DS18B20, so that pressing the two buttons simultaneously temperature if the problem does not come from there.</p><p>Are you refer to upgrade the port arduino, to something like this line // #define DS1307_I2C_ADDRESS 0x68?</p><p>Thank you very much, I'm learning a lot with your help and your project!</p>
<p>It&acute;s working, thankyou! I&acute;ll upload any pics. </p>
<p>Thats AWESOME! Congratulations. I can't wait to see your final product.</p>
<p>here are the pictures: D.</p><p>I included a digital thermometer (DS18B20) and a potentiometer to control the brightness (apart from the automatic transmission of this) and a few animations for special days.</p><p>Although there is some residual light, I am happy with the result. thank you very much again!</p>
<p>Hi daidpayelec,</p><p>would you mind sharing the code you wrote for the add-on you did? </p><p>I'm not deep enough in the software side to program this stuff myself... </p><p>Thanks in advance </p><p>Simon_the_robot </p>
<p>That is really really cool.</p><p>Congratulations!</p><p>Keep On Making.</p>
<p>Great job Nitrohawk. Absolutely LOVE IT. I would like to build one, although I am without any knowledge of microcontrollers. Would be dependent on your support and guidance. Looking forward to your help. Keep up the good work.</p>
<p>I have access to have stuff printed on Makerbot Replicator 2s at my college. Could I bring them my stl files and have them printed or would they not be able to?</p>
<p>Hi, great project ! So great that I wanted to make a custom one but when I upload the original code in my arduino (I've got a UNO R3, not a leonardo), the clock is stuck on the &quot;Selftest Mode TRUE&quot;. I can add or remove 300sec by keep holding the buttons when the selftest mode is complete, but as I release the button I was holding, it go back to selftest mode again. It's a bit annoying because I don't understand what I do wrong. Thanks !</p>
<p>Hey Galak,</p><p>A quick but not very good solution would be to take out the self test code.</p><p>Hope that helps!</p>
<p>yep, that's what I've done. But I also lost the ability to go forward or backward with the time to set it right. </p>
<p>Hi nitrohawk,</p><p>This project really inspired me, thank you. If I may ask, what type of font do you use for the name of &quot;Javelin&quot; and the font of the clock words?</p>
<p>Hey! I've wondered if you have any shots of both the front and back of the PCB board, as I'm struggling to wire it all up with the schematic of the breadboard.</p>
<p>You know, I dont; however, I will be making another one soon. When I do, I will be sure to update the write up and include more shots of the front and back of the PCB.</p>
<p>That'll be really appreciated! Thank you in advance!</p>
<p>What are the values of all of the resistors and where do they need to be soldered to ( I know one goes on the data pin of leds) ?</p>
<p>I used 300 Ohms 5% resistors for the data pin going to t the LED and one for each button input.</p>
<p>what was the total cost of this project?</p>
<p>Relatively inexpensive. Components I didn't already have were ordered via eBay. The total amount spent was $85.</p>
Great work! You may have already addressed this, but how hot does this get during normal usage?
<p>Heat was a concern at first; however, the unit never got any hotter than &quot;warm to the touch&quot;. I let it sit on my desk for over a week, making sure it kept accurate time and the unit never got hot. The RTC module has an onboard thermometer. A cool mod would be to expand on that, turning the clock into LED matrix and display things like the current temp.</p>
hi, very great project dude. keep it up i want to make this clock. i didnt understand why u used rgb strip?<br>is there any switch you are using to change light color? one more thing which software you used to make vinyl cut out?<br>ankush4181@gmail.com
<p>1. I used an RGB strip because using the Arduino I can address each LED individually and set its color to any RGB color and brightness. This allows anyone re-creating the clock to expand on the idea introducing animations, fades, wipes, and marquee effects. At that point, it's no longer just a word clock but a highly informational and entertaining pice of art.</p><p>2. The LED color is set via the Adafruit library, but you are not limited to using it. You can use any of the ws2812 libraries.</p><p>3. The vinyl cut out was done using a buddies vinyl cutter and I believe he uses Sure Cuts; however, you should be able to use any vector based software to tweak and cut out a modified template.</p><p>happy making...</p>
tysm dude. rgb strip i have has 4 wires and yours have only three. then how to i use that, im little weak in programming. can you also swnd me circuit diagrm?
<p>Sounds like you have an RGB strip using the LPD8806 chip. I'm afraid I've never wired one of them up; however, I did find what looks to be a helpful guide on Adafruit's site.</p><p><a href="https://learn.adafruit.com/digital-led-strip" rel="nofollow">https://learn.adafruit.com/digital-led-strip</a></p><p>With a little expermenting, I'm sure you can combine the wiring with the Word Clock code to make something awesome!</p>
<p>Awesome Job... I really like this .</p>
<p>Great project. I love the nice clean look.</p>

About This Instructable

66,110views

693favorites

License:

More by nitrohawk:Arduino Powered Homecoming Mum Javelin's Word Clock 
Add instructable to: