Wordclock

by wouterdevinck in Circuits > Clocks

156514 Views, 937 Favorites, 0 Comments

Wordclock

front5-final.jpg
side.jpg
temp2.jpg
front.jpg
front4.jpg

Ever since first seeing QLOCKTWO by Biegert & Funk a couple of years ago, I have wanted a word clock on my living room wall. The original, however, somewhat exceeds my yearly clock budget, so I started looking for alternatives.

The internet is riddled with DIY and commercial versions of this type of clock, but few are as stunningly beautiful as the original. A selection:

None of these felt "good enough", but I have found one DIY project that really stands out: Elektronika.ba's wordclock, proving that it is possible to build your own wordclock that is as pretty as the original.

Also, here is a video of the manufacturing process of the original: QLOCKTWO manufacturing

I have decided to build my own version, taking some queues from the sources in the above and making some changes (and adding some mistakes) of my own. Along the way, I have tried to take many pictures and I have written a build report in the form of this Instructable.

The entire device is open source hardware: all drawings, photographs, schematics, PCB designs and software are available. However, if you plan to build a clock of your own I encourage you to make some changes and add some twists.

GitHub: https://github.com/wouterdevinck/wordclock


For the Epilog challenge:

What could I possibly do with a laser cutter? Oh boy, what couldn't I do? At first I would probably make some enclosures in wood and acrylic (well, boxes basically...). When that gets old I would move on to some more advanced uses: engraving the anodized aluminium enclosure of one of my next projects (cannot tell you yet what it is, but it will be really cool!), cutting precise mechanical parts (gears a.o.), selectively removing paint from the back of a sheet of glass, ... In summary: a lot of good content for many Instructables!

Think Long and Hard

wordclock-layers.png
face_21jul_reference_image.png

Start with a good design/plan to avoid surprises down the road! This step mainly involves some thinking and maybe some drawings.

Some of my requirements for the clock were:

  • It had to be professionally looking: glass front (no acrylic), white edges to blend into the white wall, …
  • Be able to control all LEDs individually, not only in groups per word, so that it can be used as a matrix to display text and numbers (e.g. date and temperature)
  • Keep the cost down (but a couple 100 euros was acceptable)
  • Use a professionally made PCB
    Part of every project I do is to learn a new skill (or a few new skills). In this case some of the new skills I wanted to learn were designing a PCB (albeit a simple one) and preparing it of for manufacturing.
  • As thin a possible, no bulky frame around it
  • Precise up to the minute, in words
  • Be compatible with Arduino: use an ATmega328 microcontroller, running the Arduino bootloader and use the Arduino IDE and libraries to program it.
  • Automatically adjust the brightness of the LEDs

I decided to build a fairly large clock: 50 cm x 50 cm (20" by 20") with a 16 by 16 grid of characters, with behind every character a bright white LED. This makes for a total of 256 LEDs, which I wanted to be able to control individually. I will talk about the details of the circuit in the next step, but on the drawing you can already see that I opted to use a chip specifically designed to drive an 8 by 8 LED matrix (well, I of course had to use four of those to drive a 16 x 16 matrix).

