The goal for this project is to replace my old alarm clock (pictured above) with something that shows the key information I need to know in the morning. That information is:
- The time
- The weather
- When the next bus is coming
Sure, my phone can do all those things. But it takes time to touch and thumb through the various interfaces, beginning with entering a pattern to unlock the screen. And of course apps exist to put the weather and next bus on my phone’s unlock screen, but this information is still not available at a glance because it requires a button press. Having all the key information – time, weather, next bus – always visible on a dedicated display is convenient because it takes next to no effort to access the information; all I have to do is turn my head.
What I want this alarm clock to have:
- Ability to get the time from the internet
- A classic red seven segment clock display visible from across the room. (Red so that it doesn’t interfere with my sleep.)
- A small transflective character LCD screen to provide additional or clarifying information
- Alarm functionality so it can wake me up in the morning
- Ability to function as a classic alarm clock in the absence of a wireless internet connection
Here’s what I don’t want this alarm clock to have:
- An FM radio, internet audio streaming, or any advanced audio capability beyond having an audible alarm. I don’t use the radio functionality of my existing alarm clock anyways so I might as well reduce the complexity of the design by not including this.
- A graphic display or touchscreen functionality. Just old fashioned tactile buttons please!
- The classic digital alarm clock interface that required holding down a “time set” or “alarm set” button while tapping a separate minute or hour advancing button.
In addition to solving a practical need, I am using this project to gain experience in the following technical areas:
- PCB design – for the internal electronics
- I2C bus – for the displays and buttons
- State machines – for writing deterministic and easy-to-modify code
- Wi-Fi modules – for time synchronization, as well as downloading weather and bus times
- 3D printing – for the case/enclosure
- Design for usability – I don’t want to frustrate my future self by creating a difficult to use device
This is a project I’ve actually been working on the past few months, so the next few posts will be to catch up with what I’ve done so far.