DFPlayer won’t initialize using example sketch

Thread Starter

Stiletto807

Joined Dec 26, 2022
6
The title of your thread has been edited to make it more informative. Please make sure that you use a title that gives some idea what is in the post. Very vague titles will get much less attention and can be frustrating to potential helpers. —Moderator

Hello,
I'm doing a project using arduino uno, dfplayer and ultrasonic sensor So that the sensor triggers the mp3 player by 50cm or so, the music will play.
I built everything wiring OK connections OK
I found the following sketch on website and copied it
But it doesn't work!!!
I receive message from serial monitor saying dfplayer is not connected please see photo
Can someone have a look at the sketch please if there's something wrong in it?
Would you please try to correct it if so?
Thank you for your help and effort.
Here is the sketch :

Mod: please use Code tags on the Insert Option.
C-like:
#include "Arduino.h"

#include "SoftwareSerial.h"


#include "DFRobotDFPlayerMini.h"



const byte SENSOR_COUNT = 1;

byte triggerPins[SENSOR_COUNT] = {9};

byte echoPins[SENSOR_COUNT]    = {13};



SoftwareSerial mySoftwareSerial(10, 11); // RX, TX


DFRobotDFPlayerMini myDFPlayer;


void printDetail(uint8_t type, int value);


void setup()

{

  mySoftwareSerial.begin(9600);

  Serial.begin(9600);


  for( byte i=0; i<SENSOR_COUNT; i++ )

  {

    pinMode(triggerPins, OUTPUT);

    pinMode(echoPins, INPUT);

  }


  Serial.println();

  Serial.println(F("DFRobot DFPlayer Mini Demo"));

  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));


  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.

    Serial.println(F("Unable to begin:"));

    Serial.println(F("1.Please recheck the connection!"));

    Serial.println(F("2.Please insert the SD card!"));

    while(true);

  }

  Serial.println(F("DFPlayer Mini online."));


  myDFPlayer.volume(30);  //Set volume value. From 0 to 30


}


int currentSound = 1;

void loop()

{


  for( byte i=0; i<SENSOR_COUNT; i++ ) // loop through all distance sensors

  {

    if( detectPresence(i) ) // check if there is an object near it

    {

      if(currentSound!=i) // check that it's a different sensor than the one that was last triggered

      {

        Serial.print("play song number ");

        Serial.println(i);

        myDFPlayer.play(1); // play song nr `i+1`

      }

      currentSound = 1;

    }

  }



  if (myDFPlayer.available()) {

    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.

  }


}


// detectPresence will return TRUE if there is an object close to it.

bool detectPresence(byte sensorNr)

{

  if( sensorNr>=SENSOR_COUNT )

    return false;

  long duration, distance;

  //digitalWrite(triggerPins[sensorNr], LOW);  // Added this line

  //delayMicroseconds(10); // Added this line

  digitalWrite(triggerPins[sensorNr], HIGH);

  delayMicroseconds(15); // Added this line

  digitalWrite(triggerPins[sensorNr], LOW);

  duration = pulseIn(echoPins[sensorNr], HIGH);

  distance = duration/58;


return (distance > 1 && distance <= 8); { //distance in centimeter, fx between 1 - 8 cm

}

}


void printDetail(uint8_t type, int value){


  switch (type) {

    case TimeOut:

      Serial.println(F("Time Out!"));

      break;

    case WrongStack:

      Serial.println(F("Stack Wrong!"));

      break;

    case DFPlayerCardInserted:

      Serial.println(F("Card Inserted!"));

      break;

    case DFPlayerCardRemoved:

      Serial.println(F("Card Removed!"));

      break;

    case DFPlayerCardOnline:

      Serial.println(F("Card Online!"));

      break;

    case DFPlayerPlayFinished:

      Serial.print(F("Number:"));

      Serial.print(value);

      Serial.println(F(" Play Finished!"));

      break;

    case DFPlayerError:

      Serial.print(F("DFPlayerError:"));

      switch (value) {

        case Busy:

          Serial.println(F("Card not found"));

          break;

        case Sleeping:

          Serial.println(F("Sleeping"));

          break;

        case SerialWrongStack:

          Serial.println(F("Get Wrong Stack"));

          break;

        case CheckSumNotMatch:

          Serial.println(F("Check Sum Not Match"));

          break;

        case FileIndexOut:

          Serial.println(F("File Index Out of Bound"));

          break;

        case FileMismatch:

          Serial.println(F("Cannot Find File"));

          break;

        case Advertise:

          Serial.println(F("In Advertise"));

          break;

        default:

          break;

      }

      break;

    default:

      break;

  }


}
 

