How to Build C3Jr, a Sophisticated Word Clock




Introduction: How to Build C3Jr, a Sophisticated Word Clock

Like the handful of other word clocks you may have seen, all inspired from the original QlockTWO , C3Jr shows the time in words.

What makes it stand out among the DIY word clocks is, beside the professional look, its engineering: its dabble-free approach requires no more drilling holes for the LEDs, no more scissor-cutting cardboard to separate blocks of letters, no more soldering cables and terminals in the air.

C3Jr comes as a kit that includes a large PCB, electronic components, a set of high intensity diffused LEDs and mechanical parts (back and front plates, baffles etc). This kit is the result of countless hours of design, engineering, prototyping and programming by the talented Wyolum team (which also brought you ClockTHREE , the only multi-color word clock).

This instructable shows how to assemble the C3Jr kit. You will end up with a beautiful and solid word clock, as shown in the photo below.

Here are a few characteristics and "specs":
- Arduino (ATmega328) compatible, hackable/programmable using the Arduino IDE;
- open source hardware and software;
- uses the extremely accurate, temperature compensated, DS3231 real time clock chip, with backup battery;
- features a matrix of 16 x 8, individually addressable LEDs, which also allows the display of patterns/bitmaps/digits/scrolling text;
- current functionality also includes alarm (with the on-board buzzer), time and date setting from buttons;
- at 25cm x 25 cm, big enough to hang on a wall, yet small enough to stand on a desk.

The C3Jr kit can be purchased here .

Step 1: Tips. Before You Start...

... soldering, browse through this list of tips:

1. Read through and understand the entire set of instructions before you get started. I know, they always say that, but heed the advice this time. It could save you hours of rework and much consternation. We've captured all of the mistakes and blunders made in creating and building the prototypes and tried to foresee problems you may have.

2. Take your time. Enjoy the build process and take a break when you feel fatigued. You will have this clock for years to come (and hand it down to your grandchildren!) so there are no worries if it takes you an extra day or week to build it.

3. Leave the paper on the front cover and front frame until final assembly. This protects the parts from scratching and smudging.

4. On soldering:

- We assume that this is NOT your first soldering project . If it is, we'd suggest getting a cheap learn-to-solder kit to get started. If this is your first project in a while, here is a quick refresher on soldering. Double and triple check that the part is in the correct place with the correct orientation (where applicable). While de-soldering is possible, it is troublesome and time consuming and risky. Make it a goal that you will not have to de-solder in the course of making this clock.

- After each step, evaluate the solder joints from the front and back of the board. On the back, the solder should be shiny and make a volcano shape, as opposed to a dome shape. On the front, you should see that the solder came all the way trough the board. If it doesn't look good, try re-heating the joint until the plated-through-hole sucks up the solder.

- Check (I use a magnifier glass) that the solder does not short neighboring parts.

- If you do make a mistake, don't panic. Use a solder sucker or, even better (cleaner, easier), de-soldering braid , to remove the solder and pull the piece gingerly while applying heat. Try not to damage traces in the process, otherwise you will need to replace them with wires (a bit ugly, but still functional).

The following parts are not provided (they are not required):
C7 - 100nF RESET Capacitor
C11, C12 - 22nF (not used if X1 is a resonator, USED if X1 is a Crystal)
CD3 - 4 pin male header
J1, J2, J3 - Use any ONE of these three locations for Power In connector (USB-b)
P1 - 8 pin male header for 7 seg. display
P12 - V_OUT
P13 - ISP
rowBoB1 - 16 bit row driver

The schematic and board files are available here.

Step 2: Schematic, Board, Files

As mentioned, C3Jr is open source: schematic, board and source code files are freely available, here .

For a quick peek, the attached images show the schematic and board layout.

Step 3: Solder the Resistors

We'll start with soldering the resistors. They don't have a polarity, so their orientation does not matter.

1. Pick the 100 ohm resistors (brown-black-brown). On the schematic and PCB they are parts R1 - R16, R30. The first photo shows their positions with red rectangles (and also shows how to identify the resistors using the color code). Place the resistors and solder them.

2. Pick the 10K resistors (brown-black-orange). These will be used for parts R17,R18,R19,R22,R23,R31. (R36,R37,R38 are not used)
Photo 2 shows where to place and solder these resistors.

3. Pick the 4K7 resistors (yellow-violet-red), then place and solder them as R20 and R21. 1K resistors (brown-black-red) are used for parts R25 and R26. Two 680 ohm resistors (blue-grey-brown) are placed and soldered as R33 and R35.