The main body of the clock would be routed out of an 18 mm (~3/4") thick sheet of MDF, with in the front 256 conical holes and in the back a cavity for the PCBAs with LEDs and driving electronics. I also planned to close the back with a thin sheet of aluminium that could double as a heat sink for the voltage regulators and LED drivers. In retrospect, it probably would have been fine without heat sinking, but better safe than sorry (and its nice that the back is closed to protect the electronics).

The front (faceplate) is glued to the main body, which makes it hard to replace, but also makes it look good (no frame or screws or anything). It consists of three layers: a thin sheet of glass (2 mm), a black self-adhesive vinyl cutout and a diffuser (tracing paper). The vinyl sticker covers the entire sheet of glass and is stuck to the back of it. The (mirrored) characters are are cut out of the vinyl. The diffuser is sandwiched in between the vinyl and the main body. The faceplate was designed in Inkscape early in the project.

Also note the this is where I made my first horrible mistake (so that you don't have to). When I first laid out the grid of characters in Inkscape (just a black canvas with white text in the Droid Sans Mono fixed-width font), I forgot a word. I only noticed more than a year later after the vinyl cutout had been manufactured. I dare you to look at the drawing a find the mistake. The missing word can be formed by combining parts of two other words, so the clock still works, but it will be an eyesore for years to come. Don't be as stupid as I was, quadruple check your design!

Schematics

blockdiagram.png
blockdiagram-bis.png
schematic-main-board.png
schematic-led-board.png
pcbs.png
pcbs-serial-chain.png
pcbs-all-connections.png

Early on, I decided to use the following components (also refer to the block diagram):

  1. Atmel ATmega328 microcontroller
    • running at 16 MHz
    • with the Arduino bootloader
  2. Maxim (Dallas) DS3231 real time clock with built-in temperature compensated crystal
    • + 3V back-up battery
  3. Four Maxim MAX7219 LED drivers
    • each driving an 8x8 grid of LEDs
  4. Four Azoteq IQS127D capacitive touch sensor chips
    • will need an antenna behind the glass
    • one in each corner
    • alternative: if Azoteq is hard to find, Atmel has a similar part
  5. 256 PLCC-2 (3528) Power LEDs
  6. A buzzer
    • as feedback when "pressing" the capacitive buttons
  7. An light sensor (LDR)
    • to automatically adjust the brightness

The schematic is fairly straightforward: everything connects to the ATMega. The schematic is split in two: the main board and the led board. More about that in the next step, but for now all that matters is that there are four led boards (each with one of the LED drivers, one of the capacitive touch chips and an 8x8 LED grid) and one main board (with everything else: the micro, the RTC+battery, the buzzer, the LDR and the power supply).

  • The RTC connects to an I2C on the ATmega
  • The LED drivers are chained and use 3 GPIO pins for serial communication
  • The capacitive touch chips each use two GPIO pins: presence and touch
  • The buzzer uses one GPIO (obviously)
  • The LDR uses an analog pin (the ATmega has a built-in ADC)

The main board also has five 1117 5V linear voltage regulators: one for the main board and one for each LED board. This is overkill, but the regulators stay really cool this way and its an extremely simple setup. A more efficient power supply would have stayed cool as well, but would have been more complicated.

PCBs

IMG_20140102_183602-crop.jpg
pcbs-all-connections.png
IMG_20140831_143142.jpg
IMG_20140831_143153.jpg
IMG_20140831_143216.jpg
IMG_20140831_143206.jpg
pcb-main-board.png
pcb-led-board.png
WP_000814.jpg

There are a couple of services available to hobbyists that manufacture PCBs at a reasonable price: Seeedstudio, OSH Park and ITead are a couple examples. Having said that, a 40 cm x 40 cm board would still have been quite expensive (e.g. 1250 USD at OSH Park, for 3 copies, ITead and Seeed had/have a maximum size of 30 cm x 30 cm). I also got a quote from Eurocircuits and that was still well over 300 euros (400 USD) for one copy.

So the circuit design had to take into account that the design had to be subdivided in multiple smaller (preferably identical) boards. After playing with the online pricing calculators and looking at the block diagram for a while, I decided to use five boards in the clock:

  • One cheap 5 cm x 5 cm board with the power supply, real time clock and microcontroller
  • Four (identical) more expensive, yet affordable, 20 cm x 20 cm boards with an 8x8 LED matrix, the Maxim LED driver and the Azoteq capacitive touch chip (as to be close to the corner as possible).

I got 0.8 mm thick boards from Seeedstudio in China: 10 copies of the main board (want one?) and 5 copies of the LED board for 120 USD (about 90 euros) including shipping. They are pretty decent quality, especially considering the low price.

I designed the boards in Eagle, because that is what most of the open source hardware projects use (definitely not because it is good or user friendly software). I made a small mistake in the main board, but it is easy to fix with a short jumper. Other than that I could have done a much better job at designing the silk screen layers, but in the end that doesn't really matter anyway. The pictures of front and back of the boards are annotated and hopefully clarify a couple of things.

The process of designing a PCB is a bit out of scope of this Instructable, but here is a good introduction to PCBs in Eagle: https://www.instructables.com/id/Turn-your-EAGLE-schematic-into-a-PCB/

Glass Faceplate

IMG_20140728_092344.jpg
IMG_20140728_195026.jpg
IMG_20140728_195038.jpg
IMG_20140728_220125.jpg
IMG_20140728_195105.jpg
IMG_20140802_155931.jpg
IMG_20140802_161334.jpg
IMG_20140802_161900.jpg
IMG_20140802_162159.jpg
IMG_20140802_162433.jpg
IMG_20140802_163341.jpg
IMG_20140802_163535.jpg
IMG_20140802_163542.jpg
IMG_20140802_163548.jpg
IMG_20140802_163552.jpg
IMG_20140802_164545.jpg
IMG_20140802_164549.jpg
IMG_20140802_164629.jpg
IMG_20140802_164804.jpg
IMG_20140802_165510.jpg
IMG_20140802_165554.jpg
IMG_20140802_170620.jpg
IMG_20140802_190955.jpg
IMG_20140802_191011.jpg
IMG_20140802_203029.jpg
IMG_20140804_193017.jpg
IMG_20140804_193121.jpg
IMG_20140804_193327.jpg
IMG_20140810_020724-cropped.jpg

I ordered a piece of 2 mm glass of 50 cm by 50 cm and had the vinyl sticker manufactured by a company called "Baby grafix" (they usually make "baby on board" decals for cars).

Before ordering the sticker, you need to prepare the file, many manufacturers ask for vector graphics in PDF or AI (Adobe Illustrator) format. I had originally used Inkscape, so I converted the text to vectors and exported the design to AI. I used a trial version of Adobe Illustrator to check the file before sending it off. Also make sure to specify to the manufacturer that you are going to apply the sticker to the back of the glass, which means they have to cut it in reverse.

Applying the (expensive) sticker to the glass is by far the most nerve wrecking step of the whole build. I used the wet application method, which I would recommend with a sticker this size. The downside of wet application is that at first it looks really bad (milky white streaks), it takes a couple of days to dry.

The pictures and annotations should provide plenty of info to complete this step successfully. The key is to work fast and watch out for dust.

At some point I would like to redo the face plate (without the missing word in my design) and use silk screening instead of a vinyl sticker. In the mean time: this is an Instructable about screen printing.

Soldering the Four LED Boards

Soldering the LED boards
IMG_20131226_193328.jpg
IMG_20140819_195251.jpg
IMG_20140110_222211.jpg
IMG_20140110_230340.jpg
IMG_20140110_214942.jpg
IMG_20140110_215811.jpg
IMG_20140104_154938.jpg

Soldering 256 LEDs may seem like a lot of work, but it only to me about half an hour per board. Two hours of work is quite okay considering the total amount of time spent on this project. I start by putting a bit of solder on one pad of the LED, the push it on place with tweezers (while heating the blob of solder) and then solder the other pad. There is a video in the above.

Soldering the Main Board and Testing All Electronics

IMG_20140104_155036.jpg
IMG_20140102_232300.jpg
IMG_20140110_001548.jpg
IMG_20140105_180322.jpg
IMG_20140110_001553.jpg
IMG_20140529_153116.jpg
IMG_20140318_231510.jpg
IMG_20140318_231448.jpg
IMG_20140318_231454.jpg
IMG_20140104_212854.jpg
IMG_20140104_174139.jpg
IMG_20140104_165750.jpg
IMG_20140104_165139.jpg
IMG_20140110_234848.jpg
IMG_20140320_232456.jpg
IMG_20140319_223006.jpg
Word clock electronics test

Once the LED boards are assembled they can be tested using an Arduino and once the main board is assembled and tested the whole system can be tested. Finally the five boards can be permanently attached together with solder.

Main Body: Routing and Drilling

IMG_20140125_153609.jpg
IMG_20140125_160915.jpg
IMG_20140125_164014.jpg
IMG_20140125_163144.jpg
IMG_20140125_172802.jpg
IMG_20140208_145517.jpg
IMG_20140208_152638.jpg
IMG_20140208_153938.jpg
IMG_20140208_153423.jpg
IMG_20140208_153140.jpg
IMG_20140208_160728.jpg
IMG_20140208_161820.jpg
IMG_20140208_161824.jpg
IMG_20140208_162126.jpg
IMG_20140209_180618.jpg
IMG_20140209_191108.jpg
IMG_20140209_200134.jpg
IMG_20140209_200708.jpg
IMG_20140209_201231.jpg
IMG_20140209_200931.jpg
IMG_20140209_201816.jpg
IMG_20140209_202203.jpg
IMG_20140209_204756.jpg
IMG_20140316_191939.jpg
IMG_20140316_194604.jpg
IMG_20140316_194629.jpg
IMG_20140529_170238.jpg
IMG_20140529_175051.jpg
IMG_20140529_175621.jpg
IMG_20140529_175647.jpg
IMG_20140529_181405.jpg
IMG_20140529_181417.jpg
IMG_20140530_165056.jpg
IMG_20140530_183035.jpg
IMG_20140530_183039.jpg
IMG_20140530_184300.jpg
IMG_20140530_191543.jpg

This step is by far the most work. And the most dusty.

  1. Route a shallow cavity in the back of a 50 cm by 50 cm piece of MDF, covering most of the surface. The LED board will sit in this cavity.
  2. Route a deep cavity for the main board. I opted to route one cavity in the wrong place and one in the right place.
  3. Drill 256 pilot holes
  4. Drill 256 10 mm holes
  5. Countersink the inside of all 256 holes with a small countersink (for the LED to sit in)
  6. Countersink the front of all 256 holes with a large (I used 25 mm ~ 1 inch) countersink

Bear in mind that MDF dust is harmful and power tool can hurt you, so wear adequate protection.

Main Body: Painting

IMG_20140530_195355.jpg
IMG_20140530_195403.jpg
IMG_20140530_213932.jpg
IMG_20140601_165217.jpg
IMG_20140601_165657.jpg
IMG_20140601_171136.jpg

I covered the front of the MDF with reflective spray paint. This paint is pretty nasty, it contains Xylene, so I advise working outside and/or wearing a respirator. Also make sure to cover the surroundings, especially outside on a windy day.

I also covered the edges of the front in black paint because the vinyl sticker was slightly smaller than the glass.

Main Body: Bringing Parts Together

Word clock test
IMG_20140601_175424.jpg
IMG_20140601_175429.jpg
IMG_20140601_180415.jpg
IMG_20140601_182608.jpg
IMG_20140601_182842.jpg
IMG_20140601_183151.jpg
IMG_20140601_190808.jpg
IMG_20140615_140231.jpg
IMG_20140615_140358.jpg
IMG_20140615_140444.jpg
IMG_20140615_140534.jpg
IMG_20140615_141150.jpg
IMG_20140615_141158.jpg
IMG_20140615_141256.jpg
IMG_20140615_171124.jpg
IMG_20140615_172946.jpg
IMG_20140803_170440.jpg
IMG_20140809_192715.jpg
IMG_20140809_193232.jpg
IMG_20140809_193425.jpg
IMG_20140810_020724-cropped.jpg
IMG_20140811_013919.jpg

Some small steps:

  • Routed a hole and slot for the power jack
  • Put the LDR in a hole on the bottom edge
  • Hot glued a serial port connector in the back
  • Had to enlarge to hole behind the o' in "o'clock" because of the '

Main Body: Edges

IMG_20140818_232748.jpg
IMG_20140818_232830.jpg
IMG_20140818_232859.jpg
IMG_20140818_233422.jpg
IMG_20140818_233154.jpg
IMG_20140818_234207.jpg
IMG_20140818_234428.jpg
IMG_20140818_234609.jpg
IMG_20140818_235053.jpg
IMG_20140819_001303.jpg
IMG_20140819_001430.jpg
IMG_20140819_002358.jpg
IMG_20140819_002608.jpg

To clean up the MDF edges, I applied white iron-on edge banding. The pictures and annotations should clarify.

Software

IMG_20140803_195741.jpg
IMG_20140615_203351.jpg
IMG_20140617_094417.jpg
Word clock brightness auto adjust

I used the Arduino IDE to program the clock and used the following libraries:

The current code and a future updates are available on GitHub:

https://github.com/wouterdevinck/wordclock/blob/ma...

Aluminum Back Plate (heat Sink)

IMG_20140601_160035.jpg
IMG_20140601_160836.jpg
IMG_20140601_162217.jpg
IMG_20140601_162538.jpg
IMG_20140601_163629.jpg
IMG_20140601_164541.jpg
IMG_20140601_232742.jpg
IMG_20140601_232805.jpg
IMG_20140601_233009.jpg
IMG_20140601_233653.jpg
IMG_20140615_124208.jpg
IMG_20140727_144450.jpg
IMG_20140727_144754.jpg
IMG_20140727_150255.jpg
IMG_20140727_160852.jpg

I cut a thin piece of aluminium (1 m x 0.5 m x 0.5 mm) in two using regular scissors. I drilled and countersunk 12 holes to screw the aluminium back plate into the clock body. I also drilled two holes for the wall attachment.

The LED driver chips are thermally bonded to the back plate using some thermal paste and the power supply (5 regulators on the main board) is connected using thermally conductive pads (because it sits deeper).

Touch Antennas

IMG_20140727_150243.jpg
IMG_20140615_165921.jpg
IMG_20140615_174412.jpg
IMG_20140727_145635.jpg
IMG_20140727_145819.jpg
IMG_20140727_161830.jpg
IMG_20140803_164248.jpg
IMG_20140727_163003.jpg
IMG_20140803_175053.jpg
IMG_20140727_165308.jpg
IMG_20140803_173714.jpg
IMG_20140727_165651.jpg

I made four antennas out of aluminium, one for each corner. I am still not sure what the two touch inputs on the top will be, but the ones on the bottom are to temporarily display date and temperature respectively.

The antennas are connected to the PCB with a short piece of wire. On the PCB, the trace to the test pad was cut using a utility knife.The pieces of aluminium sit in shallow cavities and are held in place with a bit of glue. The cavities are a bit deeper that the thickness of the aluminium, but that does not matter, the antenna does not need to be flush with the glass.

Power Cable

IMG_20140814_221706.jpg
IMG_20140814_221715.jpg
IMG_20140814_221909.jpg
IMG_20140814_223030.jpg
IMG_20140814_223055.jpg
IMG_20140814_230206.jpg
IMG_20140814_230646.jpg
IMG_20140814_231233.jpg
IMG_20140814_231731.jpg
IMG_20140814_231740.jpg

I decided to make the power cable a little less ugly by putting it in a braided sleeve. It is red because there already some other red accents in my living room.

Tweaks

There are a few things that can easily be tweaked:

The maximum brightness of the LEDs (brightness 15 in software):

Every LED driver chip has a current set resistor. I am still playing with the extra boards to see how bright I can go without destroying the LEDs or the chip and without using a ridiculous amount of power.

The sensitivity of the touch inputs:

If the touch inputs are to sensitive because of the large antenna, there is an extra pad on the back (C7, in each corner) for an extra capacitor on the antenna line. Refer to the Azoteq datasheet for details.