Hardware

Creating a Radio Part 3 – Computer and Software

This is article 3 of the Building a Radio Series, before we looked at the general project overview, along with how the Arduino was hooked up. Now we will be looking at the PC hardware along with the code being used to do all the music.

I was afraid that this project world have one critical weakness, that the pc running the show would end up taking a while to start up; making the whole thing slow and by the time it came up you didn’t want to use it. I ended up getting Intel D510MO, but any computer that runs Windows would do. To save myself from having to write my own music player/interface over a music player this project relied on Windows Media Player using C#. This made it really quick and easy to build the DJ software. Mine had 1GB of ram, and an 8GB Kingston SSD (model S100S2/8G), and a Kingston 19-in-1 media card reader. There was a USB hub in there so it could be just 1 USB cable instead of 2.

I have a MSDN account so I was able to get Windows XP really easily, it theoretically could have been Windows 2000 or newer, but I was worried about drivers for Windows 2000, so I went with the next lightest OS. I went through and cleaned it out a lot, disabling parts of Windows I didn’t need; there are a lot of guides online to speed up Windows XP. Just make sure Windows Media Player is on whatever OS you use, I was developing on Windows 7 Enterprise and it didn’t have it. I freaked out will I realized I just had to go to Add/Remove Programs -> Windows Components and add it. As mentioned in the earlier article, the speaker in the unit went to a USB sound card. The USB sound card ended up being a good amount louder than the built-in sound card. The code adjusts the Media Player sound volume, not Windows volume.

The software is commented, so if you are interested in depth, you may want to scroll down and download that. But a quick overview, the program scans for removable cards, and then it scans them for the folder structure it uses. Then if there is only one card that meets these criteria mounts it as its source. Then it goes to the com port that is saved in a settings file in the same location of the program. If the interface is used to change the interface it should change it in the settings file. One problem is I was under the clock in this project, thus my usual extensive testing wasn’t done; it is possible bugs exist, but I think I found all the big ones.

A thread is spawned off to get input from the knobs, this is a separate thread so it can change settings while other things are going on. It reads the input from the Arduino, and makes adjustments when needed. In the boot process it gets the channel number so that the radio knows where to build a playlist out of. It gets the songs, mixes them up then adds them to a list, it then grabs all the “spots” mixes them up and puts one in every 4 songs. After all this 30 minutes of static is put in; in theory once that starts there is a 30 minute timer to shutdown.

That is the basic view of the software; the code is available below, with comment that anyone can have fun with. Any questions can be emailed and/or posted on the blog. This wraps up the Building a Radio series, unless I think of anything else to put up about it. If anyone has a idea of another project shoot me a email.

(LINKS)

https://github.com/daberkow/RadioManager

Creating a Radio Part 1 – General Hardware

The project I have been working on for the last two months was a radio for my parents anniversary; but not a normal radio, I got a replica of a 1934 Thomas Radio (Collector’s Edition), gutted it, then built my own system to put music on. I figured for fun I will write a few posts about it, and anyone who wanted to try to reproduce it again would have ample data.

Radio Picture

This is the front of the final radio

To start let us look at the model radio I started with, most will work, just with varying degrees of work put into them. The closet website I can find to the version I have is here, http://tweakeddesigns.blogspot.com/2011/07/reproduction-of-1934-thomas-radio.html. I think this is the exact radio, but with a slightly different wood stain on it. First I got that radio, then ripped all the parts out of it, except for the two outer front knobs (potentiometers). It turned out that the middle knob was just a stick with a string around it that went to a sensor and the channel dial. So the whole dial moved then this string was twisted, but that was only held up by the old internal electronics. Since that was a very… janky, I removed that, and replaced it with a separate potentiometer and a servo to change the dial hands. I made a awesomely horrible 3D render of how this looked, with all the original parts removed, and a servo added. I will do another post all about the Arduino and how that was hooked up.

3D back of radio

Here is a bad 3d model of the empty radio in the back

Now for the best of prototyping, I used cardboard to support all this, cardboard is your friend for prototyping, except when it catches on fire, then it’s bad. Afterwards, I got these wooden splints from Home Depot, and put them in to reinforce everything, they came in about 14 inches long by 1.5 inches wide by 1/8 inch thick. I secured them with super glue, then screwed the Arduino microcontroller into these supports. Of course with plenty of electrical tape over the wood to shield it all.

One key part of the system is how the music is played. The music is played through a Mini-ITX board that is attached on the back. I needed a power supply for this, so I got a Mini-ITX  case(Antec Mini-ITX Case ISK100) and just removed the power parts. The original plan was to put the pc outside this device, in a normal pc case, but I figured I’d just go for this design. Then I drilled a hole in the side so that I could use the Antec cases external power brick, and just plug it in the side. That had plenty of electrical tape on its supporting splint, along with a plastic shield that the power supply part had under it in the Antec case. I don’t like fire, so I was sure to be careful when handling these power systems; also, this was the only splint that was secured with screws and super glue, I dont want a charged power supply falling. The picture below shows this.

Back of radio

Real radio back

In a simple wiring diagram, we have the Arduino all wired up, post to follow, that goes into the mini-itx board through a USB hub. The USB hub also has a SD card reader, the software and Ardunio goes into the USB hub to make everything easier. The SD card reader is aligned to the side port, where the tape drive used to be, then songs can be updated by taking SD card out and updating the files. Then we have the original speaker in the radio wired into a 3.5mm headphone jack, available at Radio Shack, I’m sorry THE SHACK, and that goes into the audio on jack of the mini-itx board. The power supply cable goes into the Mini-ITX board, along with the SATA SSD. I know that doesn’t explain it well, but I will be writing more articles, one about the wiring and the Arduino wiring; then another about the software running the Ardunio and on the Mini-ITX board.

I’m not great with technical documents, if anyone has any questions feel free to email or even better post a comment.