Attachments

Last edited by a moderator:

Ya’akov

Joined Jan 27, 2019
9,070
Welcome to AAC.

I built everything wiring OK connections OK
How do you know this? How did you test it?

The photo of the perfboard doesn’t show the connections so it isn’t even possible to check that the pins are correct.

The most likely cause of your problem, in the absence of additional information is bad or incorrect connections to the MP3 player.

  • Check those connections with a DMM to make sure there is continuity between the Uno and the DFPlayer on pins 10 and 11;

  • make sure pins 10 and 11 go to the correct pins on the DFPlayer; and,

  • make sure the DFPlayer is getting \( \mathsf{V_{cc}} \) and has a connection to GND by measuring the 5V at the two pins on the player.

You can also post a photo of the reverse side of the PCB in case something is obvious there.

The solution to this problem is systematic troubleshooting, starting with the wiring because that is the most likely problem. Each connection needs confirmation. It is possible your DFPlayer is dead. If you can‘t find a problem with the wiring you will need to make a minimal setup with player and confirm it operates.
 

Thread Starter

Stiletto807

Joined Dec 26, 2022
6
Welcome to AAC.



How do you know this? How did you test it?

The photo of the perfboard doesn’t show the connections so it isn’t even possible to check that the pins are correct.

The most likely cause of your problem, in the absence of additional information is ad or incorrect connections to the MP3 player.

  • Check those connections with a DMM to make sure there is continuity between the Uno and the DFPlayer on pins 10 and 11;

  • make sure pins 10 and 11 go to the correct pins on the DFPlayer; and,

  • make sure the DFPlayer is getting \( \mathsf{V_{cc}} \) and has a connection to GND by measuring the 5V at the two pins on the player.

You can also post a photo of the reverse side of the PCB in case something is obvious there.

The solution to this problem is systematic troubleshooting, starting with the wiring because that is the most likely problem. Each connection needs confirmation. It is possible your DFPlayer is dead. If you can‘t find a problem with the wiring you will need to make a minimal setup with player and confirm it operates.
Thank you very much I will do what you said
I appreciate your help
 

KeithWalker

Joined Jul 10, 2017
3,063
Is your SD card compatible - 32Gb or less? Are you sure you that you formatted the SD card and installed the music correctly in MP3 format? Can you play the music tracks on your computer? Are you using a Windows or Mac computer? Mac computers add hidden index files that the DF player will try to play as music.
 

Thread Starter

Stiletto807

Joined Dec 26, 2022
6
Is your SD card compatible - 32Gb or less? Are you sure you that you formatted the SD card and installed the music correctly in MP3 format? Can you play the music tracks on your computer? Are you using a Windows or Mac computer? Mac computers add hidden index files that the DF player will try to play as music.
Can you tell me please if the sketch code looks alright?
If you got time thank you
 

KeithWalker

Joined Jul 10, 2017
3,063
Can you tell me please if the sketch code looks alright?
If you got time thank you
No. I don't know if you have the circuit connected correctly and I don't know if you have formatted your SD card and recorded the music correctly. The messages on the monitor are suggesting that it either did not find the DFPlayer or it could not find any files on your SD card so why would I spend half an hour of my precious time trying to understand every line in a program that I don't even know where you got it from.
I suggest that you do some trouble shooting on your wiring and SD card and then run a program from a known reputable source. There is an example right in the DFPlayer data sheet which should be a good start. Here is the location of the data sheet:
https://docs.rs-online.com/58c2/A700000006944490.pdf
Once you get that working, you can add the ultrasonic sensor to the program and modify it to run the way you want it to. Make small changes and test every change that you make. That way you will be aware of any mistakes and be able to correct them easily.
 
Last edited:
Top