Kids Light Up Clock 2.0

37K31767

Intro: Kids Light Up Clock 2.0

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!

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!

45 Comments

Hello,
First i want to tank you fort the project. It was something, i was looking for in a long time. i know this is an "old" project but i'm currently doing it for my children. I juste have a tiny problem with the impression of the unicorn. I Have an hole in the bottow of the unicorn's head. I know this hole is due to the support that are needed for a good impression. Maybe my settings are not good but i make the teddy bear with the same settings and didn't have any problems. Does someone had the same problem ? for information, i use CURA for the slincing all the settings are programmed as the post saying for the support i'm using TREE support i'm thinking is coming from that but i'm not sure. (sorry for my english not my first language).
Great question! I had troubles with printing the unicorn because of the way the head is designed. If you want, you can copy or export the original unicorn design from Tinkercad without the hole on the bottom of the unicorn head and maybe that one will print better for you? Here is the link: https://www.tinkercad.com/things/05CEV2dIGR7
I finally uploaded the sketch and it loaded fine but nothing lights up, not the led or clock. green power light on nano is one and red light on the expansion board. Any help would be appreciated.
Thanks Bob
Bob, I responded via direct message. I hope we can get yours working!
Sorry jonathon but what is direct message how do i get to it.
Thanks Bob
Hey everybody - if you want the time to be displayed in 24h format like me, just comment out the lines 349 to 355, which do the 24h to 12h format conversion. The code segment begins with "if(currentHour > 12)". Works like charm for me.
Good way to design a menu but... Isn't there an option to change the day of week? This means that if you modify it accidentally then you cannot use the day of week reliably without recompiling..
NOTE: I did not read the code, so maybe it is just not explained in the menu
Nope! That was a miss on my part. Someone else mentioned that in feedback too. I need to add a menu option to set the day of week.
I have everything working but I am plagued by the clock not reading my computer time. I followed your instruction. I verify the code in Arduino IDE and then immediately upload to the Nano. After that I see the clock display flash and I get the wrong time. I first had my computer in 24 hour mode but I changed it to 12 hours but no change. Then I commented out the longterm command line and verified again then apploaded and I can only get the first memory to work the clock ignores any other events. I did not touch your code all original. I am at a loss?? Why is the code not reading my computer clock right. Using a Mac os 10.14.6 Arduino IDE 1.8.14 hourly build I just did it again and my computer is at 4:37 and my Kids clock showed 03:17..... What am I missing? Can you think of something??
Hmm... great questions... I haven't done the compiling myself on a Mac, so there could be some problem with the datetime library, though I'm sure more people would point that out online. If the RTC has a battery in it and you've programmed the code with the "RTC.begin()" command, then it is already running. So subsequent programming will skip the RTC.adjust(...) command and not try setting the clock.

Try commenting out the "if (! RTC.isrunning()) {" line and the ending bracket "}" so it definitely is running the RTC.adjust line. See if that properly sets the time. If not I'm at a loss too. Just remember to take those comments out and reprogram, otherwise the clock will be reset every time the arduino is unplugged!

Let me know if that works!
Love these! Question - does the led stick up inside the bottom of the model? None of the models have a hole in the bottom to allow the light to come through. Your instructable is very thorough so I'm not sure if I'm looking at the project incorrectly or if this is a step missed?
Ah great question! Yes, the LED sticks up through the hole in the box lid, and then there are no bottom layers on the globe top. So, not only is the globe top hollow (0% infill) but it also has 0 bottom layers. (Example PrusaSlicer settings for the Yoda in screenshot below). If you did inadvertently print the globe with bottom layers, you can carefully use a drill bit to cut out the hole in the globe. Thanks!
Hi, how would I need to modify the code if we wanted the model to always have a green light on? Your instructions for setting the alarm colors are great, but my son would like for when the switch is turned on, that Yoda lights up green, and then it changes light colors per the alarms. Thanks in advance!
Ah! Totally missed there were no bottom layers. Great project!
Hmm... The difficulty with a design like that is the narrowness of the neck. Could certainly size it and print with 0% infill and supports, but due to the small neck the glow is mostly only going to light up the body. The head will have very little light at all. Still looking at other potential options.
This is good.
I am interested in knowing whether we can add a little speaker to it so that we can hear time in the voice of the same character loud by pressing a button.?
Overall this is sweet and thanks for sharing.
More Comments