Instructables
Picture of Magic Music Table No menus, no buttons
NOTE:
This instructable is now slightly old and a better machine has been made with lower cost parts and much better software that automatically allows you to "pair" new cards with new tracks as they are added to the iPod playlist.

iPod playback track selection simply by putting RFID "bricks" on a table.


- An iPod Touch controlled by Arduino via the serial protocol intended for use by docking stations and other peripherals.
- RFID (Radio Frequency Identification) cards are embedded in small plastic blocks with album cover art on the face of each block.
- Advanced serial mode is used, giving 2-way communication between Arduino and iPod and ability to select individual tracks by number.
- All built into a small wooden table.
- Place an RFID "block" in the centre of the table and the selected album plays automatically, no conventional controls or menus at all.

Why?
I was trying to make a music player for a disabled child who is unable to load and operate a CD player or negotiate the small buttons and menus of mp3 players. Original plan was to make a basic big-button mp3 player with just forward/back buttons and maybe 100 songs on it. I then found this website by David Findlay which documents his experiments in acquiring control of an iPod via its serial connection: http://davidfindlay.org/weblog/files/tag-ipod.php
Before going further I must say David has helped me a lot with this, completely rewriting the code after seeing my clumsy attempts at merging RFID reader code with his Advanced Remote serial code.
There are several serial protocols which the iPod can understand. The big advantage of the "Advanced" mode is that instead of just giving you virtual forward/back, volume buttons and so on, it allows you to select tracks from a playlist by their number.
- Therefore the Arduino can select the first track on an album and the playlist will start playing from that point onwards.
- Therefore I can use an RFID card, one for each album in the iPod playlist, to "tell" the iPod the track number to start playing from.
- Therefore it should work, so I had a go at building it.

Who might use it?
The child I made it for has it playing all day long, so it has been a big success. It might also benefit anyone with impaired vision, hand tremor, poor dexterity, the old and also the very young. The RFID blocks could even have Braille titles on them potentially. Also good for total technophobes I suppose.

Shopping list
1) Arduino Mega (the multiple serial ports are quite handy). Good news is you can use the cheaper one if you like - the 1280
http://arduino.cc/en/Main/ArduinoBoardMega Approx $40 for a Mega 1280 clone
2) Parallax Serial RFID reader. http://www.parallax.com/tabid/768/ProductID/114/Default.aspx $39.99
3) A serial 4 x 20 LCD display (optional), shows you which album is playing. Example: http://www.sparkfun.com/products/9568 $29.95
4) A PodGizmo Breakout board. This is a 30 pin plug for the iPod with solder pads brought out on a board for each pin. http://www.sparkfun.com/products/8295 $14.95
5) Sparkfun logic level converter; Arduino uses 5V for everything, iPod uses 3.3V so this does the conversion for serial communication lines. http://www.sparkfun.com/products/8745 $1.95
6) RFID cards. One for each of your albums (or even one per song if you prefer). Can get them on well known auction site in bulk. Make sure you have correct type - the EM4100 family. About $1 - $1.50 each.
7) I used cheap plastic business card holders to contain each RFID card, album cover label and filler cardboard to convert the RFID cards into small tough "blocks" suitable for small hands. Again available in bulk on well known auction website. Approx $1 for two.
8) A 500kOhm resistor
9) A push to make button (used as Arduino reset button).
10) Power supply for Arduino (Wall-wart). Approx $10.


NOTE: Since above video was made, software has been improved. You can leave the iPod connected all the time, just turn iPod on, turn on the Arduino and it will work.
 
Remove these adsRemove these ads by Signing Up
jesmor32 years ago
Quick question before I start! :) Could I use an Uno for this? Did you use the Mega for the power or for the available pins?
XenonJohn (author)  jesmor32 years ago
Used Mega as it has several hard wired serial pins.

Could probably use an Uno and Softserial
jesmor32 years ago
Oh, one more question: The RFID Reader takes kind of a long time to read the bricks. Is this the limit of the Reader itself, or the code? (or on purpose?) If I bought a different, possibly faster, Reader could it read the tags faster? Like this one?

https://www.adafruit.com/products/364
XenonJohn (author)  jesmor32 years ago
It is the code. Can set the reader to "look" more frequently for a new card if you want to.
monkeys982 years ago
you should have some bricks in the shape of volume bars for volume control.
KcPower2 years ago
how is the LCD display connected?
XenonJohn (author)  KcPower2 years ago
Diagram on page 11. Bottom left corner is the (back) of the LCD display.

It is a serial-LCD display which means you only need 4 wires, 5V power, Ground and transmit/receive.

John
Grissini2 years ago
I tried to download this and it just downloads as at .tmp file than I don't know how to open. Could you be able to post this as the full code or just the example in step 31 that appears to be empty. I have this RFID and all the code I can find doesn't identify the card very descriptively. One example simple puts it out as X and O. Any help would be appreciated.
XenonJohn (author)  Grissini2 years ago
Hi Grissini,

Whenever I try to attach an Arduino sketch .pde file to an Instructable there is always a problem. Has always been like that.
I have attached it as a text only file now as well. If you can download that, paste it into an empty new arduino sketch, compile and save, it should then work OK.

I have improved the code very recently to include a setup mode where it "self learns" which RFID tags go with which position in playlist and stores the data in the EEPROM, i.e. even when the power is off.

However, since I cannot edit any of the text in the Instructables editor at the moment apart from the front page, a problem others contributors are also having, that will have to wait until the text editor is back working properly.
For now I have attached the original code.

My code for reading the RFID was based on examples in the Arduino playground here:
http://www.arduino.cc/playground/Learning/PRFID

There is a good code example there you can use to just test your reader is working OK before you carry on. Hope this helps.

Best wishes

John
Thx John. I really appreciate it. It came through great.
XenonJohn (author) 3 years ago
Thanks.
I thought I would use the knowledge gained from all my other strange projects to actually make something useful in our home!
Grissini3 years ago
Killer Idea. Awesome execution. Great write-up. A Fantastic Instructable. Thx.