[Sprite] needs an alarm clock to wake up in the morning, and although his phone has an infinitely programmable alarm clock, his ancient Phillips AJ-3040 has never failed him. It’s served him well for 15 years, and there’s no reason to throw it out. Upgrading it was the only way, with OLED displays and Linux systems inside this cheap box of consumer electronics.
After opening up the radio, [Sprite] found two boards. The first was the radio PCB, and the existing board could be slightly modified with a switch to input another audio source. The clock PCB was built around an old chip that used mains frequency as the time base. This was torn out of the enclosure along with the old multiplexed LCD.
A new display and brain for the clock was needed, and [Sprite] reached into his parts drawer and pulled out an old 288×48 pixel OLED display. When shining though a bit of translucent red plastic, it’s can be a reasonable facsimile of the old LEDs. The brains of the clock would be a Carambola Linux module. After writing a kernel module for the OLED, [Sprite] had a fully functional Linux computer that would fit inside a clock radio.
After having a board fabbed with the power supplies, I2C expanders, USB stereo DAC, and SPI port for the OLED, [Sprite] had a clock radio that booted Linux on an OLED screen. In the video below, [Sprite] walks through the functions of the clock, including setting one of the many alarms, streaming audio from the Internet, and changing the font of the display. There’s also a web UI for the clock that allows alarms to be set remotely – from a phone, even, if [Sprite] is so inclined.
And now you know why [Sprite] is a judge for The Hackaday Prize.
Speaking of AC frequency driven clocks, I recently did an experiment to test the long term stability of AC line frequency. While the grid is externally disciplined to maintain a long term average that’s the correct number of cycles in a day, over the *course* of a day, it can be as much as 5-10 seconds off – several hundred cycles drift one way or the other.
To me the solution here is to keep your own time and then make adjustments based on 24-hours of frequency data. Tuning fork clock crystals aren’t all that accurate, but they should be able to keep much closer during on day than your measured deviations.
“his ancient Phillips AJ-3040 has never failed him. It’s served him well for 15 years, and there’s no reason to throw it out.”
…I can certainly see the problem there.
The end product is quite nice. It seems like there are a lot of OpenWRT kits available these days.
I wonder how hard it would be to add RDS to the radio portion so that you can display station data/tracks
Should be doable. Just whack a SAA6588 on the i2c bus and feed it the FM output: that chip even has Linux-drivers in the kernel. Hmm, maybe I should try that.
Ooh, I would like to see that. Fun!
(what is RDS: http://en.wikipedia.org/wiki/Radio_Data_System)
Just for maximum over kill you could add this.
https://www.sparkfun.com/products/11571
Always have the correct time and have it automatically set your timezone as well.
I wonder if that would work correctly, if the clock radio was on the nightstand…
I would test it by putting my phone in the desired spot and checking if it can pick up anything.
Nice, I have a similar radio here..