Creative Commons images are CC BY-NC-SA 3.0


added to your
shopping cart

23 available 23 in stock
49.95 1+ units
44.96 10+ units
39.96 100+ units

Description: The LilyPad MP3 Player is your all-in-one audio solution, containing an Arduino-compatible microcontroller, MP3 (and many other formats) audio decoder chip, micro-SD card socket, and a stereo audio amplifier. Part of the Lilypad E-textiles line, this board can be used to give your fabric creations the gift of music, or any other sounds you can put on a micro-SD card.

It can be powered by a 3.7V Lipo battery (charger built-in!), or an external 3.5-6V source. Off the shelf, it will play specific audio files when any of its five trigger inputs are grounded, or you can solder in an RGB rotary encoder (not included) and load new firmware (included in the link below) to add a user interface for track selection and volume control!

The board is compatible with sketches written for the MP3 Player Shield. Our example code uses Bill Porter's MP3 Player library, which makes writing new code very easy. All you need to do is add a microSD card and some speakers, and you're ready to rock.

Note: A portion of this sale is given back to Dr. Leah Buechley for continued development and education of e-textiles and also to Arduino LLC to help fund continued development of new tools and new IDE features.


  • ATmega 328p microprocessor with Arduino bootloader (Pro 3.3V/8MHz)
  • VS1053B MP3 (and many other formats) decoder chip
  • TPA2016D2 stereo amplifier
  • MCP73831 3.7V Lipo charger (preset to 500mA, rate can be changed if desired)
  • Headphone jack
  • Five trigger inputs, also usable as analog, serial and I2C ("Wire") connections
  • Load new firmware (or write your own) using the free Arduino IDE
  • 5V FTDI basic breakout for battery recharging and reprogramming
  • Header for optional RGB rotary encoder (not included, requires soldering)


