The idea of a homegrown car radio
Classic car dreams
For such a long time I've wanted to build my own radio system.
Why? The motivation mainly was my car. I love and own a 1972 Volkswagen bay window bus, which I have refurbished over the last decade.
I could write millions of lines about how intense this project was and how it affected my life in ways I could have never foreseen - and maybe I will do so one day - but for now I just want to point out, that I always wanted something little extra for my bus, like a self made radio.
Quirks and requirements
Older cars come with quirks that are not recognized anymore nowadays, like a radio slot that is too narrow for modern units. I could have widened the slot of course, but it would have damaged the beautiful dashboard, and I did not want to do so. Also it would have broken the original look of the car.
Old radio units made by Blaupunkt or Becker look great even from a pure design view. But technologically they haven't aged well.
Nobody wants to listen to their old noisy radio driven by a weak low amplified speaker you can barely hear over your noisy engine. Also it was just AM/FM back then.
So I was looking for the best of both worlds:
- Preserving the classic look and feel of the car
- Transferring the radio into the modern age of audio
- Support for MP3 files
- Support for FM radio
- Support for AUX devices
- USB Support
- LCD screen for information display
- Wifi, Bluetooth, UPNP and Airplay for wireless playback
- WebUI to control radio via mobile phone
- Optionally: GPS and handheld set features
Woah, that's a lot of stuff on your plate there... a little bit of history
Reach for the stars they said, it will be fun they said.
It's true, this project sounds quite ambitious and it actually is. Nobody can tell at this stage, if I will ever acquire all features or if I will finish at all. Yet, I am confident.
In 2007 the idea of building a radio has emerged for the first time. I was still at university and honing my software development skills. I had no clue about electronics at all and also no idea what I have to expect. It was nothing but a tempting dream that I would have loved to see realized for my car. So much about my motivation.
I knew I was not able to build such a project from scratch - also I never had the intention to reinvent the wheel. Radios have been around for decades, so why should I relearn every single piece of signalling theory just to design a decent receiver circuit. Why reinvent USB, MP3 and so on?
No I wanted to focus on what mattered: The integration of modern technology into a 40 year old paradigm.
The compuphase h0420
After some heavy research I have found what seemed a suitable platform to start with audio programming: The compuphase h0420 mp3 board
A complete development board with DAC and MP3 support. Many possibilities to connect other devices and buttons via 32 GPIOs, LCD Interface and Compact Flash card support.
Combined with "PAWN", a C-Like, yet smaller language you got a small audio environment that cared for all your basic needs and easy development.
In the days before the Raspberry Pi era this was great. Easy audio applications very possible real quickly thanks to the flexible library that came with the board.
Being new to embedded programming and listening to music played by your code was so much fun. I was stoked!
Together with the occasional help of an acquainted electrical engineer I dived deeper into radio electronics. The project grew into the right directions. I added a comfortable UI using a 16x2 LCD display full control via buttons. The UI was mainly graphical and followed common design principles for radios with small screens. I already had settings for tone control, station search and save, mode switching for MP3, FM and AUX and overall the radio behaved nicely with cool tunes.
Out of memory
But with growing complexity the board began to show its drawbacks. When I began to implement the FM handling via I2C and a file browser the board began to refuse flashing for a simple reason: Out of memory. Of course, the used atmel didn't have enough program memory for all the features I intended. Even after radical refactoring and inventing a tricky way of dynamic module loading I knew I won't be able to shed enough weight to make the project happen.
All my basic skills got me very far in this project and I was sure to finish it. But in the end the limitations of the PAWN language that didn't support dynamic memory allocation and pointers, set the project to a halt.
Eventually in 2009 I decided to abandon the platform and put the project to sleep. The radio barely seen the day of light, but the dream never died.
Fast forward 2015. 6 years have passed without much progress. Over all these years, I have dreamed fondly of a follow-up.
And this year I finally decided it is time to do so. Why? I don't really know. Maybe it is because I turned 30 this November and it felt like unfinished business? It doesn't really matter as long as I have fun learning something new.
Because one thing is certain: This time I will have to do it differently. But that is a story for another post.