Sunrise Alarm Clock, v1.0
After years of soft schooling, I discovered waking up for a real job is hard. I am expected to be to work at the same time every day, and to get there on time I have wake up EARLY, before the sunrise.
So after looking into things, I settled on trying a sunrise alarm clock to help me wake up. The premise is simple: set the alarm, and the room slowly starts to get light at the designated hour. So simple that I wasn’t willing to pay $120 for a commercial one. Version 1.0 was fairly crude but worked so well I ended up revising the system into a version 2.0.
I started with what I know, which is using Arduino to make lights flash on and off. I decided it would be easiest just to build an alarm clock from scratch; how hard could it really be?
For the screen, I used the Phi2 shield for Arduino. It turned out to be quite a hassle because of a lot of compatibility issues between Arduino, Arduino IDE, and the libraries that supported the device. The biggest problems was with the Real Time Clock (RTC) integrated into the shield. The Phi2 files include libraries, but the DS1307_1 library included with the Phi2 code did not work with Arduino IDE v1.0, and so after several hours of painful debugging I switched it out to DS1307 library by D. Sjunnesson. Once that was done, building the clock itself wasn’t that hard. I modified the code a bit to switch around the buttons; the system only had one free pulse-width modulation (PWM) tap open, so I switched around the buttons to free up 2 other PWM taps.
Below is a diagram of the LED system, which I soldered onto a blank through-hole board that I made into an Arduino shield. When the Phi2 alarm clock base would have activated the buzzer, it initiates the “sunrise.” There are three sets of bright LEDs: one set red and orange, one set orange and blue, and one set white. When it was time for the alarm to go off (per Phi2), it would slowly ramp up the PWM on the LEDs, starting with the red, then the blue, then the white. I configured it to ramp the light up over the course of a half hour.
Here is a zip file containing all the relevant Arduino files, including the updated library. I didn’t include the Phi2 in the diagram of the circuit because the Phi2 is not well-documented, and I was lazy and just didn’t feel like tracing the connections for a project I ultimately scraped in favor of version 2.0.
For the case, I just grabbed a random box off Thingiverse. I changed the proportions a bit, and printed it with 1 shell and zero infill to create a hollow box. I cut off the top, put the components inside, and drilled some small holes for the screen and the buttons.
Even though it looked like something a 3rd grader put together, it worked way better than I expected. It made waking up in the dark hours a lot easier. Before I had struggled with buzzing alarms in the dark and stumbling around blind, but now when my separate alarm clock buzzer alarm went off I was already more or less ready to wake up, and the room was filled with a soft light.
Below are some pictures of the system as fully constructed and in use.