Comments 56 comments

  • I don’t think this was answered, but if it was and I missed it, I’m sorry. The FTDI needs to be 5v. Does it only have to be 5v out or does the signal logic level also have to be 5v? If this is a really dumb question, I’m sorry. I’m really new.

    • The logic signals should be 5V as well (there are voltage dividers on the board to bring them down to the 3.3V the processor uses). The reason we specify a 5V FTDI is to allow Lipo battery charging, which could not be done with a 3.3V FTDI.

  • The schematic for the pcb shows “left” and “right” being connected to pin A6 and A7 on the ATMega328. Are these the analog audio out pins being fed into ADC’s on the mcu? Can anyone explain the purpose of this? Could I just cut these traces to utilize the pins for something else?

    • Since those pins were free (and can only be used for analog inputs due to the internals of the ATmega), we ran the audio signals to them with the idea that one could play with volume-meter effects in the software. I tried it and found that between the ATmega being relatively slow compared to audio waveforms, and busy much of the time transferring data, that my results were limited. They are unused in the demo software and not required for normal operation of the board, but they’re available if you want to play with them, and maybe someone can come up with some neat effects. As it’s your board (and open-source!) you can hack on it to your heart’s content.

  • Anyone have experience getting this to work with neopixels and the neopixel library?

    Ok so I noticed 2 more things different.

    When I digitalWrite(pin, LOW) on lilypad trig1 the pin goes to about 2.4V and when I digitalWrite(pin, HIGH) the pin goes to 0. On the Flora, it’s the opposite, and the pin voltage is higher too, about 3.4V.

    I guess that explains why it doesn’t work. Um, so now what? Thanks.

    • That’s strange, we’re not seeing that here. When we write trig1 low, we get 0V, and when we write it high, we get 3.3V as you’d expect. Here is the code we’re using:

      #define TRIG1 A0
      void setup()
      void loop()
  • is it possible to connect this to the rn52 breakout ?

    • the schematics show pins 1, 2, and 48 of the vs1053b (mic-left/right inputs) not connected. visual inspection of the lilypad confirms. * is there any mechanical way to tap into these pins?
      * i see there are testing points on the amplifier inputs … could i bring the rn52 in through these and carefully manage to turn off mp3 decoding when there is rn52 activity? would these two signal paths entering in parallel into the amp create problems? * i’ve built a very nice “background sounds” sculpture system that simulates the forest (lilypad mp3, 2000mwh lipo, light sensor, surface transducer, bird recordings, mounted in wooden “bricks”). These would be an ideal hands free platform that i would like to add the rn52 and be able to mediate between self generated background (lilypad’s mp3) and the 2/way hfp or a2dp streaming received by the rn52 from iphone. any suggestions on how to get these two to work together?

      • The traditional (and pretty much only) way of tapping into pins that aren’t broken out is to solder wire-wrap wire directly to the exposed pins on the chip. This takes some skill and magnification, but it’s not impossible.

        But before you do that, I’m not sure that the VS1053 is able to encode (record) and decode (play) at the same time. In other words, I don’t think you can put audio on the mic pins and have it appear simultaneously at the output. (To be fair I haven’t tried to do so, you’ll need to refer heavily to the datasheet to see if it’s possible).

        You might be better off trying to mix the audio output of the VS1053 with the audio coming from the RN52. The LilyPad isn’t really set up for this, but I’d probably take the audio out of the headphone jack (which will cut the audio lines to the amplifier), ground-reference the output from the VS1053 (info here), mix it with the ground-referenced output from the RN52 (google for schematics), and pipe it back to the LilyPad’s amplifier. This still isn’t overly straightforward.

        If you’re willing to reduce your options to audio files that are prerecorded on the SD card (8MB holds a lot of options), you could make a smartphone app that lets you select one of those options, then just send a text command across bluetooth to the LilyPad’s serial port to select different local audio files.

        Good luck, let us know what you come up with (and send pictures!)

  • What is an external power source that could be used with this? I’d like to have it permanently plugged in without worrying about recharging a lipo battery.

  • HELP! There are two of us working with this board and nether of us can get the board to communicate to the Arduino IDE. The board selected is the one listed (Arduino pro etc Atmega 328) the Serial Port selected is the one that comes up when cable is plugged in. The libraries are in the right place. I have just been trying to troubleshoot by changing the trigger file debug section to true to print in the serial window. It mentioned that the board needs an external power source to load code that is there but both of us still get the error message : avrdude: stk500_recv(): programmer is not responding.

    Any help would be amazing!

    • Sorry to hear you’re having problems. First question: are you using a 5V FTDI board? (It was designed to use a 5V FTDI to allow battery charging; a 3.3V FTDI won’t work). Also, as you noted, it should be externally powered and turned on to program it. (An attached Lipo battery is the easiest way). If you’re still having problems, please contact our tech support department, who will be more than happy to help you out.

  • I have an oddball question: If I had multiple LilyPad MP3 units with matching SD cards and triggered them simultaneously, how much “drift” would there be in the playback start time from unit to unit? Would the offset be consistent each time the devices were triggered? And, if the offset could be measured and compensated for, would the playback (without external sync) stay together for a few minutes of playback time?

    Okay, that was several questions…

    Anybody done any experiments?

    • We’ve never tried this, but you can expect the oscillator components to be accurate to within a percent or so of their target frequency. This means that after 100 seconds of playback, two of these could be off by up to a second from each other. Each board will be fairly consistent, but note that temperature also affects the accuracy. This is a good example of a general class of problem where you need multiple systems to stay synchronized with each other, and the solutions can get pretty complex. (Sometimes it’s easier to have a more powerful system do everything, since there is only one clock to deal with.) Good luck, let us know what you find, and how you solve it!

  • What I could really use is one of these with the VS1063 and a microphone input so I could record MP3s as well as playback.

  • I need one of these with a GPS so that I can program a sound track for real life, lol! Maybe clock and light sensor too! So many possibilities!

    • That’s a great idea! (And fairly easy to implement, just pipe the GPS' TX line into the LilyPad’s RX line, and use TinyGPS etc. to monitor how far away you are from various coordinates.) Let us know if you try it out!

  • I would like to trigger mp3’s on a lilypad through a wireless (xbee) impuls. Is it possible to connect a lilypad-xbee directly to the lilypad mp3 and get it to work? Thanks

    • Sure! Just connect the TX on the XBee to the RX on the LilyPad MP3 Player, and write a sketch that listens for serial commands like ‘1’ to play track 1. In fact, there’s an example sketch in the included SFEMP3Shield library called “MP3Shield_Library_Demo” that may already do what you want. Let us know how it works!

  • Would it make sense to use a regular lilypad to handle the logic of sensor data, and then link to the mp3 lilypad for playback, especially if I wanted to have access to all 5 playback pins?

    • It depends a little bit on how much processing power your sensors require, but one neat thing about Bill Porter’s MP3 library is that the audio data transfer takes place in the background via interrupt, so your “foreground” code is free to do other things like handle sensors. There are caveats around the fact that you need to be careful about sharing the SPI bus, and your code will be paused periodically by the data transfer, but it’s worth trying on the single board first.

    • Yup! You can definitely do that.

  • I’m using windows 8 and hope to get the arduino app talking to the board. I’ve googled the error and it shows that arduino app isn’t even making it to the board..

    i have my board selected as “Arduino Pro or Pro Mini (3.3V, 8.MHZ) w/ ATmega328”

    the USB COM port shows up, but i’m unable to upload the sketch to the board. It gives me an error:

    avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36 Copyright © 2000-2005 Brian Dean, Copyright © 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf"
         Using Port                    : \\.\COM5
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600

    avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20] avrdude: Send: 0 [30] [20]

    avrdude: stk500_getsync(): not in sync: resp=0x00

    avrdude done. Thank you.

    • onboard Bluetooth? Disable your bluetooth adapter sometimes its uses the same COM port as the Arduino

    • I personally retreated back to Windows 7 due to all the problems with 8. If nobody replies here with good advice, email our tech support department, who should be able to help you.

      • Found the problem.. it was the FTDI cable.

        I purchased FTDI Cable 5V (DEV-09718) and it only was providing power.

        Luckily my friend had an extra and all worked well out of the box :).

        I will be exchanging the cable via support.

  • Hi,

    Is there any way to datalog the state of the triggers to the SD card in between playing the soundfiles? In other words, is there a way to halt the MP3 player, datalog then restart the MP3 player? Any advice would be greatly appreciated.


    • It’s slightly tricky, but I don’t see why not. Bill Porter’s MP3 Library includes functions to pause and restart playback, and the SDfat library should let you have multiple files open at once. Bill’s library also has the ability for you to perform brief SPI operations between audio data transfers, so you might not even need to pause the audio to do your logging. See the above web page and example code for more info. Good luck!

  • About this: “The LilyPad MP3 Player’s headphone jack is safe for headphones, but don’t connect it to an external amplifier unless you’re using a battery to power the LilyPad. (The fine print is that if the audio ground is shorted to the power ground, the audio decoder chip will be damaged).”

    1. Why does this happen, and
    2. How can this be avoided or resolved?
    3. If there’s no workaround, would I run into the same problem using an UNO R3 and the VS1053 MP3 shield?

    I’d like to use this in a non-clothing installation with powered speakers, but it’s a wash if it has to be battery powered to work.

    • The VS10xx family uses a virtual ground for its audio output. If you connect the virtual ground (1.6V) to real ground (0V), an internal short will be created that WILL damage the chip.

      You CAN connect the audio output (headphone jack) to a grounded audio input IF you do it through some inline protection circuitry. This application note has the details, and one of our customers put together a nice diagram of what you need to add on their website. Once you have this circuitry in place, you can safely connect the LilyPad MP3 Player to any amplifier, whether the LilyPad is battery powered or not. (And yes, this goes for the MP3 Shield, MP3 Trigger, and VS10XX breakout boards as well).

      I hope this helps, if you have other questions let us know and good luck with your installation!

      • The schematic for this product already shows how this is done between the vs1053 and the amplifier. If you connect the L,R, and Gnd leads from the board to your external amplifier via capacitors (.1 to 1 uf, non-polarized) you should be fine. It’s a DC connection between grounds that is fatal.

  • If you’re using conductive thread instead of soldering wires, how do you connect the thread to the stripped wires on the speakers? Any suggestions/tips much appreciated!

    • We’re looking into ways of making a LilyPad speaker module that you can sew to directly, but it’s a hard problem to solve (for example the speaker needs to be able to survive the trip through our reflow oven). You might use a technique similar to this tutorial, which bends LED leads in a small circle to make it easier to sew to them. Ultimately you may need to do a little soldering to attach something to the speaker that you can sew to. Please let us know if you come up with any great ideas!

    • I have had good results using little snaps. Basically you solder to one of them, then sew the other one with conductive thread.

      Check out this article on Adafruit:

      I have not used it with speakers, but I think it could be a good place to start.

  • Sorry for this newbie question, but can i attach any sensors to this? I want to run it with an accelerometer so that if you pick the project up it will react and play the sounds, but it seems to me all the I/O pins are taken for the sounds triggers. I know i can use a regural Arduino and MP3 shield, but my project needs to be small, battery operated and this seems perfect for it. Thanks in advance!

    • Great question! Take a look through the User’s Guide linked above. There are five “trigger” pins, but two of them are also the I2C (“Wire library”) port, and two of them are also the RX and TX of the hardware serial port. You also have access to the SPI port through the ISP programming header; the SPI bus is heavily used while playing audio, but if you’re careful you can share it. Between all of these connections, you should be able to interface this board to many sensors. In fact, we’re working on an update to the Elevator TARDIS project based on this board plus an I2C accelerometer. Have fun!

  • The only thing I’m trying to work out and it’s a bit problematic is how to wash the hoody? Hand wasing it may be fine, but it may be a bit of a hassle. I’m trying to see if there is a way to make it removable. Like, sew some snaps on there. Also, the wiring down to the the sleeve, are the wires sewn in the sleeve? Would that be uncomfortable?

  • This is an AWESOME idea. It’s exactly what I’ve been trying to build using the VS1003 and Arduino Pro Mini 3.3v (as separate boards). Unfortunately, it’s too huge for what I need it for, but I’m glad to have your schematic so maybe I can make it smaller. This could make for some interesting ThinkGeek-like “instrument” t-shirts.

    • It’s about the diameter of a Coke can, which was as small as we could make it without going to multiple PCB layers or double-sided construction which would have raised the price. If you can make it smaller by all means go for it!

  • It would be useful to have pinout information for the board itself apart from the 5 trigger pins at the board’s perimeter. It’s possible to map them out with the schematic, a datasheet for the LED rotary encoder, and the code examples, but it’d be nice to have that info easily available in the documents section above. This is an awesome product. Thanks :)

    • Glad you like it! Could you be more specific about what you’d like to know? We’ll be happy to tell you, I’m just unsure of what more to provide than the schematic and the pin function table in the user’s guide.

      • Basically having info on the pins that are located in the center of the board. It’d be nice info to have for those less technically inclined. For instance, A1 (aka pin 15) corresponds to the rotary encoder green LED pin, A3 (aka pin 17) is the rotary encoder B channel, pin 3 is the encoder’s A channel, pin 4 is the encoder’s switch pin, pin 5 is the blue LED on the encoder, and pin 10 is the red LED on the encoder. The reason I believe this is useful is because if you want to use more than the 5 “trigger” pins and don’t want to use a rotary encoder. In a pinch, you could maybe also use the MOSI, MISO, and SCK pins in the ISP header area. To the untrained eye, it looks like there is only 5 pins available for use, when there may be as many as 14. Because the rotary encoder field isn’t silkscreened, maybe provide a photo with some leader lines pointing out what Arduino pins these are. Just my two cents :)

        • Fair enough, I’ll add this to the User Guide when we get back from Maker Faire. In the meantime, I strongly encourage installing and learning Eagle; it’s perfect for answering questions like this, as you can click on a wire in the schematic and it will highlight the matching trace in the PCB view.

          I’ll note that although you can certainly use the SPI lines on the ICP header, those lines are used extensively by the firmware to move data between the SD card and the audio decoder chip. Bill Porter’s MP3 Library does provide a mechanism for you to carefully use them between data transfers; see his web page for more info.

  • Can you program this with a 3.3v ftdi and run it with the battery?

    • Sadly no. There’s a voltage divider on the FTDI to allow charging but prevent damage to the ATmega. If you give it 3.3V, the resulting voltage is too low to function properly.

  • I watched te product demo. Is all you need to make this wearable the Lilypad MP3, a microsd card that I can load music on from my mac, the rotary encoder and a couple of thin speakers, and thread to wire it?

    • you’d need a battery too as well. check the user’s guide above.

  • Be sure to check out the User’s Guide linked above, it has tons of information about the board and how to get started using it.

  • I’m curious how long this will last on a 2000mAh LiPo.

    • It will depend a lot on whether it is playing (and at what volume) or just sitting there, but I’d estimate over 40 hours.

  • What should the SD card have on it (besides mp3 files)? Does it need the patch files as described in Bill Porter’s documentation?

    Is there a way to access the MIDI capabilities of the VS1053B chip?

    Followup Note: -The amplifier can really generate some volume, you may want to put a control on the amplifier ( e.g.: MP3player.setVolume(vol, vol) from a potentiometer on A0; Indeed, as the notes say, bigger speakers to generate bigger sound. I connected this to a pair of 6" automotive speakers and it is definitely loud enough for a ‘room level’ listening application.

    • We’re happy that it’s loud enough for you! That’s a great idea to incorporate a volume control on A0. You can also change the default setVolume() value in the “trigger” sketch if it’s not to your liking. Have fun!

    • Patch files are special files supported by the VS1053B that fix bugs on the chip and can provide additional capabilities. If you put patch files onto the SD card, Bill’s library will automatically use them, but it doesn’t require them to be there. We’ve tested it extensively without using patch files and haven’t run into major issues.

      The VS1053B chip will happily play .MID files straight off the SD card like any other audio file (note that only “format 0” files are supported). However, if you’d like to pass externally-generated serial MIDI data to the board, such as from a keyboard, you can close jumper SJ3 which will connect the RX pad directly to serial RX on the VS1053B.

Related Products