I’ve recently started to experiment around with DFPlayer Mini, MP3-TF-16P, WTV020M01 – all of which are stand-alone MP3 Modules for Arduino / Atmel (and other micro-controllers of course).
DFPlayer Mini, MP3-TF-16P, WTV020M01 – What’s the Difference??
Prior to buying these modules, I had read bits and pieces about them on other articles and forum posts that hinted that they are not straight forward and don’t always work out of the box. This post will cover my experience with the three models I’ve tried and what I’ve discovered about them so far.
While they are all similar in appearance, they certainly do not all work the same!
The WTV020M01 “Audio” Module for Arduino
The first module I purchased and tried out was the WTV020M01 “Audio” module which I got for about £1.50 from good old eBay. I wont beat around the bush here. In my opinion, this module was the worst of the three I tested.
I can only surmise that the people I saw in YouTube videos and on blogs and websites that demonstrated these particular modules working must have made live sacrifices of their first born to the gods to get them to work.
Firstly they are NOT MP3 modules at all – though they do supposedly play audio. Instead they use an outdated audio file format (.AD4) or supposedly .WAV – the latter I doubt works either. So you can’t just drop you favorite MP3 files over to the SD card for the module to play. Nope, instead a merry dance of converting from perfectly good MP3 format to some archaic AD4 format is required instead.
Also, as I later discovered, this module is unbelievably fussy about the size and make of SD Card that it will and wont work with. If you buy the WTV020M01 module, you’ll spend an eternity just trying to find and SD Card that works.
For this and other reasons such as the overly complicated wiring required to work this module, I would steer clear and not bother with it. It is a complete waste of time and money. I gave up with mine and doubt it will see the light of day ever again.
The DFPlayer Mini MP3 Player Module for Arduino
The next MP3 Player Audio Module for Arduino that I tested was the DFPlayer Mini module and I shall come right out here and now and say that this is without a doubt the best Arduino MP3 module by a mile! No doubt about it.
I discovered this particular Arduino MP3 module purely by accident if truth be told. Having tested the WTV020M01 which failed miserably to deliver, I went hunting around on the Internet and found the DFPlayer Mini and have just placed an order for 5 modules from China via AliExpress..
Later that same day I discovered quite by accident that I already had one of these DFPlayer modules in my posession sitting around on top of my kitchen cupboard – which I must have purchased some time ago and then forgot about. BONUS!
The DFPLayer Mini Blew Me Away – And All of the Competition Along With It!
So having unexpectedly discovered the DFPlayer Mini in my posession, I set about gathering the info necessary from the internet to wire up the DFPlayer Mini and take it for a test spin.
Having tried the WTV020M01 module which failed miserably to deliver, I was skeptical that the DFPlayer would even work at all.
Now the thing you need to understand about these MP3 / Audio modules (and I’ll go into this in a little more detail later) is that if you read about them on the internet you’ll find that no two are alike. You can get a DFPlayer Mini that works well and another that doesn’t. This seems to be true of most of these brands of audio modules, not just DFPlayer. They can be identical right down to the IC numbers and still not work the same. More on this later…
But much to my sheer amazement, when I powered up the DFPlayer Mini it did work and it worked very very well indeed!
I should point out here that prior to testing out these audio / MP3 modules I had been using an Arduino Library called TMRPCM – which works really well for playing wav files from an SD Card with an Arduino. It’s not the most ideal way to play audio but it worked rather well and I can’t fault it at all for what it is and what it does. The only downside is it is rather resource heavy and requires more than just a couple of wires / pins. So this is my benchmark standard.
Setting Up and Testing the DFPLayer Mini with an Arduino Nano
When combined with an Arduino Nano the DFPlayer only required 6 pins / wires / connections.
- VCC / 5V
- VDD / 0V
- RX (Software Serial) – with 1K resistor in Series!
- TX (Software Serial) – with 1K resistor in Series!
- SPKR +
- SPKR –
And that’s it for the wiring connections.
Next, you need to put some MP3 music files on to a Micro SD Card for the DFPlayer to play. Any tracks you use MUST be renamed like so:
And lastly, you need to download and install the DFPlayer Mini Library for Arduino IDE which comes with two example sketches to get the DFPlayer working. You can use the DFPlayer Mini without Arduino but I’ve not tested that out yet.
The DFPlayer Mini library comes with two example sketches to get you off the ground – Basic and Full. As their name implies, the former contains just enough code to get the DFPlayer working and playing MP3 tracks while the latter contains more advanced settings and commands which you can tailor to your needs.
Throughout all the tests I was using an 8ohm 0.5W speaker – including while testing the benchmark TMRPCM library and the reason I mention this is because the loudest I’ve ever heard sound coming from it is when it was driven by the DFPlayer Mini. In fact it was so loud, I had to re-upload the basic sketch with the volume reduced to about 8.
This DFPlayer Mini MP3 module really is pretty much plug and go.
The DFPlayer Mini is The Best MP3 Module I’ve Found So Far….. BUT……
As with all things in life, there’s always a but and the DFPlayer Mini is no exception. This is without a doubt truly a remarkable little MP3 Module for the price – there’s no denying that but it does have some quirks and design flaws which require a little modification to get the most out of this little module.
The first thing I noticed with the DFPLayer mini was the horrible speaker click / thud / clunk whenever the module was powered up / reset. Believe me, that will soon drive you round the twist as it did me lol.
This is down to a design floor which I found the answer to on this website: http://work-now-dammit.blogspot.co.uk/2016/08/dfplayer-mp3-module-power-onoff-clicks.html?m=1
I wont go into the cause or solution in detail but that’s what you need to do to fix the issue. I removed the 0Ohm resistor and just soldered a wire directly from pin 1 on the amplifier chip to the top of the busy pin on the module and that did the trick. No more clicking.
And finally, another recommended modification on that same website is to switch the DFPlayer module off when not in use to save more power. This could likely be done with a Transistor and an arduino pin easily enough.
I will probably put together a separate post on the DFPLayer Mini because it’s pretty much an entire subject in its own right and a bit too much to go into any serious depth here.
Last But Not Least We Finally Move on to the MP3-TF-16P MP3 Audio Module for Arduino
The MP3-TF-16P MP3 Audio Module is actually bit of in imposter.
As some keen eyed readers will have observed, in the picture I posted of the DFPlayer I had written the word FRY on the SD slot of the DFPlayer – this is because I managed to fry the DFPlayer while experimenting with it. This lead to me ordering the MP3-TF-16P thinking it would be the same thing.
I wouldn’t like to use the word clone but the MP3-TF-16P is clearly identical in almost every single way to the DFPlayer Mini apart from the name and one or maybe two other small details which I’ll go into in a moment.
Technically, this module is indeed a DFPlayer mini – even if not labelled as such. It is the same size as a DFPlayer Mini, all of the components appear to be of the same type / values as the DFPlayer, all of the connections are the same and it works the same as a DFPlayer using the same library and sketches.
But it is not the same. Far from it.
Having replaced the DFPLayer I had just previously fried with the MP3-TF module I was massively disappointed with the results. The audio coming out of it, for want of a better description, was complete noisy crap – and low in volume at that. It was aprox half of the audio level of the DFPlayer and was full of buzzing, noise and other distortions.
At this point, I went back and tested everything else to ensure I hadn’t fried something else along the way when I fried the DFPlayer but everything was working as it should be.
I next spent some time inspecting both modules and comparing them and while both the two main ICs (The larger yx5200-24ss mp3 chip and the smaller 8002 audio amp) that make up these modules are identical along with the capacitors and resistors which are of identical values and there is a clear and noticeable difference in quality between the two modules.
The DFPlayer appears to have better quality components used in its build compared to the MP3-TF module. Also the quality in solder / soldering is highly visible. Again, the DFPlayer comes up on top in this department. Nice soldering, no globs of flux left over and generally a cleaner and better board all round.
So I concluded that the MP3-TF-16P was another pile of garbage not worth bothering with and put the rubbish audio and noise down to the use of inferior components and moved on.
You will be pleased to know the MP3-TF-16P module did however come to some good use in the end. It gave up its life so that the DFPlayer could live again.
The Fried DFPlayer Incident…… Letting the Smoke out!
This was a separate incident from the tests I’d made with these modules. By this time I was trying to incorporate the DFPlayer into a project. Which was the entire reason I started trying out these MP3 Modules.
Apart from the things I discovered about the DFPlayer along the way which I spoke about earlier, I also found out that the DFPlayer doesn’t like playing nice with some of my other devices / circuits.
I had been trying to share an audio output – namely my 8ohm speaker – between two audio sources. The audio from the DF Player and PWM Tone audio coming from a pin on the arduino – not at the same time of course.
I had tried the obvious “connect the speaker’s negative wire to a common ground (the spkr negative pin on the DFPlayer) and then sharing the remaining speaker positive wire with the DFPlayer spkr positve pin and the PWM audio pin from the arduino. Then when either one or the other were played, the sound would come out of the one speaker.
Nope, that didn’t work. That just pulled down the volume level on both audio signals.
The final test I did (after trying various capacitor, resistor and diode combinations) was to try isolating the DFPlayer module to its own 5V supply. It didn’t like that idea very much and it cooked the 8002 audio amp letting out all the valuable smoke through a little blister hole in the process. And that was the end of that.
Fortunately for me, the MP3-TF-16P has exactly the same 8002 amplifier so I took the risk of desoldering it from the working MP3-TF module and soldering it onto the fried DFplayer while hoping that all the other discrete components and the MP3 IC survived.
Being a delicate operation, my fists of ham managed to lift off a track on pin 8 of the 8002 IC but a quick look at the datasheet for the 8002 amplifier IC revealed that it went directly to the (SPKR -) pin on the module so I soldered a wire from one pin to the other.
While I had the soldering iron out I figured I may as well risk the design fault fix mentioned earlier in this post so I removed the 0ohm resistor and tacked another wire from pin 1 of the 8002 IC over to the busy pin on the DFplayer module.
Hey presto it all worked as if nothing had ever happened and no more click click when powering up! WOO!
The Continuing Conflict of my Circuit and the DFPlayer Mini
So now we come pretty much full circle as we near the end of this lengthy post and having resurrected the DFPlayer from death, I’m back to wrestling with the problem of getting it to work in the way I want in project without any further conflicts.
At this point in time, my experiments have lead me to sort of isolating everything I can on the audio side of things.
I’m now using a relay to switch between the two audio sources which is controlled by software. Both the audio positive sides and the ground sides are totally isolated from each other.
To do this, I used a DPDT relay (a relay which has two separate sets of contacts operated by the one solenoid).
One side of the speaker wires (SPKR +) is wired to one of the Common pins. The DFPlayer Mini (SPKR +) pin is wired to the normally closed pin of those contacts while the Arduino Audio PWM pin is wired to the normally open contact.
On the other side of the relay I’ve done the same thing with the other wire from the speaker (SPKR -). I wired that to the Common pin, then wired the (SPKR -) pin from the DFPlayer module to the normally closed contact and the GROUND wire from the arduinos 5V supply to the normally open. The 0V (GND) wire from the arduinos 5V supply is actually the correct GND or (SPKR -) companion wire for the Arduino PWM wire.
Just as the DFPlayer has (spkr +) and (spkr -) pins, so the arduino needs a similar arrangement for the audio PWM pin. While the PWM arduin pin represents (SPKR +) so the 0v or GND wire from the 5V supply is the PWM pins equvalent of (SPKR -). If that’s clear?
Never the Twain Shall Meet – Something to Keep You Grounded
Having somewhat isolated and paired up the audio outputs correctly I thought this would have cured all the problems I was having but it didn’t – not completely anyway.
Isolating the audio signals using relay to toggle between one audio signal or the other did cure the issue I was having when directly sharing the speaker with both signal wires but the DFplayer still doesn’t want to play nice.
When the arduino program trigger the DFplayer into playing an MP3, it has no problem.
When the program tries to generate tones however, the arduino resets half way through.
If I disconnect the power to the DFplayer manually, the tones play fine all the way to the end.
For some reason, the arduino or my circuit doesn’t like generating PWM audio tones while the DFPlayer has power. It kills it dead mid way through its tone routine. The only thing I can conclude with my limited understanding is that it boils down to power consumption or some rather odd ground loop effect going on.
So the final idea I plan to try involves the other recommendation suggested on the website with the DFPlayer fixes is to “gate” the power. I presume this means to control power to the module by turning it on when in use and off when not.
Having isolated all the audio connections between the arduino and the DFplayer (apart from the software serial TX/RX lines) the only thing left I can try isolating is the power supply to the DFPlayer when it’s not in use.
This will probably work out more efficient in the long run since I don’t really want anything taking up precious power when it doesn’t need to be. Hopefully this will put an end to the conflicts I’m having.
So to My Conclusions – DFPlayer the Outright Winner
Since this article / post has dragged on long enough, I’ll keep my conclusions short and sweet.
If you’re looking for an MP3 Module for your Arduino or other micro-controller projects or perhaps as a stand-alone module then get a DFPlayer Mini Module. It is hands down the best of the three I tried.
I had no problems getting the DFPlayer module to work at all. Just don’t forget the 1K resistors in series with the TX and RX wires between the DFPlayer and the Arduino else all you’ll get is horrible noise.
With the DFPlayer Mini I didn’t have to mess around converting my audio files into some strange format at some strange bit rate using some complicated converter. I just drag my MP3 Files on to my SD Card, rename them and that’s it.
Yes the DFPlayer does need a small modification to remove the horrible clicking it does when powering up but if you can work a soldering iron then it doesn’t take more than 5 minutes to do the mod to cure it. It is really easy. Or if you’re prepared to put up with the clicking, the module will still work well.
For the price, the DFPlayer is money well spent I think. No headaches, no messing around, no major debugging nightmares (unless you happen to be doing something complex like I am but that’s an exception). It just does exactly what it is meant to.
So far, all the modules I’ve tried which actually say DFPlayer Mini on the PCB Module are in fact what they claim to be. If it says WTV020 anywhere on it or MP3-TF-16P or similar, I wouldn’t bother with it. Chances are it’s one of the ones I’ve tested here or a close relative of one and will likely cause you nothing but grief, headaches and wasted time and money trying to find SD cards for them, trying to get the wiring to work, trying to get sound out of them and finding out why one IC works but another one doesn’t.
One thing you should be aware of when buying these modules is that some sellers on places like eBay will list the the WTV modules as being MP3 players. They are not. They can barely play .AD4 files and will not do what you want without lots of trouble getting it to work – if it works at all.
Also, there are sellers out there that will list these lesser modules as DFPlayers and show the image of a DFPlayer module but what you end up with is one of the crappy cheaper modules because the seller doesn’t know one module from another.
If you are buying a DFPlayer Mini, make sure that’s exactly what you are going to get. Ask the seller what the writing on the module says or to send you a photo of the module. If it doesn’t say DFPlayer Mini then personally, I wouldn’t waste my time with it.
If course these are my own experiences and yours may differ. But if what I’ve read and experienced during my time trying out these various modules is anything to go by, I’ll be sticking with DFPlayer and only DFPlayer modules.