I currently use two alarm clocks to make me wake up in the morning, especially when I really need to get up because of important dates at fixed times (like catching a plane). Both are self-adjusting through a wireless time signal available in Germany, the DCF77 service. Unfortunately, right next to my bed there seems to be a hole in this station's transmission (or perhaps something blocks the reception on my side), and there is no update during night-times. I end up moving the clocks to my desk in the morning so they can get fresh time (and save battery power not running their receiver circuits in vain for five minutes), and putting them back to my bedside in the evening. Then there are some more issues with these commercially available clocks that I would like to overcome. Therefore, I am building my own alarm clock with several features - see below.
For a more detailed description, see the usage instructions
I have soldered the clock to a stripe circuit board now, which, after having it done, I will not use again. This procedure was mostly messing around with bridge wires, and the result looks unservicable. Future (non-trivial) designs will definitely use an etched PCB. The breadboard prototype where all the hardware testing was done on is deconstructed again.
The firmware is currently able to receive the current time from DCF77, and display it (together with the sync status) on the LC display. It stores the time to RTC after synchronization, and retrieves it from there on startup (if it is valid). To check for validity, first the time datagram has to pass the parity check included with the DCF77 protocol. A second datagram is then received, and difference between the first and second parity-wise valid datagram must not be greater than four minutes to be considered correct.
Absolute alarm mode has been tested and works, snooze mode and snooze limitation also are tested to work. Relative alarm mode is also functioning now. During testing, the clock seems quite robust with regards to power failures, in all alarm modes the settings are correct after power is back. The alarm function is now realized using a piezo buzzer, generating quite some noise at about 4.5 kHz, and definitely waking me up.
One issue is still waiting for a fix:
Technical documentation can be found in the Parts section as soon as I consider it ready for public release.
In general, the clock is considered ready for use, and I am indeed using it to wake me up in the morning. When important items are on my schedule, though (like catching a plane, or being at work early), I use another backup alarm clock.
Things already implemented were removed from this list. What is left could serve as a notepad while the alarm clock approaches case integration and completion.