Internet Radio Alarm Clock

Raspberry Pi Zero W powered Alarm Clock that plays Internet Radio URLs at intervals.

Similar projects worth following
A purpose-built alarm clock that plays Internet radio streams to wake me up in the morning. It uses a Raspberry Pi Zero for audio, and an Arduino for LCD and volume control. The case was designed by me, using OpenSCAD.


A custom-built alarm clock that plays Internet Radio streams to wake you up in the morning. With a web interface, so you can select radio stations, set alarm times.

It uses a Raspberry PI Zero as the main "brains" and an Arduino Nano as a co-processor for controlling the LCD and volume control.

On the I2C/I2S bus is also attached a DS1307 realtime clock module, and a Phat DAC audio module to allow audio output.

It uses a cheap audio amplifier and some speakers bought from Jaycar electronics, that sound alright.

The case was designed by myself using OpenSCAD is 3D printed using a friend's 3D printer.


I have had an AM/FM alarm clock in the past, but then moved on to using Internet radio streams, mainly from either a tablet or phone on my bedside table, as that allowed me to chose a lot more radio streams than just what's locally available over the radio, plus better sound quality.

I wanted to keep that functionality, but not have to depend on my phone or tablet to give me the functionality. I don't think you can buy such a device, so I designed and built one!

There have been many custom-built Internet radio devices I've seen on the net, but none that I could find that can be used as a full-featured alarm clock with GUI to allow setting the alarm time and station control.

I like waking up to a radio station as opposed to a beep or noise, as it is a lot more pleasant usually, and I can listen to talk radio for example, or the news, which kind of helps me to wake up comparably to an annoying noise, but without being annoying.

Challenges and Problems

I've had a few challenges.

One was that the Raspberry Pi Zero does not have audio out. And a USB sound card was awkward to install (though possible). So for tidyness and internal elegance, I went for the Pimoroni pHAT DAC. It was a little complex to set up, involving modifying system files. But i got it working.

I also had to use a hardware Real-Time Clock module, as none of the Raspberry Pis have a hardware RTC with battery backup (something which I hope changes in future). That involved adding the RTC to the Pi's I2C bus and more modifying system config files, to let the RTC set the main system clock. Which works pretty well now.

I haven't done a lot of 3D modelling for enclosures and cases before. One tricky part was accommodating screws to hold components and the whole case together. I printed a few test prints of screw hole sizes to fit the screws that I had. I later realised that I could use screw inserts for screw holders. Oh well, the screw holes seem to work OK. Unfortunately, the main screw holes that hold the case bottom and top together are too small, so the case does not hold together properly at the moment. I may be able to drill out the holes to allow screws to go through.

Internet radio stream URLs seem to be becoming more and more rare. Even just my local ABC radio stream page, has replaced their stream URL page to embedded player pages, just before I finished this project! So now I have to go to to look up the old stream URLs. Thank goodness for, but also glad that ABC still lets you connect to their old URL addresses. With apps like TuneIn and others, the standalone URLs are becoming more difficult to find and behind the scenes. But all I need for now is my local ABC stations. But I would like to try other stations eventually.. I'm not sure where to look now! It seems that you have to hunt around..

Vid 20210408 002852-1.m4v

Playing stream from computer

MPEG-4 Video - 12.63 MB - 07/11/2021 at 06:54


View all 8 components

  • Completed Project Video

    Leo Febey07/18/2021 at 07:03 0 comments

    My long-term project, the alarm clock, finally able to demonstrate it, as it is more or less complete!

  • Volume control working (sort of)

    Leo Febey07/11/2021 at 07:00 0 comments

    Just adding an old update.

    I got the volume control knob working.

    The Arduino reads the rotary encoder value, and sends it to the Raspberry PI over I2C bus.

    A little bit troublesome, as it needs to continuously poll for volume, but also has to send commands to the Arduino to display stuff on the screen. So I used Python threading with a queue. So that there are no conflicts.

    I was quite happy when it started working. Although, there is a delay between when I change the volume, and when volume is actually changed. I think there must be some delays in my code. This issue is still not resolved yet.

  • Internet Radio Alarm Clock - Assembled! And Partially Working

    Leo Febey07/28/2020 at 13:12 0 comments

    It's finally (mostly) assembled! Tonight at Hobart Makers, I put the speakers in, and glued in the top volume control knob.

    The speakers went in well. I ordered the extra-long screws from eBay, and they just arrived in time for tonight.  I wasn't quite sure how to attach the volume knob, but I just settled on glue gun glue. It should hold for a fair while. It felt pretty sturdy.

    I also finally added a simple 5Kohm resistor for the LCD, to adjust the contrast. It was at full contrast before, and it didn't look that nice. Now it is much more readable.

    To my amazement, the speakers worked fine! I soldered the wires directly to the Phat DAC board. I also leeched some power from the 5V supply on the Pi. No noise issues, and it worked. Though U have an issue, which is that it seems that there is only one channel showing to the OS. So I only get mono sound (on both speakers) :( I'll have to look into it.

    Next, I now have the electronics enthusiast's least favourite part, programming.. It's ok, I have become a decent programmer over the years. I just need some quiet time with my computer 🕯

    I'm looking forward to getting it working, I will then just have my alarm clock on my bedside table, and I can move my electronics devices to another place, out of reach in my room. Good for getting to sleep quickly. And I will have my own personal hand-made gadget!

View all 3 project logs

Enjoy this project?



RFIDguru wrote 08/11/2023 at 15:55 point

Nice project! Just wondering why you use a RTC instead if an getting the time from an NTP server

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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