Sometimes I Make Things... Jon's corner of the Internet.
 
   
  radIO  
 










radIO - Antique Radio Cabinet turned Oversized Audio Player

On the way to a piercing joint in downtown Rochester, a lovely old Philco radio in the window of a pawn shop caught my eye. I put my face up against the window and admired it like Ralphie oogling the official Red Ryder carbine-action 200-shot model air rifle (with a compass in the stock, and this thing which tells time).

A couple weeks later (with some piss-poor haggling), the old Philco was mine for $81. A few friends and I brought it home and cleaned it up. The original radio can be seen in the top left, and below.


I gutted all of the original (broken) electronics from it, and gave them to a friend to mess with. Below is a shot of the radio wiring...rat's nest!





radIO - Putting it all together

The goal of this month-ish long project was to turn the cabinet into a self-contained audio player. I wanted to provide an interface for selecting and playing albums, artists, songs, and playlists, while both maintaining the original look of the radio, and adding a bit of my personal touch. Originally, I wanted to keep the old faceplate. However, it was cracked and warped, so I purchased a few sheets of brass, and cut out my own faceplate using a Dremel.

The radio only came with three of the original four knobs. However, by purchasing rotary encoders with push button actuators, I effectively had 6 inputs, instead of only three. Here's the part number for the encoders: EN12-HS11AF20

To display information, I purchased a super sketchy LCD from ebay. It was a pain to interface with, since the controller is specified as "HD44780/KS0066/SPLC780D" on the seller's page -- all of which *should* be compatible. However, I quickly found out that the timing of this knock-off LCD did not match any of the data-sheets...so it took some luck to get it working consistently. At least the pinouts were standard...

A shot of the front assembly is below. Note that the flash overpowered the green backlight.

LCD, buttons and faceplate (Main Menu, and the "Now Playing" screen)



A PIC18F4450 is used to control the LCD, and read input from the knobs/pushbuttons. A serial receive interrupt is used to update the LCD display. Normally, I would queue the information since writing to the LCD takes so long (on the order of 10's of milliseconds). However, since the microcontroller doesn't do much, I just went ahead and committed the cardinal sin of having and ISR take a lot longer than it probably should. (Hey, it's the weekend, we're allowed to be lazy then, right?)

The knobs and the push buttons are debounced and polled in software. When a change is detected, a single byte is sent to the PC (we'll get to that next) to denote which input peripheral changed, and what its new state is.

I considered making a PCB... but then I decided to prototype it first. (And then I never got around to making the PCB...)

An old, unused PC (less than 500 MHz, running XUbuntu) runs the show. I figured it'd be easier to write my own application software specifically for this project, rather than trying to write a plugin for a Linux media player. As a result, I wrote a media manger/player in C (and a bit of C++ to interface with Umesh Shankar's WMA TagLib support functionality) using libVLC, SQlite, and TagLib. I whipped up the code in a rush (as I was trying to finish this before classes started), so it's really bloated and poorly designed. If anyone *really* wants to see the application code or firmware, I could either email it or publish it here.

Currently, this is an ongoing project. What's shown in the video (below) is just the basic functionality I got working. Whenever I have some free time, I'd like to add playlist functionality, and make the application code and firmware a bit more robust. (Oh yea, and then there's a mountain of bug fixes...)

One notable feature is alphabetical "jump" scrolling in the artists/albums/songs menu. Instead of manually scrolling through hundreds of artists, you can just skip down to the L's from the K's by turning the left most knob. This is implemented on my Creative Zen, so I thought I'd mimic it.

Lastly, I bought some Logitech speakers, and tossed them in the cabinet. Self-contained audio player...Perfect! Now I just need to fix the tags in my music library! :P

Check out the video below for a peek of the basic functionality. Note that the only play mode implemented currently is "shuffle."