Step 4: Solder the IC Sockets

Each IC (integrated circuit) socket has a notch that indicates the position of pin 1. The sockets need to be placed according to the silkscreen mask. If you happen to solder one of these in backwards, don't fret, just be sure to plug the IC as indicated on the board.

To make sure the sockets are soldered properly, solder first two diagonally opposed pins, while pushing the socket to the board. Then you can continue soldering the rest of the pins.

The sockets used in C3Jr are:
U3 : 28 pin socket, 0.3" width - for ATMega processor
U4 : 24 pin socket, 0.6" width - for Column Driver 74LS154
U5 : 16 pin socket, 0.3" width - for row driver STP8DP05
and their places are shown in purple in the attached photo.

Step 5: Solder the Capacitors

C8 is electrolytic (polarized) capacitor, with a value of 100uF. Its place is shown with the blue spot on the attached photo.
The minus terminal is closer to the the right edge of the PCB.

The others capacitors, C3, C6, C9 and C10, are non-polarized, 100nF decoupling capacitors. Their position on the board is depicted by the yellow spots in the photo.

Step 6: Solder the Transistors and the Rest of the Components

16 PNP transistors (2N5401) are used for driving (supplying current to) the LED columns. These are the parts named Q1 to Q17 on the board (placed closer to the 100 ohm resistors). Their orientation is important, so make sure you place them correctly, as indicated by the silkscreen.

Next, place and solder, one by one, the remaining parts:

- J1 (or J2 or J3) : The USB-b type Power Input socket. Use one of the three available locations depending on where you want the power cable to come out from. This depends on the final destination of the clock, either on the wall or on the desk.

- K1, K2 : 3 pin male header pins for Power Select (Wall Wart or USB) and LED ARRAY (Enable or Disable). Both of these also require a shorting link.

- P7 : 6-pin right-angle male header pins for FTDI connector

- R32 (optional, not provided) : LDR (light dependent resistor, may be supported in future release);

- SP1 : Speaker / Buzzer

- SW1,SW2,SW3,SW4,SW5 : right angle push button switches

- X1 : 16MHz resonator (3 pins, not polarized)

- Thumbwheel 5K potentiometer, used for dimming : it allows manual control of the brightness of the LED array. The board was designed to allow for various different types of potentiometers to be used. With the pot provided, try to make the control accessible from the top of the board (see attached photo 3).

Step 7: RtcBOB / ChronoDot

For tracking and keeping the time, C3Jr uses the extremely accurate, temperature compensated, RTC chip DS3231 from Maxim .

The C3Jr PCB was designed to also allow the use of the breakout board manufactured by Macetech, aptly called and famously known as ChronoDot . Alternatively, you can use Wyolum's own rtcBOB (standing for "real time clock Break Out Board"), compatible with ChronoDot.

The C3Jr board may come with the DS3231 chip soldered on the board. If that is not the case, you may use the rtcBOB. In this latter case, just install the 4-pin male headers CD1 and CD2 and plug in the rtcBOB (or the ChronoDot).

Step 8: Solder the LEDs and Insert the ICs

In this step we will solder the LEDs. These are 5mm diffused white LEDs.

LEDs are polarized components. Their short terminal is the cathode (minus). When placing the LED, the cathode always goes toward the label on the silkscreen.

In addition to the 128 LEDs in the matrix, there are 2 optional LEDs: one, named D260, is used as power indicator (may be annoying), the other, named D258, is for debug purposes. You may solder these two, if you desire.

I've found the fastest way to install the field of LEDs is in two steps: even numbered rows and odd numbered rows. This allows ample space for the soldering iron and gets the job done in short order. See picture below with the first set of rows complete.

Last step in the electronics department is to insert the 3 integrated circuits (U3, U4, U5) into their respective sockets.
As customary with DIP ICs, before inserting them, their pins need to be bent a bit, so that thee two rows of pins become parallel.
Bend all pins on each side at once, by pushing them against the table.

When inserting the ICs, make sure their notch (indicating where the pin counting starts) matches the notch in the silkscreen (and also on the socket, if you placed them correctly in Step4).

Step 9: Assemble the Mechanical Parts

C3Jr kit also includes the necessary parts to make the enclosure:
- 5mm laser-cut plastic back plate;
- 5mm laser-cut transparent acrylic face plate;
- a set of baffles, a grid that separates each LED from the others;
- standoffs, nuts, screws.

Start this step by inserting the four long screws into the four holes near the center of the backplate. Secure each with a small nut as shown in the attached photo 1.

