Improvements for the ubiquitous alarm clock

Similar projects worth following
An alarm clock that gets rid of the annoyances associated with standard alarm clocks.
Some of the annoyances are:
* Only one alarm time for all days of the week. Everyone encounters being woken because you forgot to turn off the alarm for the weekend.
* The alarm time is not visible by default. You have to push some buttons to see it.
* The digits are too bright at night, preventing me to sleep.
* The digits are too small. The designers might have forgotten that people don't wear glasses at night.
* A little dot showing AM/PM. What is what?
* Setting the alarm doesn't turn it on.
* It takes two hands to set it. Was that a safety precaution?
* The buzzer sound is annoying as hell. Who wants to start a day like that?
* Some people complain that the standard alarm clocks are not loud enough.
* In case of power outage, the alarm doesn't sound.


  • Sunrise simulation
  • USB charge port (automatically identifying required charge protocol using TPS251x)
    • It should be discouraged to take a smartphone or tablet to your bedroom.  Give your mind some rest.
  • Large LED display
    • readable without glasses
    • Independently configurable display brightness settings for day & night
    • User configurable level to switch between day & night mode.
  • Light from LED-array and buttons can be fully turned off at night.  Waving at the clock will turn them on again.
  • Rubber feet (so it doesn't slide from your closet)
  • Wake-up sound from MP3 (2.5W in a 4ohm speaker)
  • One-handed configuration
  • Backup supply in case of power outage, powerful enough to sound the alarm.
  • Powered by USB adapter.  These are easy to get.
  • USB-B connector for power.  Even your grandma will be able to plug this in.  The same can not be said from a USB micro connector, used on the Blaupunkt BT16CLOCK (that's not the only reason to avoid this clock.  Try to turn on the FM radio without using the manual.  Good luck...  The UI is not very intuitive.) 
  • Update (Feb 12 2019) : Micro USB of BT16CLOCK has bad connection.  It's no longer possible to charge the clock. The micro usb connector has been replaced by a standard USB B connector.

Apparently Craig Bonsignore had about the same annoyances with standard clocks, that's why he built his own version.  I'll start off from that design: adding features I miss and scraping off costs where needed.

Future extensions (unplanned)

  • Wake up module, to be placed under the pillow.  Its vibrations will wake you, even if you're deaf.  It's a nice alternative to a very loud alarm which you're bed partner is not likely to appreciate.
  • Wireless functionality to sync slave clocks around the house.  Bluetooth GATT CTS (Current Time Service) may be of some use here.

Block diagram

Top level diagram of the clock

Hardware modules

Time sync

Five options for setting time have been considered:

  • Long wave time signal
    • DCF (EU), MSF (UK), WWVB (US)
    • cheap modules only have a few 100km range.
    • more future proof than RDS.
    • signal easily disturbed by electronics in the vicinity (laptop, SMPS, ...) .
  • RDS
    • no user interaction required
    • indoor use possible
    • EOL in Western Europe
    • Timestamp only sent once a minute.  When the reception quality is bad, you might have to wait some minutes to get the correct time.
  • NTP : requires input of SSID & WPA-key to the alarm clock.  The most elegant way seems to add a QR-code on your device, showing its preferably  unique SSID & WPA-key.  The users scan this QR-code to connect their phone to the device's AP.  Upon scanning, the smart phone opens a webpage.  This webpage contains a list where you can select the SSID of your home network.  Directly below it, there's a text box where you can type the corresponding WPA-key.  Upon saving the settings, you're done.  The pitfall is that the browser on your smart phone doesn't run as a root user, so it has no access to your wifi credentials.  This requires the user to copy them manually.  This can be a bit of a burden, leading to complaining users: "Where's the WPA-key again?",  "Pff, such a long key..." and "How do I type these strange characters?..."
  • Instead of putting your device in AP mode, you could transfer wifi credentials through NFC, audio, sound or through light
    I don't see any benefit in these methods...
Read more »


Datasheet for the MP3-IC on the DFPlayer Mini module, autotranslated from chinese.

Adobe Portable Document Format - 1.87 MB - 12/27/2019 at 21:30


  • Firmware

    Christoph Tack01/26/2019 at 21:10 0 comments

    Test hardware

    Big mess o' wires : don't repeat my mistake, instead put the antenna and the DCF receiver on a separate breadboard.

    This setup has the BluePill on the breadboard, connected to a Nucleo debugger (white PCB on the left).  The 7segment module on top connects to two GPIOs of the BluePill.  The BluePill receives its DCF-pulse info from a DCF-receiver on the breadboard.  That DCF-receiver is connected to a DCF-antenna, attached with rubber bands to the breadboard.

    DCF-signals are very weak.  Making breadboard connections with relatively long wires as done here, makes the BluePill a fairly good RF noise radiator.  So with the setup as shown here, it's nearly impossible to get a correct DCF-reading.  The picture was actually taken around 9PM.  The DCF-library makes a best guess of the data it receives.  There's no reliability threshold, so wrong data might be shown in the event of a useless signal.  Most of the times, even with a bad signal, the clock recovers and finds the correct time.

    I faced the same problems with the BluePill when trying to receive FM-RDS.  Using a Nucleo, results were a little bit better, even with the same mess of wires.

    Code can be found on Github.

    DCF signal quality for the same setup the next day, on Sunday, about the same time of day was much better.  No easy explanation about what caused such an interference on Saturday night.

    Parameter setup

    This design has quite a lot of parameters that can be set.  It's challenging to find a way to set these all up easily using only a 32x16 display.  The display can only show 10 characters at a time.

    Menu input would be limited to using a rotary encoder or a few switches.

    I have tried a few menu libraries for Arduino : Arduino Menu System, Arduino_LCD_Menu and ArduinoMenu.  They all suffer from the same problems:

    • Requiring a lot of key presses for setting up parameters
    • Difficulty of displaying the menu hierarchy in a way that is simple to grasp.  E.g.  setting the weekdays for the alarms are four levels deep in the menu.  Without a menu overview, it will be hard to keep track of what you're setting up.

    Let's take the Google clock app for Android as a reference.  This app allows to setup more or less the same parameters as listed below.  Using the app, an alarm can be setup in less than 30s.  This would be nearly impossible to do with a 32x16 LED array and four buttons.


    Parameter setup will be done using physical switches.  A combination of DIP switches and rotary switches will be used. 


    • Each parameter can be set without having to browse through the other parameters, speeding up the parameter setup process
    • Parameter status is indicated by the physical state of the switch.  This doesn't require power and doesn't cause undesirable light output at night.
    • Depending on the target audience, the switch functionality can be implemented using DIP-switches and rotary switches or with panel mount toggle switches and rotary switches that allow for older people to control the device.


    • Adds cost, because it requires a lot of extra hardware
    • No other means for setup of parameters (e.g. through bluetooth) because the switches would no longer reflect the current settings.  A way to circumvent this, would be to replace the rotary switches by rotary encoders & 7segment displays and replacing the dip switches by momentary switches and LEDs.

    The input panel will be implemented on a separate PCB, allow for upgrade, changes in a future stage.

    Menu structure

    • Alarm 1 (Alarm 2 has the same menu structure).  The menu item is dynamic.  An icon shows if the alarm is enabled or not, followed by the alarm time
      • Activation
        • On
        • Off
      • Time
        • HH:mm
          • minutes can only be set in 5min. steps.  It allows to set up time faster.  Nobody wants to get up at...
    Read more »

  • Housing

    Christoph Tack01/20/2019 at 11:50 0 comments

    Main housing


    Because of the sunrise simulation, the housing, or a least a major part of it must be translucent or transparent.  Translucent materials are preferred as the diffusion of the light will make the housing light up as a whole.  It's an option to use transparent materials for the housing and stick a translucent film onto it.

    • Acrylic : can be laser cut

    Box design

    Online file generators for laser cutting


    Antenna enclosure

    There's a chance that the electronics of the generate too much EM-noise, so that the antenna and receiver need to be placed in a separate housing.

    A suitable housing is the Hammond 1593NBK (Farnell €2.75).

    If you want to build a really cheap enclosure for your antenna with hot glue and some scrap piping, have a look here.

  • Power supply

    Christoph Tack06/28/2018 at 11:41 0 comments


    If no sunrise LED is needed, then the electronics could be powered from a 5W USB wall charger.  The sunrise LED will probably need about an extra 10W.


    The common solution is to use a goldcap as back up power supply.  The limitations of goldcaps are:

    • limited energy storage capacity
    • high internal resistance
    • voltage decreases linearly with respect to the current being drawn.

    All of this makes that in case of power outage the goldcap can't be used to sound the alarm to wake the user.

    An alternative approach will be used here.  A cheap alkaline AA-cell will power a MCP1640 boost converter that will step up the voltage to the required 3V3.  As long as the normal power is supplied, the MCP1640 can be disconnected from the AA-cell.


    DCF-communication is susceptible to noise.  Proper filtering is needed to reduce the risk of bad signal reception.


    USB-C connector

    USB-C allows for a maximum power transfer of 20V/5A.  This would be more than enough for this project.

    The advantage of using a USB-C connector would be that a power adapter with USB-C could be used.  These will probably be quite standard in the near future.  At the time of writing (2018) these are still expensive.

    There are more drawbacks: to get the 20V/5A, the device delivering the power and the device sinking the power must communicate with each other using BMC-coding.  This is implemented in the Richtek RT1715 and the TI TUSB32x family.  These devices are still rather expensive.  The SMD packages are small and hard to solder by hand.

    Using this connector would be a typical case of over engineering.  There's no real advantage is using USB-C only for powering a device.  The exception could be for powering an electric razor.  You could use your phone charger to power it.  It saves you one power adapter in your luggage.

    DC jack

    Cheap, readily available, reliable...  The drawback is that there's no guarantee about the voltage level and polarity.  The user can connect whatever (s)he likes.  It's up to the powered device to cope with this.

  • Sunrise LED

    Christoph Tack06/24/2018 at 16:12 0 comments


    A gradually brighter light can mimic the sun rise.  It will allow for gentle wake-up in the morning.  

    Experience with the Philips HF3463 showed me that you shouldn't count on it to get up on time.  I sometimes find myself waking up by the alarm sound and facing the alarm clock in full brightness.  When you're sleeping on your side and the light is behind you, it won't wake you either.

    Needed output power

    A Philips HF3463 sunrise clock uses a Philps 100W 1200lm Softone lamp.  Replacing the bulb with a 60W 700lm still gives enough light.  So our light should also be able to output about 700lm.

    Selection of the lighting source

    • Lumileds Luxeon 3535L & Lumileds Luxeon 3535L HE Plus
      • LEDs cost about €0.42/pce
      • >180lm/W
      • 300mA max, lowest cost per lumen.  Other 180lm/W devices cost about the same but don't allow such high currents.
      • If driven at 200mA, then 7 LEDs would yield about 800lm.
      • "Could" be soldered to custom Al substrate PCB.  
        • AllPCB : 120x20mm or 100x30mm is $17 / 5pcs
        • How hard is it to solder LEDs on a metal substrate?
    • Bridgelux BXEB-L0280Z-50E1000-C-B3
      • 280x24mm, which is too long for the alarm clock
      • 180lm/W
      • 19.5V, 350mA, 1230lm
      • Digikey €3.12/pce (not available)
    • COB LEDs
      • DopDea DPD-9450-0414, ZF-9450-0414
        • Rectangular 94x50mm, 56 LEDs
        • Dimensions can be found here
        • AliExpress Store No.625859 : $2.84
        • Can be cooled with the same heat sink as the WayJun Epistar 10W
        • 12V, 500mA with 100x60x10 heat sink to keep LED temperature below 50°C.  This is still safe to touch without burning your skin.
    • 5050 LED panel
      • Available on AliExpress
      • Designed to replace incandescent light bulbs for car interior lighting.
      • The LEDs seem to be Seoul Semiconductor STW8T16C-Q0S0-HA.
      • The version with 24 LEDs should be bright enough.
      • Disappointing output : 80Lux at 1m, I=500mA, U=17V
    • GU5.3 Base fitting for MR16 lamps
      • 12V lamps
      • typically 500lm, which is rather limited
      • heatsink is part of the lamp
      • AliExpress has many on offer, very cheap
      • In a local store it was hard to find LED lights with a GU5.3 base.  GU10 (230V) is the most common type of lamp.  The best GU5.3 base LED lamp suitable for this application: 
        • Philips
        • 8W
        • 12V AC/DC
        • €11.95 (no kidding)
        • 630lm
    • Wayjun Epistar 10W
      • available on AliExpress from many vendors
      • commonly used in floodlights
      • cheap : $0.29/pce (cheap version 900mA), $0.94 (real version 300mA)
        • A sample of each has been ordered.  I received both but don't know which is which.  I asked the seller and they replied that the "heavier" one is the real one.  The "real" one is indeed about 4g heavier.  
        • They were both announced as warm white, but the "real" one is cold white.
        • The warm white one has a terrible thermal efficiency.  Without heat sink, the current needs to be lower than 100mA, or the LED will run too hot (>70°).
        • The light output of the warm white one is disappointing too.
        • The cold white LED performs a little better, but it's still disappointing.  Too much of the power is lost in heat.  These LEDs can't be used.
      • AliExpress "specs"
        • limited efficiency : 58lm/W (worst case for the cheap version)
        • 11V, 1050mA, 675lm
      • heat sink needed
    • Backlight panel
      • expensive: 100x100mm = €3.84
      • limited light output
    • 220V light with dimmer
      • requires 220V, which could be dangerous
      • consumes a lot of power because of the inefficient lamps
    • NeoPixel ring
      • No need for color changing the light
    • Controlling the...
    Read more »

  • Inspirational clocks

    Christoph Tack05/10/2018 at 20:30 0 comments

    LED animations are nice, but they shouldn't stand in the way of functionality.  The DOTKLOK has very long time transition animations.  This will get annoying real soon.

    Some of the clocks show the time up to second resolution.  For a bed side alarm clock, I don't see a point in doing that.  Besides, how accurate is the clock anyway?  If the clock is not regularly synced to some time source, the shown seconds will be incorrect.  Second resolution is useful in timers (for cooking etc.), but an alarm clock is not a timer.

    O-Led Morphing clock

    Nice animations


    Harifun's Morphing Digital Clock

    Nice animation, (too) big LED array, too bright, blue color will keep you awake

    Harifun's Morphing Digital Clock

    Craig Bonsignore's Open Clock Project

    Nice clock, but without a manual, you can't properly operate it.  Sometimes digits are green and sometimes red.

    Craig Bonsignore's Open Clock Project, also on

    Xronos Clock

    Xronos Clock
    The idea of the arcade buttons is good, but the menu navigation is quite unusual.  The black button cycles through the menu items of the top hierarchy level.  The red button is used to go from top hierarchy to the level second level.  Then it cycles through the menu items of that second level.  The white button finally is used to change user settings.  As there are only three buttons, you can only cycle in one direction through the items.  For setting the year or the minutes of the hour, that's quite annoying.  A fourth button would have made menu navigation a lot more intuitive: up, down, select & back.

    See how long it takes and how many key presses are needed to set it all up?

    Nice housing

    Matrix Clock

    Nice animations

    Matrix Clock (technical data can be downloaded here)


    Nice animations


    Alpha Clock Five

    • Simple housing
    • Expensive LED display.
    • Acrylic housing (laser cut)

    Alpha Clock Five

    3-Way Display Alarm with 2.2" TFT

    • Has a brightness setting for day, night and allows setting brightness level for day/night transition.
    • It's personal taste, but :
      • I dislike the use of a different color for each digit.
      • Why design & 3D-print a RECTANGULAR housing?  Choose a COTS-housing, design your electronics to fit that housing, make cutouts in the housing where needed.

View all 5 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates