Introduction: Kids Light Up Clock 2.0

About: Hobby programmer, woodworker, 3D designer, etc. I love tinkering with anything and everything and understanding how it all works!

The first version of my Light Up Clock for Kids I published a few years ago. At the time my wife and I were going crazy with our young kids (between 2 and 4 years old) who could not understand how to "wait for the 7" on the clock before coming in and waking us up early in the morning! Now the youngest (the 4th and hopefully the last) is 3 years old and this clock has been life-saving the last few years! Enhanced over time, it has provided a HUGE solution to our "child-waking-us-up-at-insane-hours-of-the-morning" problem!!!

The Light up Clock is simple and inexpensive. An Arduino Nano with a real time clock and RGB LED allows you to set multiple light up alarms of any color at whatever times necessary. I added buttons for setting clock and alarm times as well as brightness and color settings, and programmed it to save settings long-term so unplugging from power doesn't require any resetting. It now has a 3D printed case and customizable globe tops. Let me introduce to you version 2.0!

Note: The electronics in this project may be fairly complex, so I have some Electronics Only Kits (pre-soldered, programmed, and ready to assemble) provided on my Etsy Listing. There are also some completed clocks you can get there if in need!

Supplies

Tools:

  • Soldering Iron and Solder (if building components from scratch)
  • Small Screwdriver
  • 3D printer

Step 1: Design and Print

Version 2.0 uses 3D printing for a box case of any color and also a globe top in white filament allowing the LED to diffuse evenly to make a nice glow.

Globe Top
Two options: customize an existing design or design your own. I first started by using some designs I found and liked on Thingiverse. I took the downloaded STL from Thingiverse and imported into TinkerCad, then modified to add a sufficient base, screw holes, resize, and even add wording as needed. As I became more confident in TinkerCad, I designed some of my own globe tops. The main consideration for designing or picking a design is that the outside structure must support the entire globe! To allow the whole globe top to shine, we make it hollow by printing with zero infill and only outside perimeters, and no bottom layers.

Note: The Unicorn, Teddy Bear, Cloud, and Temple ones I designed from scratch. Please see the TinkerCad description or Thingiverse details for links to original designs and credit for the Star, Yoda, Vader, Mystery Machine, Basketball, and BB8.

Box Case

The box case I designed myself for fitting all the electronic components. The box includes a separate bottom and top section that are screwed together. The clock display, buttons, and power connections are accessible on the outside of the box. There is also a small screw tab to 3D print for holding the switch inside the box. Then on top of the box sits whatever globe top you choose. Because the globe tops are of varying sizes, the box top has a single customization needed to align the screw holes that hold down the globe to the box top.

Step 2: Prepare Electronic Modules

To make things simple, think of the electronic components as 6 distinct modules.

  1. Arduino Nano and Expansion Board
    • The brains of the clock. The Arduino Nano sits in the socket on the expansion board, allowing the pins to be exposed to connect the other 5 modules. Jumper wires in the modules are 10cm with the female end connecting to pins on the expansion board.
  2. LED Module
    • Includes the 10mm RGB LED, the *4cm half of PCB Board, along with 3 resistors (between 270 ohm and 330 ohm) and 4 jumper wires. This module is created by soldering the LED to the PCB board, with resistors soldered to each of the R, G, B leads. Then the 3 resistors and GND are soldered each to one end of 10cm jumper wires.
  3. RTC Module
    • Includes the DS1307 RTC with the CR2032 battery and 4 jumper wires soldered to SCL, SCA, VCC, and GND.
  4. Button Module
    • Includes 3 tactile push buttons, the *6cm half of PCB Board, and 4 jumper wires. The push buttons must be appropriately spaced according to the pictures/video to fit correctly in the 3D printed box. Each lead of the buttons should be soldered to the PCB board to prevent the buttons from moving around. Then the ends of 3 jumper wires are connected to each of the 3 buttons, and the fourth to GND for all 3 buttons.
  5. Clock Display Module
    • Includes the TM1637 4-Digit Display and 4 jumper wires soldered to CLK, DIO, VCC, and GND.
  6. Switch Module
    • Includes just the square self-locking switch with two pins identified in the pictures/video soldered to 2 jumper wires. (For ease of working with these wires in assembly, I typically shorten only these two to about 6cm each. Also, a few of the leads of the switch are removed according to the video to better allow certain connections on the expansion board.)

