Play mp3 from usb flash drive

I need to play mp3 files from usb flash drive and have playback (play/stop/next) from the arduino. I know either mp3 and usb are too much for the Arduino, so I'll have to work with other IC for these tasks... What do you suggest? I looked at VLSI 1005, which is able to decode mp3 and interface with usb, but it's LFGA88 package seems to be a nightmare for a beginner like me to solder

I suggest an MP3 card that plays back from SD cards. There are several here

Otherwise, you need a USB host shield with MAX3241E to be able to access the USB drive, and then control an MP3 decode chip in addition to that.

If you want to use that chip, this company can buy one for you from digikey and install it onto a breakout board. They just did some 8-pin chips for me. You can supply parts yourself also.

Do you have a link to VLSI 1005? I've always thought it would be neat to have a controller that any USB stick could be plugged into and have music played back from.

Unfortunately it must play from usb drive... Things would be a lot easier if it could be a sdcard :P

Regarding MAX3241E, looks like it's for rs232 communication? Can I use that for access the usb drive?

This is the vlsi 1005: Looks like it do both the mp3 decode and usb interface, with a PLUS that it also has a fm tunner, which I do need for this project but was prepared to use another ic for that (like tea 5767), the only downside is that it's package is not hobbyst-friendly.

I might have swapped two digits: MAX3421E.

The VS1005 is quite the chip! Contact proto-advantage about mounting it on an adapter for you. If they don't have an adapter, check for an adapter. At worst, we can design an adapter here, you buy from, and have the part installed by someone like proto-advantage.

25 Euro a chip - pricey!

Is this everything needed to access a USB stick?

USB The USB peripheral handles USB2.0 Full Speed and Hi-Speed harware protocols. Low speed communication is not supported, but is correctly ignored. The USBP pin has a software controllable 1.5k pull-up. A control endpoint (1 IN and 1 OUT) and upto 6 other endpoints (3 IN and 3 OUT) can be used simultaneously. Bulk, interrupt, and isochronous transfer modes are selectable for each endpoint. USB receive from USB host to device (OUT) uses a 2 KiB buffer, thus allowing very high transfer speeds. USB transmit from device to USB host (IN) also uses a 2 KiB buffer and allows all IN endpoints to be ready to transmit simultaneously. Double-buffering is also possible, but not usually required. The firmware uses the USB peripheral to implement both USB Mass Storage Device and USB Audio Device. Which device is activated depends on the state of GPIO0_6 when the USB connection is detected. If GPIO0_6 has a pull-up resistor, VS1005g appears as an USB Audio Device. If GPIO0_6 has a pull-down resistor, VS1005g appears as an USB Mass Storage Device

11.12.3 USB Host USB module can be configured as an USB host. In USB host mode the 1.5kOhm pull up resistor in D+ pin is replaced with 15kOhm pull down resistors in in both the D+ and D- pins. USB host is capable of:  Send Start of Frame (SOF) packets  Send SETUP, IN and OUT packets  Schedule transfers within 1ms frames  Signal USB bus reset  Provide USB power management

This should catch your eye:

VS1005g Firmware Status
VS1005g has hardware support for a great number of different devices and interfaces. However, supporting all these devices and interfaces in a consistent way so that users can combine functionality of them at will does require some time.

This page shows the current VS1005g firmware’s and applications’ development status for VSOS, as well as a simple roadmap for future development.

The page is divided into three sections:

•Existing: This code exists and has been released already
•Next in Queue: Development is already going on and these will be released soon
•To Do: Still need lots of work to be viable code
Note that these priorities are not cast in stone. If you have a viable project that would require reprioritizing, please contact sales.


Support for these devices and signal processing algorithms already exist and has been released.

•Decoders: MP3, WAV PCM
•Encoders: MP3 (early demo version available)
•Analog audio in/out driver
•S/PDIF and I2S digital audio output drivers
•Native hardware SD Card driver
•Full-Speed USB host (experimental)
•LCD driver
•Resistive LCD touch interface
•Multithread resource support
•Boot from internal flash, external SPI flash

Next In Queue
These pieces of firmware are already well under development and will be released soon.

•Dynamically linked libraries support (allows loading and unloading of codecs)
•Decoders: Ogg Vorbis
•Encoders: Ogg Vorbis, WAV PCM
•Audio driver digital inputs
•10BaseT Ethernet (driver exists but needs debugging)
•FM tuner example
•RDS decoding for FM tuner
•JTAG debug support
•Volume Control

To Do
These pieces of firmware still need lots of work: they are very complex, or have not yet been written or ported to VS1005.

•Codecs (all codecs exist as VSDSP code but not ported for VS1005 yet)
•Decoders: WMA, AAC, HE-AAC, FLAC
•Hi-Speed USB device / host <<<<<<<<<<<<<<<<<<<<<<
•I2Sdigital audio receiver
•S/PDIF digital audio receiver
•Nand flash
•SAR A/D converters
•Secondary audio path (using DAOSET registers)
•Dynamically linked libraries support (allows loading and unloading of codecs)
•RTC operations
•Boot from nand flash
•Software protection
•Etc etc etc

This topic caught my eye as I want to do something similar with the VS1000 module*.

It says:

Default firmware has four functionalities: usbmass - makes SPI flash memory visible as USB Mass Storage when USB is connected to PC spiplayer - plays music files from SPI FLASH sdplayer - plays music (Ogg Vorbis or WAV) from SD card or makes SD card visible as USB Mass Storage when USB is connected to PC sdupdate program - updates firmware or content of the SPI FLASH from the SD card

Now, before you get too excited, like I did, I checked and that doesn't mean you can play music from a USB stick. It means you can mount the device to appear as a USB device, then copy music onto it, then unmount USB and play the music. Besides, it doesn't have a full size USB socket anyway.

But I thought, there must be some easy combination of USB breakout board, Arduino and VS1000 module that will allow something along the following lines:

Insert USB with audio tracks on. Breakout board detects stick and signals arduino which then switches VS1000 into mass storage mode and initiates a copy/overwrite of everything from the stick to the microSD (assuming enough space of course). When finished, Arduino signals VS1000 to switch back to playback mode, and plays track 1.

So, I've been looking around at USB breakout boards. For example:

The price is right, all under £10, but as you'd expect from "that place", documentation and support is zero, and by the looks of it, the connections are going to require pretty much all the Arduino pins even if I could find some documentation.

EDIT: Just found this - $25, or $20 for the Pro Mini version. Sadly only 3.3v available though. Might be worth checking out!

I'd be willing to spend a little more if there was some kind of USB host to SPI breakout/converter thing, but hours on ebay and electronics forums and other places really hasn't turned up anything that seems suitable. Any ideas?

*Yes, I know it's ogg-only, and it works out at €20+tax and shipping each for 1 (not worth it) or €5+Tax and shipping for 100. Which is then very good value, but I'm not quite that enthusiastic to need 100, but I got given 2, so why not use 'em?!