Word clock = expensive. Micro word clock = attainable.
Back at the end of November, 2014, I saw a post on Hackaday about a word clock. However, not just any word clock, but a Micro Word Clock utilizing an 8×8 LED matrix that was 20mm square (~0.8″)! Despite the low utility of such a tiny clock, it seemed like a fun project to learn SMT soldering, and it was cheap enough given the low parts count. Also, the designer of the clock, Daniel Rojas, had good documentation and made everything available online, even putting the boards on OSH Park for super-easy ordering. I got to work buying components…
The parts
The video Daniel created showing off the project indicated just 8 components – I added a USB cable for power. I also created a laser-cut case.
*Much of the following is pulled from the GitHub repository for the project, with some of my own notes*
Part numbers are from Digi-Key, and prices are from when I bought them in January, 2015.
- Printed Circuit Board (PCB)
- Available from OSH Park
- $3.20 for 3
- IC1: ATmega328P-AU (TQFP-32 package)
- The Arduino-compatible microprocessor that the program is uploaded to and run from
- ATMEGA328P-AURCT-ND
- $3.85 @ qty. 5
- IC2: DS1307Z+ (SO-8 package)
- Real time clock
- DS1307Z+T&RCT-ND
- $3.27 @ qty. 5
- C1: 220nF ceramic (2012 metric size, 0805 imperial size)
- Tiny ceramic capacitor
- 587-1287-1-ND
- $0.087 @ qty. 10
- C2: 2.2uF tantalum (3528 metric size, B-case)
- Tantalum capacitor
- 399-3714-1-ND
- $0.51 @ qty 5
- S1: 6.2×6.5mm SMD push button.
- Tactile switch
- CKN9112CT-ND
- $0.21 @ qty 5
- XTAL: 32.768 kHz crystal (3216 metric size, 1206 imperial size)
- Crystal
- 300-8814-1-ND
- $0.95 @ qty 5
- LED matrix: GYXM-788ASR 20x20mm 8×8 LED matrix. Probably any matrix labeled 788 should work.
- Display
- I got mine at Fasttech
- When they arrived, they were labelled LD-788BS, but they worked
- $1.64
- USB cable
- Free from my office helpdesk team (they had dozens of these laying around, with others being cut off of dead keyboards and mice)
- Case
- Designed by me in Illustrator, and cut out of ~1/16″ thick acrylic
- Layers glued together with SCIGRIP 3 10799 Acrylic Solvent Cement
Total cost excluding the case, USB and shipping: ~$11.59/each.
Assembly
As I said, this was my ‘learn to SMT solder’ project. Thanks to Ted at Nova Labs for giving me the run down and showing me how to properly use flux, drag solder, etc.
I attached components in the following order: Side 1 – ATMega, RTC, crystal. Side 2 – cap, tantalum cap, switch, power.
Use wire cutters and strippers to prepare the USB cable and get access to the +5 and ground wires (red and black respectively).
For our first board (we ended up making 5 total) I attached female headers just because I wasn’t totally sure of the orientation of the display. This also made programming the board easier: TX and RX are shared with display pins, and as long as the display isn’t there, you could program with just an FTDI adapter.
There is a faint pin 1 marking on the display under the epoxy… It is on the side with the printing (the bottom) and on the right side when looking at the pins. It connects to B1. Standard through-hole soldering applies.
Programming, and wasted time…
The entire project is available on Git Hub.
Everything went fine, except for one bone-headed move early on by me… The Arduino sketch has 6 separate files necessary for the clock to work:
- english.h
- isr.ino
- MicroWordClock2.ino
- otherdefs.h
- pindefs.h
- setup.ino
You also need to download RTClib.h, and Wire.h (which I believe is part of the Arduino IDE).
Long story short:
I missed the setup.ino and one of the other files when putting everything in the folder for the sketch. It didn’t compile correctly?! In my expert troubleshooting, I figured out it was missing the “void setup() {…” part of the code so I added that in the main MicroWordClock2.ino file – it compiled!
Of course, the displays didn’t work… Lots of troubleshooting, hooking boards up to a breadboard to make sure the correct boards were shipped (remember, they were labelled a little differently than Daniel’s boards), and at least 2 days wasted fussing until I finally figured out that I didn’t copy everything to the correct folder.
The extra “void setup() {…” was removed from the code, and the last *.ino files put in their proper place, and everything uploaded AND worked correctly.
Uploading files to the board (and waste of time #2)
Initially we tried following the directions on the Git repository for uploading code to the clock boards. For whatever reason we couldn’t get another Arduino Uno R3 to function as the programmer, despite trying multiple Arduinos and computers.
Eventually we had success with an FTDI adapter
Pins B3 and B4 are TX and RX respectively, and hookup to the FTDI.
Power was soldered to the VCC and GND pads.
Reset is Pin 5 (bottom-left) if the ICSP header and can be connected to Ground in order to program (just hit it right after you hit Upload in the Arduino IDE).
Be sure to select ATmega 328 on a breadboard (8MHz Internal Clock) in the Tools>Board menu.
Even easier – the ISP programmer
In order to save time by not installing female headers, we tried programming with an AVR programmer. With a 6-pin adapter and pogo-pins, it was easy to use this to install the program on other boards. Just press the pogo pins to the ICSP header (Pin 1 is MISO) and select “Upload Using Programmer” in the File menu.
I used “USBasp” in Tools>Programmer.
Final assembly
In my next post, I’ll outline steps to print the letter mask, and creating the case…
On the first unit I printed it on a piece of paper and just taped it to the display, but as you can see from the finished teaser at the top of the post, it looks much better when done right!
Links
https://github.com/formatc1702/Micro-Word-Clock
https://talk.hackspace.ca/t/led-matrix-badge-8×8/867/ – Vancouver Hackerspace thread about their group buy/build
http://arduino.cc/en/Tutorial/ArduinoToBreadboard
Link to uploads is no longer working. How can I download the needed software? Thx Mike
Updated the links.