This is a DiscontinuedProject. It has been finished and is in a stable state now. Currently, no effort is made for further work here.
Introducing the AlarmClock plans
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.
Features
- Detached DCF77 receiver unit to solve the bad signal reception described above
- Show number of hours where sync failed, and keep the clock running in an RTC then
- Limited number of "Snooze" events (a button telling the clock to "let me sleep just five more minutes")
- Alarm time configurable not only absolutely, but also like "Wake me up in seven hours from now".
- Remember default values for absolute and relative alarm times seperately for weekdays and weekend nights
For a more detailed description, see the /UsageInstruction.
Status
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:
- Have to change from direct comparison current vs. alarm time to a check if current time is greater than alarm time and alarm has not yet run for this day. It could be that a DCF77 time update forwards the time stepping over the alarm time, in which case currently no alarm will sound.
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.
|
|
|
|
|
|
|
|
|
|
Random Thoughts
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.
ambient light sensor for ligt effects and (maybe) to support background lighting control
outdoor temperature sensor, maybe indoor, too Plans for the /FirmWare (subject to change!)
Bought some tricolor LEDs for additional effects, though these will require another MC for PWMing the colors.
Put it all into an old telephone case, bought a used FeTAp612 on eBay. - Impulse times from dialing wheel should be 62ms closed, 38ms open per pulse. After 100ms pause, consider number to be dialled.
The 4x20 LC display is a bit large for the telephone case. I have to find a solution for this.
THIS DATA IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DATA, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
All product and brand names mentioned on there pages and in the source code are registered names and/or trademarks of the respective owner and are mentioned for identification purposes only.
For a full copyright notice, please see this link. For imprint and contact information, please see http://www.thiemo.net/.