Cheap and Easy MP3 Shield for Arduino

 by dresch
Featured
ATTACHEDARDUINO.jpg
TOPBOTTOM.jpg

This is a follow up to an earlier Instructable for attaching the guts of a cheap clip MP3 player to an Arduino.

http://www.instructables.com/id/MP3-Interface-for-Arduino-Cheap-and-Easy/

The previous Instuctable showed how to use the Arduino to control all of the functions of the MP3 player: volume increase and decrease, next and previous MP3 file, play or pause. The previous Instructable also showed how to disassemble these little clip players and salvage the cool parts within.


This Instructable makes the attaching the MP3 player to the Arduino more straight forward and a lot cleaner. In this installment, we will make a single sided Arduino shield. (You can use this same process for your other Arduino projects.) If you are into electronics and like prototyping, being able to fab your own PCB can be a great addition to the personal tool belt.

So why do this? Why attach an MP3 player to an Arduino? Think about responsive talking toys (how about a screaming/moaning version of Operation?), interactive dioramas, museum touch-and-explain displays...

PLEASE SEE THE LAST STEP FOR SOME FOLLOW-ON INFORMATION CONCERNING THE LC2093-B.
 
Remove these adsRemove these ads by Signing Up

Step 1: Design the Board

SCHEMATIC.png
BOARD_DESIGN.png
There are a limited number of connections that we need to make between the MP3 player and the Arduino. These connections are:
1. 3.3V from the Arduino to power the MP3
2. Ground. So there is a common ground between the two devices.
3. Vol- on the MP3 attaches to pin 8 on the Arduino.
4. Vol+ on the MP3 attaches to pin 9 on the Arduino.
5. PLAY/PAUSE on the MP3 attaches to pin 10 on the Arduino.
6. Pins 6 and 7 of the Arduino are use to control a 74HC244 tristate driver to allow NEXT and PREV selection of MP3 files.

(Note, the comments on the previous Instructable suggested that the analog switches in that design be replaced with some more universally available part. I think the 74HC244 takes care of that: it is cheap, universally availble thru electronics distributors, handles both selections in one device and handles the 5V Arduino to 3.3V MP3 conversion.
See the previous Instructable for the explanation of how the design works...)

I use EagleCad. Because of the screwball spacing of the Arduino connector, I just start with the Arduino standard shield design and modify to suit my application. You can find a standard Eagle shield design at:

http://arduino.cc/en/Main/ArduinoProtoShield

Attached are my files.
SG1Oniell says: Apr 27, 2012. 8:20 PM
Question, would this be suitable for a custom lightsaber perhaps? If there were a way to shrink its size to be much thinner, but longer it would be perfect to fit into the hilt.
dresch (author) in reply to SG1OniellApr 28, 2012. 6:09 AM
Got it, you probably want to use an Arduino to control light sequencing and other things (beside talking to the MP3). Have you ever used the skinny version Arduinos like the RBB board from Mordern Devices:
http://shop.moderndevice.com/products/rbbb-kit
or Solarbotics Arduweeny
http://www.solarbotics.com/product/kardw/
http://www.solarbotics.com/product/18950/
or Teensy
http://www.pjrc.com/teensy/
Or the Minis... Lots of small form factor Arduinos out there. You could just breadboard with one of those.
SG1Oniell in reply to dreschApr 28, 2012. 9:47 AM
I've never even used arduino before, but it was the lowest cost alternative to the $150+ soundboards and led drivers. I do have some experience programming in several languages and working with a few different micro controllers, so I'm fairly confident I should be able to make it work. These small boards, are they just comparable to the standard arduino platform, just smaller? Or are they an actual sound board? The goal is to end up with a cheap, open-source lightsaber driver for people like myself who can't afford some of these really nice, but really expensive boards.
Ugifer says: Feb 9, 2012. 2:43 AM
Interesting analysis regarding the datasheet.

Does the VS1000 datasheet have information on the IIC interface? Our LC2093 might well retain the same functions, or at least the same data format....

If we knew how to make it respond then getting an Ardu' to try all 127 I2C addresses until it received a response would not be too difficult!

I continue to await my shipment from HongKong!

PS nice shield. I'm not really familiar with octal buffer chips. Any clues the theory of how you make this setup work?

dresch (author) in reply to UgiferFeb 9, 2012. 5:19 AM
Two data sheets, one for the VS1000, the other for the VS1003:

http://www.vlsi.fi/fileadmin/app_notes/vlsi/guide_vs1000.pdf
http://www.vlsi.fi/fileadmin/datasheets/vlsi/vs1003.pdf

