This is an Arduino based iPod hack audio project that allows you to select tracks for playback from an attached iPod Touch simply by placing cards on flat upper surface of the machine:
The cards can be placed in small plastic boxes with a picture of the album cover on one side to make small blocks more suitable for small hands to manipulate. Originally designed for disabled child. Since then people, teachers I know and so on, have been urging me to "do something with it" so this is an easier to set up and use quasi "tablet" version.
Much improved from an older attempt to do this with; lower cost components, more compact housing and in particular better software that allows you to directly add new RFID cards without needing an attached PC as you add more music to the iPod playlist - hence the keypad.
Watch the video and what it does will all become clear.
- 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.
- Place an RFID "block" in the centre of the top surface (or wherever you mount the wireless card reader and the selected album plays automatically, no conventional controls or menus at all.
This video shows it being used with word cards to allow playback of recorded words and phrases from the iPod Touch as communication aid or as an educational device.
This is called "Tangible computing" and allows, for example a disabled child who cannot manipulate small buttons / touchscreens on an MP3 player or use a CD player to select tracks or albums for themselves.
Also gives the user the ability to physically shuffle through a pile of cards to choose the one they want, rather like the experience of sorting through CD's or vinyl albums in case of older readers. It is all about giving control and choice back to the child.
I built a cruder version of this for my daughter over a year ago and she still uses it daily. This one is a lot more practical in terms of how you set it up.
How does it work?
The cards all have an individual unique code number from the factory so when "paired" with a certain track in the iPod playlist of songs, it will always select that track when placed on the top surface of the device. The cards, known as RFID cards, are read wirelessly by a reader hidden inside the machine.
The cards can be placed in small plastic blocks with a picture on the outside as I tend to do, or soft toys, or anything your imagination can come up with.
The idea with this machine was something like a thick iPad that would be portable and could be placed on a table.
- It allows you to go into a "setup" mode where you can pair new blank RFID cards with songs in the playlist. The Arduino remembers this pairing the next time it is switched on as the details are retained in a portion of the memory called EEPROM.
- This means instead of me adding all the track info to the Arduino code using a computer as I did before, this time you can add more music and more cards to select the tracks, as and when you want to without ever needing an attached computer. It is configured to remember up to 500 cards.
- The device will play the song you select with the RFID card, and then every song after that in the playlist. Therefore you can set each card to select the first track of an album, or if you prefer, just individual tracks.
- If each mp3 file in the playlist is a recorded word or phrase for example, it could also be used as a communication system or as a teaching aid with the RFID tags inside each of a set of word/picture cards.
NOTE: I live in the United Kingdom but for this parts list I have quoted items from US websites.
Arduino Mega 1280: $19.99 (same price as an Uno) Well known online auction site.
ID-12 RFID Reader: $29.95 from Sparkfun. https://www.sparkfun.com/products/8419
Breakout board for ID-12 RFID reader: $0.95 from Sparkfun. https://www.sparkfun.com/products/8423
Logic Level Converter: $1.95 from Sparkfun. https://www.sparkfun.com/products/8745
20 x 4 black on green LCD display: $17.95 from Sparkfun. https://www.sparkfun.com/products/256
PodBreakout plug/board: $14.95 from Sparkfun. https://www.sparkfun.com/products/8295
Membrane keypad: $3.95 from Adafruit. http://www.adafruit.com/products/419
Double 10K potentiometer (volume control): $2.95 on well known online auction site.
Single 10K potentiometer (LCD contrast control): $1.00 on well known online auction site.
Single push to make button switch (reset button): $1.00 on well known online auction site.
Stereo headphone socket, panel mount: Approx $2.50
Power supply for Arduino: Suggest 7.5V 1000mA (the 300mA ones sometimes sold for Arduinos are not enough).
Example: AC 100V-240V Converter Adapter DC 7.5V 1A Power Supply EU plug DC 5.5mm × 2.1mm: Approx $5.00
N.B. The RFID allegedly uses "a lot of power" when it is actually in "read" mode. Not sure how much this is but since I am supplying the backlight of my LCD display as well as my RFID reader with 5V power from the on-board voltage regulator on the Mega, I thought it would be best to turn the RFID off most of the time, having it "look" for a new RFID reading every few seconds instead. The Arduino runs at 5V and has an on board voltage regulator to keep everything at 5V. It will run with a DC supply of 7-12V. However at 12V it is converting a lot of that to heat, and if I am also consuming a lot of current with my peripherals, that might not be a great idea. I therefore have used a stabilised (i.e. not a really cheap thrift shop unit) 7V power supply with claimed output of up to 1.5Amps. By using a 7V supply I have enough to keep the Arduino regulator happy without generating masses of unwanted heat.
You will also need some resistors:
1 x 500,000 Ohm.
1 x 10 Ohm.
1 x 1000 Ohm (i.e. 1 K Ohm)
Optionally to make iPod charge itself from Arduino, you also need:
2 x 33k Ohm
1 x 47k Ohm
1 x 22k Ohm
This machine is designed to have an iPod attached to it.
I have tested it with an iPod Touch 4 which is a readily available current model and also an older iPodTouch 2
You also need some 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, 125kHz. About $1 each, less if bought 20 or 50 at a time.
Total: Approx $100 (about GBP 67) - remember that you also need RFID cards, an iPod and a set of headphones, (and/or connection cable to a HiFi amplifier if you prefer).
Here is the main parts list with UK suppliers:
Logic level converter:
4 x 20 LCD green:
ID-12 RFID reader:
So, here's how to make one.........................
Step 1: General layout of parts
In the case of these photos, I just acquired a MakerBot 3D printer so was trying to print out a flat chassis to hold all the parts in a neat way. You do not have to do this at all, use any enclosure you want to.
My last machine was a small coffee table with the RFID reader just under the top surface, and a cable with the plug for the iPod hanging beneath so the iPod could be kept in a cupboard underneath.
In this photo I have glued the plug for the iPod into a plastic housing so the iPod can then slot in from the top side like a form of docking port.
I will attach the 3D print files at the end for those who are interested but I will say again, you do not have to arrange the various parts like this, I would just start with a wooden board, make life easier for yourself and spread the parts out.
The heart is an Arduino 1280. This the old version of the Arduino "Mega" and is very low cost now. I use it as it has several serial ports and loads of pins so you do not run out. Also has larger memory than the basic Arduino Uno which means it will remember more "paired" cards even when turned off.
The cards are read by a wireless reader called an ID-12 which is very reasonably priced. This reads the 10 digit unique tag number of the card. The arduino then goes through its memory to see which track of the iPod playlist this card is "paired" with. The Arduino then selects that track for playback. It does that by being connected to the iPod via a special plug called a PodBreakout plug made for hackers of Ipods etc.
The track being played is displayed on the 4 row liquid crystal (LCD) display. This display is also used when going through the setup menu to pair new cards with newly added songs or tracks in the iPod playlist.
The logic level converter is a board that converts data at 5V that the Arduino uses, to the 3V standard that the iPod uses so they can talk to each other without damaging each other.
The LED flashes each time the ID-12 attempts to read the RFID card unique number, i.e. every time it "looks" for a new card to see if it has changed.
There is a volume knob, a headphone socket, and a knob which adjusts the contrast of the LCD display.
Finally there is a reset button that restarts the Arduino when pressed.