*Note: The design uses two 4x6cm PCB boards - one cut to a width of 5 holes along the 4cm side for the LED module and the other cut to a width of 4 holes along the 6cm side for the Button module. For cutting PCB board using a dremel or saw or tile cutter, please be sure to follow safety precautions as PCB dust is not something you want to breathe!

Step 3: Assemble the Clock

Positioning each Module
Following the order below (and in the video) position each of the 6 electronic modules in their proper position in either the top lid of the box, or the box bottom. Each module is screwed in place to the box using screws. (It is easiest to position all the modules first before connecting any jumper wires to the expansion board.)

  1. Arduino Nano and Expansion Board - this secures to the box bottom with two 4mm screws on opposite corners.
  2. LED Module - first put the LED through the top lid of the box and then secure the PCB to the underside of the lid with two 4mm screws.
  3. Globe Top - using two 4mm screws, secure the white globe top to the top lid of the box using the guide holes.
  4. RTC Module - secure to the top lid of the box using two 4mm screws.
  5. Button Module - secure to the right side of the box bottom with two 4mm screws.
  6. Clock Display Module - secure to the front face of the box bottom with two 4mm screws.
  7. Switch Module - the switch slides into the square slot on the back left side of the box bottom, then is held in place with the 3D printed screw tab using one 8mm screw.

Blacking out Built-in LEDS
Arduino Nanos have 4 built-in LEDs on the board that can often shine through the box bottom. To prevent this, cover the LEDs on the board with a small piece of electrical tape. Note: Also, some of the Nano Expansion Boards have a Power LED as well that should be covered.

Wiring the Modules
Review the wiring schematic to better understand which module pins connect to which location on the nano expansion board per the listing below. Note: VCC and GND connections can connect to any of the V and G pins on the Expansion Module for what best works for wire length and routing.

First wire the box bottom modules by connecting the jumper wires as follows:

  • Clock Display module
    • CLK - D13
    • DIO - D12
    • GND - GND
    • VCC - 5V
  • Button Module
    • Right button ("Menu") - D6
    • Center button ("+") - D7
    • Left button ("-") - D8
    • GND - GND
  • Switch Module
    • Either Lead - D5
    • Other Lead - GND

Next wire the top lid modules by connecting the jumper wires as follows:

  • LED Module
    • RED - D11
    • GREEN - D10
    • BLUE - D9
    • GND - GND
  • RTC Module
    • SCL - A5
    • SDA - A4
    • VCC- 5V or 3.3V
    • GND - GND

Closing the Box
*Carefully arrange all the jumper wires inside the box bottom, close the top lid of the box, and secure with three 8mm screws from the underside of the box.

*Note: It is best to program and test the clock before screwing the lid shut in case you need to troubleshoot or change any connections. Also, it is easiest to put the bottom 3 screws in their slots on the underside of the box, screw them in partway until you can just see them coming through the hole, then close and screw the rest of the way.

Step 4: Program the Arduino

Connect the Light Up Clock to the computer using the Mini-B USB cable. Open the Programmable_Color_Clock sketch and compile and upload the code to the Arduino Nano. When the sketch is first uploaded the RTC is most likely not running yet. In the setup code it will automatically set the clock to the appropriate time on your computer, based on when the sketch was compiled. Also, as part of the initial first setup, the initial configuration settings are saved into long-term memory.

After the initial first upload, you must comment out the //longTermSave(); line in the setup function and recompile/upload again. This allows you to modify settings and alarm times with the buttons on the clock and when the clock is unplugged and it goes through setup again, it will not reset to the default alarms, but retrieve your saved settings.

Note: I have included all Library files just in case, but they should be standard except for a modified TM1637.cpp file where I added certain display digits for the 4 digit display. The bounce2 library can be found here.

Note: Also, here is an Instructable to get Arduino Nano CH340 Drivers to work if you bought on Aliexpress.

Step 5: Customize and Configure Settings

I have created a thorough "Clock Instructions" PDF that walks through how to use the 3 buttons and menu options to set clock time, number of alarms, and each alarm's color, brightness, and time settings.

Step 6: Enjoy the Finished Product!

Use as a wake up clock for kids, a customizable nightlight, or just an at-home desk decoration! Let's see what you come up with!

Also, I know there are a few more complex electronics parts in this, so if you have a 3D printer and want to build the clock with pre-made electronic modules, here is my Etsy Listing where you can get just the electronics as a kit from me. Or for those in need, I've also listed completed clocks!