VLSI's documentation is very extensive. Poke around their website if you get a chance. If I get a chance I will take a look at the I2C also... it has been a number of years since I used I2C though, so you are probably way ahead of my re-learning curve.

I used the 74HC244 to do two things, provide the 5V to 3.3V conversion and act as a one-way switch. If either section of the 244 is in tri-state(high impedance mode), the outputs are just very high resistance. The high impedance mode is selected by putting the controlling Arduino pins in INPUT mode. That allows the two pull-up resistors to bring the 244 controls to 3.3V.
To switch either section of the 244 into conducting mode, the Arduino pins are pulled low and made to be OUTPUT. This turns the 244 from high impedance mode to conducting mode.
Ugifer in reply to dreschApr 18, 2012. 6:31 AM
I finally got my shipment of clip players through - they were dead cheap but have taken something like 4 months to arrive!

Sadly, although they look identical to yours, the ones I have do not have the same chip. They have a 48-pin blob of epoxy! Not too likely to find a datasheet for that....

None of the controls go to ground - you can trace the connections back to 6 pins of the "blob" and the controls work from combinations of these - I reckon your buffer chip approach should work fine but it will need a little tweaking.

Tantilisingly, there are RX and TX pins marked on the board that trace back to the blob, but I just can't get it to talk to me! I've tried various baud rates but I'm not even getting noise through. Ho Hum. It would have been nice.

dresch (author) in reply to UgiferApr 18, 2012. 8:36 AM
If you can get me your mailing address I will ship you a functioning board... my direct email:
dreschel@verizon.net
Sorry you had to wait so long to try this out. (I really only got involved with this to help one of my nephews with a senior design project.)
Ugifer in reply to dreschApr 18, 2012. 2:10 PM
That's really kind of you but I'm fine with the ones I have - I bought four and I'm only really messing about with them. I just thought it would be great if I could talk to them over serial because you could do anything that way with only 2 wires.
kentso says: Feb 20, 2012. 6:58 PM
Thanks for the update to the older project. I was going to post, asking about i2c updates, but this is great. Any chance you could offer etched boards for sale ?

I got my player from eBay last week, but I haven't gotten it to work yet. When I plug it into any of my Macs they say that it is drawing too much power from the USB port. Not a big deal. It uses a chip bonded directly to the PCB, ie. not a discrete IC btw, but the other side is identical to the above pictures.
dresch (author) in reply to kentsoFeb 26, 2012. 7:50 PM
On the last step of this Instructable, I added an EagleCad board file, double sided, with through holes. This board supports both the 74HC244 circuit or the analog switch circuit. (I worried since your player did not have the LC2093, you might need to use the analog switch version of the circuit.) There are some notes on the board in the last step also. GOOD LUCK!
kentso in reply to dreschFeb 29, 2012. 7:11 PM
Thanks for the files. I have installed Eagle and will play around with it. It'll be a bit of a pain to source a single surface mount hc244 and the other components not to mention the pcb but I'll see what I can do.

Another avenue I'm pursuing atm. is to use my Ethernet shield to send a wake on lan packet to the Mac to wake it in the morning, and then have it set to play something in iTunes with a script. I have speakers hooked up to Airport Express devices throughout the house so it can route the music to the bedroom. Once I have results from either of the two methods I'll post them.

dresch (author) in reply to kentsoFeb 20, 2012. 7:50 PM
I have seen photos of the ones with the epoxy bonded die (the guy who did the Instructable about these clip players before me had one I believe). It will be interesting to see if this variety works the same way. Please post feedback when you have had a chance to work with it.
I don't plan on selling the PCB BUT I will post a set of Eagle files for a two layer thru hole version that you will be able to submit directly to Dorkbot PCB.
http://dorkbotpdx.org/wiki/pcb_order
Dorkbot is fantastically cheap and has phenomenal quality. You will have to wait a week or two but you won't do better (I recently had 3 small boards from them for $8 total including shipping!)
Give me a day or two.
Cecilias says: Feb 20, 2012. 9:47 AM
What is actually an MP3 Shield and what is Arduino? Is it something to download songs?
dresch (author) in reply to CeciliasFeb 20, 2012. 7:40 PM
See:
Arduino:
http://www.arduino.cc/
Arduino Shield:
http://arduino.cc/en/Main/ArduinoShields

Pro

Get More Out of Instructables

Already have an Account?

close

PDF Downloads
As a Pro member, you will gain access to download any Instructable in the PDF format. You also have the ability to customize your PDF download.

Upgrade to Pro today!