Comments: MP3 Player Shield Hookup Guide V15

Pages

Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • -------------------- Tech Support Tips/Troubleshooting/Common Issues --------------------

    microSD Card Not Reading?

    If you see an output error in the Arduino serial monitor:

    No card, wrong chip select pin, or SPI problem? SD errorCode: 0X1,0X0

    or

    Can't access SD card. Do not reformat. SD errorCode: 0XF,0X1

    Most likely it has something to do with your solder joints. Try checking the header pins and ensure that it has an ideal connection. If there is any water soluble flux residue on the header pins, temporary shorts caused by dendrites might affect how the memory card is read.

    There was one case that had issues reading a class 10, 16GB microSD card reliably with the MP3Shield_Library_Demo.ino code. I didn't have problems using the slower class 4, 8 GB microSDcard shield. By reformatting the card to the default allocation size and cleaning the board, I was able to reliably read and playback a track using the class 10 microSD card.

  • I have a v15 board (DEV-12660) connected to a RedBoard (DEV-13975) and a class 10 microSD card (COM-15051) formatted as FAT32. I carefully soldered the headers (PRT-00116) on the MP3 shield, according to the Technical Assistance page. I have one MP3 file saved to the microSD card, and renamed to "track001.mp3".

    I am using this SFEMP3Shield library because the recommended one did not compile with Arduino 1.8.13 on Windows 10 Pro. The library is installed as described here.

    After loading the "SFEMP3Shield>Examples>FilePlayer.ino" file to the RedBoard, the Arduino serial monitor (at 115200 baud) reports:


    Free RAM = 2166 Should be a base line of 1029, on ATmega328 when using INTx

    Can't access SD card. Do not reformat.

    SD errorCode: 0XF,0X0


    Trouble-shooting steps:

    1. I have re-flowed my solder joints to ensure proper connection.

    2. I have confirmed pin continuity with a DMM.

    3. I have verified the error with the MP3Shield connected to another Arduino Uno.

    4. I have verified that the MP3Shield also reports the same error with other FAT32 and FAT16 formatted class 10 microSD cards 1GB and 64GB.

    5. I have verified that changing SD_SEL, SPI_FULL_SPEED, and SPI_HALF_SPEED in SFEMP3ShieldConfig.h does not fix the issue.

    6. I have verified the pins on the MP3Shield are clear of debris, and no shorts.

    This trouble-shooting has taken me several hours. What am I missing?

  • Hi How is it possible to restart the same song (Pin 0) once more. I have to start an other song, before I can start the song before?

    thanks

  • A few updates to supporting code:

    The latest SdFAT library supports long filenames! However, some function names are different. For example The getFilename function has been replaced with getFile. To install:

    1. Select "clone or download" from the linked page and unzip the downloaded file
    2. Copy the "SdFat" directory from the unzipped folder into your Arduino's libraries directory.

    There are more recent patches for the VS1053b than those included with the SFEMP3Shield library: http://www.vlsi.fi/en/support/software/vs10xxpatches.html There is a PDF overview of changes and additional functionality. To use:

    1. Download vs1053b-patches240.zip and unzip the contents.
    2. Install PERL if not already installed on your computer.
    3. Use vs_plg_to_bin.pl, included with the SFEMP3Shield to convert the .plg files to .053 files via the command line: perl vs_plg_to_bin.pl ./vs1053b-patches-flac.plg ./patches.053
    4. Put the "patches.053" file in the root of your SDcard.

  • Hi so I'm trying to include the zip file that I downloaded from the GitHub site and Arduino is telling me the zip file does not contain a valid library. Please help!!!

  • Hello, I really could use some help with the mp3player shield version v15. I am using a ArduinoUNOr3 board with 1.6.14 IDE. I am able to load and run the FilePlayer sketch from the example file without any issue's at all, but when I upload any of the other sketches I start to run into problems. The MP3ButtonPlayer2 and the MP3ShieldLibraryDemo both seem to running the sketches in the serial monitor. The commands register, but it does not play any of the mp3 files from the microSDcard. I am not sure what the problem is. Please help.

  • I want to cut the 'trace' for the midi-in so I can use that pin for PMW output. This is described on the main hookup guide page. However I can't quite figure out what exactly I am supposed to cut.. The board layout next to the label for the pin looks approximately like the (crude) drawing below.

    /---\
     0 0  
    \---/
    

    Do I cut one of the loops above or below the two solder pads or both the loops above and below the solder pads. Or is there some connection between the solder pads that I am not seeing with with with my magnifying glasses that needs to be cut?

    • Right in between those two pads is a wire that runs under the red soldermask on the board. You want to cut right between the two pads but no farther than the pads are tall. If you later need to reverse this, a solder blob connecting both pads will do that.

  • where can I find a guide on using the midi part?

  • I'm had some strange "Can't access SD card" problems, and solved it by initializing the MP3 Chip Select pin (6) first, then the SD Chip Select pin (9).

    The FilePlayer example returned:

    Can't access SD card. Do not reformat.
    No card, wrong chip select pin, or SPI problem?
    SD errorCode: 0X1,0X0
    

    When trying to run the SdFat "QuickStart" example, and sending "9" (or 8 or 4 or 10) for the chip select pin number, I get:

    Is the card correctly inserted?
    Is chipSelect set to the correct value?
    Is there a wiring/soldering problem?
    errorCode: 0x1, errorData: 0x0
    

    but when I tried first sending 6, then 9, it worked!

    To make the FilePlayer example work, I added the following as line 257 of SFEMP3ShieldConfig.h

     #define MP3_SEL              6 //select pin for SD card
    

    and the following line in the sketch (.ino), just above the lower line.

    if(!sd.begin(MP3_SEL, SPI_FULL_SPEED))
    if(!sd.begin(SD_SEL, SPI_FULL_SPEED)) sd.initErrorHalt();
    

    This throws some errors on initialization, but I can play music. Any idea what is going on here? Is there a less hack-y way of starting up?

    Equipment:

    • Kingston 8 GB microSD (COM-11609) with one file, "track001.mp3"
    • MP3 Player Shield V15
    • RedBoard V06 powered via USB
    • Arduino 1.6.8 on OS X 10.9.5

  • I wanted to use this shield with a Wifi shield which also has an SD card slot. However the mp3 shield does not recognize when i put the SD card in the slot for the Wifi shield. It says "Can't access SD card. Do not reformat. No card, wrong chip select pin, or SPI problem?" How can i fix this?

    • Are you using the CC3000 shield?

      That error message contains a nugget of truth: the SD card chip select lines are different between the boards.

      The MP3 shield uses D9 as SD_CS. The Wifi shield uses D8 as SD_CS.

      If we follow D8 and D9 around both boards, there are other conflicts. D8 is the reset pin on the VLSI chip on the MP3 shield! If you use the SD socket on the wifi shield, every time you select the card, you're also resetting the MP3 player.

      My recommendation would be to use the card slot on the MP3 shield.

  • can you teach me about D2,D6,D7,D8,D9 pin connect atmega128?

    • I'm not entirely sure what you're asking, but I'll try.

      On the MP3 shield, those pins are just GPIO pins that interface with the MP3 decoder and SD card.

      • D2 is an input to the microcontroller, used by the MP3 chip to indicate that it is ready for more data. Ideally, it's tied to a pin that can trigger interrupts, but the library can be configured to poll the line if it can't interrupt.
      • D6 Is a GPIO output, used as the chip select for control functions within the MP3 decoder.
      • D7 Is a GPIO output, used as the chip select for the data pipeline to the MP3 decoder.
      • D8 Is a GPIO output, used as the reset line to the MP3 decoder.
      • D9 Is a GPIO output, used as is the chip select for the SD card.

      Since they're just GPIO lines, they can be reassigned to whichever pins you have handy.

      If you're using the Sparkfun-MP3-Player-Shield-Arduino-Library, you can adjust the pin assignments in the SFEMP3ShieldConfig.h file.


If you've found a bug or have other constructive feedback for our tutorial authors, please send us your feedback!