Hey, I'm having problems with running a DFPlayer Mini with a bare ATMega328p. I prototyped my circuit using an Arduino Uno and everything was running perfect.
I'm attaching my schematic and board to see if anything stands out in the wiring. Running the same code on my uno with this same circuit works perfectly, but I cannot get audio from my new board. Any help would be greatly appreciated.
I've soldered the speaker (same as I've used successfully with the uno) to the SPK1 and SPK2 pins of the DFPlayer
wvmarle:
That PCB layout misses the GND connection to the DF Player.
Your schematic misses the GND2 connection to the DF Player.
The GND is connected through the ground plane. Its shown in the schematic. GND 2 is not connected as most of the other times I've seen it done. I've also tried it with GND 2 connected to GND, but that makes no difference.
wvmarle:
Then it's time to take out your mutlimeter and check all connections.
For proper, stable operation both GND pins of the DF Player must be connected.
On second look, I also miss the mandatory 100 nF decoupling cap at the ATmega's Vcc pin.
I've been tinkering around trying to come up with a solution to this. I tried to prototype the whole thing from scratch again on a breadboard. I connected both grounds and added a 100nF cap at the ATmega VCC. Still nothing.
I was looking at different ways of controlling the DFplayer and came across grounding certain pins to skip tracks. I decided to give that try and everything works fine through the board this way. So I've come to the conclusion that this must not be a hardware issue and is most likely a software issue.
I simplified the GetStarted sketch from the dfplayer library, and am just trying to play track 1 with a button push. With this sketch I only get a quick flicker of the blue led with no sound. I can still trigger playback from grounding IO_1 pin. I feel like I'm very close on this. Any Ideas??
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(7, 6); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void setup()
{
mySoftwareSerial.begin(9600);
myDFPlayer.begin(mySoftwareSerial);
myDFPlayer.setTimeOut(5000);
delay(200);
myDFPlayer.volume(20); //Set volume value. From 0 to 30
delay(200);
}
void loop()
{
int btnRead = digitalRead(A0); //btn being read on pin A0
if (btnRead == LOW) { // has pullup so LOW read is pushed
delay(200);
myDFPlayer.play(1); // play track one on dfplayer
}
}
ALL FIXED! I had put my track in a folder named mp3 like I had seen on a tutorial in the past. After looking through the library files I came across "void playMp3Folder(int fileNumber);" after changing to that function all works great now