Inspiration
I hate Mondays. I dread the sound that an alarm clock can make. Since the alarm clock has been in existence for as long as anybody can remember, I thought it would be cool to think outside the box on how I could approach the idea of creating an alarm clock without focusing on waking up the user through sound. There have been many weekends where I have been unable to sleep in and I have noticed that, despite how sleep deprived I was, I woke up without an alarm. How was this possible? Through nature's natural alarm clock: the sun. By waking someone up "naturally", this will prevent the dreaded, groggy and fatigued feeling that is experienced from abrupt alarms and tones.
How it works
So, I didn't create a sun.. The basic idea behind how my hardware hack works is to emulate a sunrise by paying careful detail to the duration of the sunrise, the nm/wavelength produced by the sun's rays and how light/dark the room currently is. The user will be presented with an android app that gives them 3 options. These options are setting an alarm, turning off the alarm, and snoozing. By default, snoozing will shut off the alarm for 5 minutes. There is also only one alarm available at a time. Once the alarm is activated, corresponding LED's on the breadboard structure will begin to glow. I have determined how many bytes I want to pass into each LED at a time, and this value will steadily grow to emulate the sunrise effect. The structure can be thought of as a bulleyes. There are 4 "rows", so, the outer layer is suppose to glow first. After 18 seconds, the second "row" will start glowing as well. This means that the first row will be a bit brighter than it was before. This pattern continues until the fourth row starts glowing. This all happens within 18 second intervals. by the time the "alarm" (lights) is at its peak, all of the LED's will be have an analogRead of "HIGH" or 255 bytes. This will take approximately 2 minutes and 6 seconds. So, if the user set their alarm for 7am, the "alarm" (aka LED's) would start to go off at 6:57:54. Another feature of the app is the ability to determine how bright the current room is. You wouldn't want your alarm to start glowing with a dim light if your room is very bright. This case is possible if the sun is already up and it is around 10-11am. If this case is met, the LED's will start on a HIGH output rather than a dim output.
A brief run through the code will look something like this: The arduino uses a light sensor to check the brightness of the room. From there, it will send the correct number of bytes to each row in order to maximize the potential in efficiently waking up the user. From there, it will repeat this, looping through and checking the brightness off the room each time until the user either presses "snooze" or "off" on the android app. The user has to talk into the android app and actually say the string "off" which will turn off the lights.
Challenges I ran into
-Bluetooth syncing: Pairing is not at all similar to connecting. -Parts: I felt as if the parts that I brought were not powerful/advanced enough to bring my product to its full potential. i.e. LED's weren't bright enough, breadboard allowed limited design, light sensor was too cheap and not too accurate. -Design: I had my own design in mind where each LED would be meticulously placed and triggered, but only having a breadboard presented many limited and challenging design problems.. -Concurrent processes: How can you run another process without "delaying" everything? By using the arduino "delay" this presented many problems.
Accomplishments that I'm proud of
Me and my partner were nearly able to finish 90% of what I had in mind. The important thing that I want people to get out of looking at my project is to view my project in a bigger picture. I hope they can see what my objective was and where I am trying to go with it.
What I learned
Hardware hacking is a lot of fun. Also, I should invest in a bigger range of coloured jumper wires.
What's next for Sonata
To optimize and debug this like crazy. There are many, many tweaks that I can make in order to make it much more efficient in waking up the intended user. I would also like this concept to be engraved in many other Monday haters.

Log in or sign up for Devpost to join the conversation.