Then, slide the completed PCB on to the extended screws with the buttons near the the two keyholes in the top of the backplate. Next, place the four small baffle locators on the screw and secure with four small nuts (photo 2 below).

Interlock the baffle grid into place with the angled edge against the PCB (photo 3). The provides a little extra space for the components. I found it simplest to start with the top and bottom vertical pieces and slide all the vertical pieces into place. Then, place a flat surface, such as a book, on top of the baffles and flip the whole assembly over and lift of the backplate and PCB leaving the baffle grid. Now the horizontal pieces can by set into place. Finally set the PCB and backplate on upside down on the baffle grid and flip the entire assembly back over. If you find an easier way, please let me know.
Double check that the baffles are not caught up on the locators in the four corners.

Insert four hex screws into the four corners of the backplate. Secure with 20mm standoff. Place a 7"x6" sheet of velum on top of the baffles. Then install the faceplate, securing it with the remaining four hex screws (photo 4). 

Your clock is finally complete. Plug it in using either the USB-B jack, or the FTDI interface. Either way, ensure that the PWR SEL jumper is in the correct position: on the right two pins for USB-B, on the left two pins for FTDI power.

Step 10: Show Off the Clock

The C3Jr kit comes with the microcontroller already programmed, so you don't need to load the Arduino sketch yourself.

Upgrades to the software will be released periodically, so for those willing to upload them, this is done through the on-board 6-pin FTDI connector.

C3Jr has 4 push buttons which can be used for different functions.

<MODE> button
This is usually the initial button you will press to interact with the clock. C3Jr has several “modes”. The function of each button changes depending on the current mode.

<DEC> and <INC> buttons
These buttons are used to navigate back and forth through the current menu.

<ENTER> button
This is used to lock in your selection.

Setting the time

When you first turn on C3Jr, the time may be incorrect. To set the time, hit <MODE> (furthest to the left). This puts the clock into “Mode-Mode”, the mode that allows you to change modes. Use the decrement button (<DEC> middle left button) and increment (“INC”, middle right button) to select the Time-Change-Mode, which is indicated with a large “T” on the right side of the display. Large characters are displayed using and 8x8 grid of faceplate letters as pixels.
The 2-digit year is displayed in large characters and is indicated with a “Y” in the lower left hand corner of the display. Use <INC> and <DEC> to select the year, then hit <MODE> again. Similarly, select the month, day, hour, and minute. Press <ENTER> to set the new time, press <MODE> to make any further changes. You may hit <ENTER> at any time, to lock in the changes and return to Normal-Mode.

LED Contest

Participated in the
LED Contest

Microcontroller Contest

Participated in the
Microcontroller Contest

Be the First to Share


    • Mason Jar Speed Challenge

      Mason Jar Speed Challenge
    • Bikes Challenge

      Bikes Challenge
    • Remix Contest

      Remix Contest

    7 Discussions


    6 years ago on Introduction

    Love the qlocktwo - any chance you might be selling these (or in the future)?


    9 years ago on Introduction

    In step ten, if somebody is making their own version of this,it would be good if you could include (or link directly to) the Arduino code.


    Reply 9 years ago on Introduction

    You are right. The Arduino code will be published in the next few days, here:

    And there is more for those who want to make their own version, I should write another step specifically for that. The circuitry, including the LED matrix, can be easily made on prototyping PCB. In fact, this is how we started, see the attached image:
    - the LEDs are spaced vertically and horizontally at multiple of 0.1";
    - the baffles were made out of female headers;
    - the board fits into the Ribba frame from Ikea.


    Reply 9 years ago on Introduction

    FlorinC, actually the code is already there. It is the same code base as ClockTHREE. Right now there are two steps to specify the "Jr" version:

    1. uncomment line 55 in ClockTHREE.h
    #define CLOCKTHREEJR // uncomment this line for ClockTHREEjr

    2. in ClockTHREE_02.pde use the EnglishJr faceplate
    make sure that "#include english.h" and "#include german.h" are commented out.
    uncomment line #34
    #include "english_jr.h"

    3. Around line 293 of the pde file only instantiate the englishjr faceplate:
    comment out the other two (english and german)
    EnglishJr faceplate = EnglishJr();

    This will be made simpler in the next version.


    Reply 9 years ago on Introduction

    I take it back. For now I will leave it as a three step process. I could not find a simple way to make this into a one stepper.


    Reply 9 years ago on Introduction

    Thanks Justin, that's a great addition.


    Reply 9 years ago on Introduction

    There are 3 kinds of people: those who know can count and those who can't.