Kids Light Up Clock 2.0

35,394

295

40

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!

Make it Glow Contest

Runner Up in the
Make it Glow Contest

3 People Made This Project!

Recommendations

  • New Year, New Skill Student Design Challenge

    New Year, New Skill Student Design Challenge
  • Anything Goes Contest 2021

    Anything Goes Contest 2021
  • Jewelry Challenge

    Jewelry Challenge

40 Comments

0
crazypenguin24de05
crazypenguin24de05

Tip 7 months ago on Step 4

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.

0
JonathonT
JonathonT

Reply 6 months ago

Thanks for the tip!

0
frarugi87
frarugi87

Question 9 months ago

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

0
JonathonT
JonathonT

Answer 9 months ago

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.

0
Tobiasmx
Tobiasmx

Question 9 months ago

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??

clock.jpg
0
JonathonT
JonathonT

Answer 9 months ago

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!

Screenshot 2021-04-08 163433.png
0
phillipspe2010
phillipspe2010

10 months ago

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?

0
JonathonT
JonathonT

Reply 10 months ago

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!

Screenshot 2021-03-12 155414.png
0
phillipspe2010
phillipspe2010

Reply 10 months ago

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!

0
phillipspe2010
phillipspe2010

Reply 10 months ago

Ah! Totally missed there were no bottom layers. Great project!

0
JonathonT
JonathonT

Reply 10 months ago

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.

0
JonathonT
JonathonT

Reply 10 months ago

Thank you! It's fun!

0
AlbanyCountyFasteners
AlbanyCountyFasteners

10 months ago

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.

0
JonathonT
JonathonT

Reply 10 months ago

haha, love the idea. I'm sure something like that is doable with Arduino programming and perhaps more memory to store the sound. :)

0
JonathonT
JonathonT

Reply 10 months ago

I designed a couple of them and others are remixes of other designs on thingiverse!

0
JonathonT
JonathonT

Reply 10 months ago

Ok, reviewed you instructable and I love the interface of a website for programming times for it! I really need to get into Raspberry Pi's or at least the ESP microcontrollers that can access wifi. So many possibilities here! Now that I work from home with kids, I want a simple light outside the door that turns on when I'm on a Zoom call so they know not to interrupt!