Home Forums Sparkfun MP3 Shield Library Support Forum hardware questions (speaker output)

Viewing 14 posts - 1 through 14 (of 14 total)
  • Author
  • #1754


    I’d like to use this Sparkfun MP3 shield directly with a small speaker (no amplifier) to make an interactive plush toy. I have a few questions, which, I know are not directly related to your work on the library. Yet I hope I can find some help here ? They are very basic questions

    1) I don’t need to worry about the line out issue because it will be an isolated speaker, and I can directly connect the speaker to the output of the board, without the capacitors. Is it correct ?

    2) with only 1 speaker, which output pins should be used : Left/Right/GBUF ? (not using the headphone jack)

    3) if choosing a small 8 Ohm speaker: output is 5V and 50mA, so 0.5W speaker is the right choice correct? The datasheet mentions higher loads, 30 Ohm if I remember – is that a maximum (ie 8 Ohm will work fine) or a minimum ?

    Thank you for your help


    1) Correct.

    2) Currently, connect GBUF and LEFT to the speaker and set the VSdsp to Mono, using the MP3player.SetMonoMode(1); command.

    3) The data sheet states the Full Scale output swing is 1.85V across 30 ohms. This equates to 6mA Peek to peek. for a 30 ohm speaker, or 0.114 watts. The same watts put into a 8 ohm speaker would result in 0.95 v peek to peek at 120mA. Approximately. Not sure where you get the 5V 50mA, unless you are referring to your speakers max abilities. which would then be a 5V*50Ma = 250 mW or 1/4W. Well above the VS1053’s standard/default output.

    Note. I will add shortly support for the SM_DIFF feature. This will allow as stated “3.0 volts can be achieved with +-to-+ wiring for mono difference sound.” Then You connect a speaker between LEFT and RIGHT, then set the SM_DIFF bit in the mode register. Not using GBUF or GND and get more power out of the VSdsp. The data sheet does not spec this mode of operation, but it rational to think it was measured across a 30 ohm speaker as the rest of the spec’s were. This would yield 300 mW which would then be just beyond your 1/4W speaker. Setting or limiting the volume to -2dB would then limit the max power to approximately 80% (of 300mW) to 230 mW. Which is below the 250 mW speaker.


    Amazing. Thanks for your support !


    Re the output, I read it in the “maximum” ratings but now that I read your answer and re-read the spec sheets and did the math as well, everything makes sense.

    I bought a 1/2W speaker so the +to+ wiring delivering 300mW would be just great !

    How can we get updated on new releases of the library ? Through this forum ?


    thanks anyway for your good work


    Join GITHUB and mark any repositories of your interest as watch.


    I have added support for the SM_DIFF output on a preliminary branch of my GITHUB fork. For stereo playback streams this creates a virtual sound, and for mono streams this creates a differential left/right output with a maximum output of 3V.

    I have preliminarily tried it out and primitively hear a difference. I have not scoped it, but expect it work.

    Let us know if it helps.



    I should note there was a recent preliminary change in the way Library handles SdFat, requiring a sd.begin() in the main INO. Hope this does not throw you off much. it is simple two line update of any INO file you may have previously created. The example from the library has it and runs out of the box, correctly with it.




    This is a quick note to let you know that I have tested the sparkfun shield with your library with hearphones – it works, and I am very grateful for your work.


    However I thought I’d let you know that

    – the 115200 baud rate that you suggest by default doesn’t work with the Arduino Uno rev3. At 115200 bauds, I had only funky characters in my console, and no sound after pressing “1”. I changed it to 9600 bauds, as I learnt for Serial connection tutorials with the Uno rev3, and it worked. Some questions :

    does this lower baud rate degrades the sound quality ?

    will it make the process slower, ie give less time between interrupts to perform other tasks in the loop() function ? (not sure I am phrasing this right)

    can I make my Uno talk to my computer at 115200 bauds ?

    – despite the warning on sparkfun page (not your page), a 128kbps mp3 can be played, although with a poor sound quality.


    Now I’m off for some soldering and testing the speaker.


    I am currently using your 1.00.02 example ino. When I’m cool with the hardware I”ll update my library.


    Thanks again




    No, wait. I feel stupid, I can’t understand to which pins my speaker should connect. Looking at the schematics :


    I can see the LEFT, RIGHT, GBUF pins from the chip, but not as shield pins. Available pins have names like MP3-CS and the like.

    Can you help me connect the dots ?


    Thank you


    No lower baud rate will not affect the playback of files. We are not using the software serial here. So the UART is hardware peripheral and the speed won’t affect the CPU.

    Yes the Bit Rate can vary somewhat for each experience. SFE’s original demonstration was not interrupt driven and likely used on a 8MgHz PRO versus the UNO’s 16MgHz CPU and this driver is Interrupt based. Using less real time.

    The speaker LEFT, RIGHT, GBUF pins  do not route the Arduino Headers. Rather they go to TWO connections; JP3 and U5. Where U5 is the typical 3.5mm stereo jack connector. JP3 is a Single In-Line Pin 0.1″ header, that is convient for soldering a connector to other speakers.

    I typically use 115200 as to get a lot of debug, back and forth. Most examples use 9600 as it is very reliable. But I admit I am lazy in publishing, going back and forth. Where 115200 works fine on my UNO R3’s. That said doing the math shows 115200 is close to the 10% allowed error, so there may be some variances, between users and boards. Where I am glad you figured it out and got it working.




    I confess I did not understand all your answer, but I decided not to over-think it, plugged wires in the – and L, and boom, it works !


    awesome, thanks,


    Yes, the “L”,  “R” and “-“, is the 3 SIP 0.1” connector mentioned.  Where the LR are obviously left and right. And “-” is GBUF, NOT GROUND.

    Where the newer software supports the “M” (mono) and “D” (differential) speaker modes and commands. As to get loader. I suspect when you put the speaker inside the plush toy it will need the boost in volume.

    Note the above mentioned link of the fork, no longer exists, it has been merged into my github master fork


    alright the differential works – but I have not tested the max volume capability


    thanks !


    Hi Bill

    I wanted to let you know that, thanks to your help, I completed my project. You can find it here : http://www.instructables.com/id/Plush-toy-singing-with-Mommys-voice/

    By the way, the volume from the 0.5W speaker is sufficient in Differential, even when inside the stuffed toy. I didn’t have to put it to the maximum


    Nice Job.

    As you have one speaker, you may want to include MP3player.setMonoMode(1); near the MP3player.setDiffertialOutput(1); as not to have there virtual sound effect.(what ever that is).

    You may want to look at http://mpflaga.github.com/Sparkfun-MP3-Player-Shield-Arduino-Library/_file_player_8ino.html which you could easily adapt to auto detect and cycle through any file name, with the button.

Viewing 14 posts - 1 through 14 (of 14 total)
  • You must be logged in to reply to this topic.