ArduinoGeneral

Topic: DFPlayer Noise: Researched, Tried, and Bep Bep Bep Bep Bep ...

userHead Account cancelled 2018-02-14 20:15:27 4585 Views3 Replies
Spent an entire day researching and attempting to fix the DFPlayer noise problem. The amp works as expected, so it is not the problem. I have made a video to help you better understand the sound produced: https://www.youtube.com/watch?v=uK2kkR0 ... e=youtu.be

This is the amp/speaker used: https://sites.google.com/site/wayneholder/chiptunes

https://imgur.com/oce7We9


The amp with speaker works as expected using another similar mp3 player like from a computer or possibly a phone.

https://imgur.com/UkiO8oS

Here we get the bep bep bep bep bep... as the amp/speaker has its own battery power.

https://imgur.com/vjsYYlL


Here I made everything as one power source. Bep bep bep bep bep...

I think I exhausted my research and made the following attempts:

  • [li]Electrolytic Capacitor at the power terminals[/li]
    [li]Electrolytic Capacitor parallel with ceramic capacitor from negative terminal to VCC in DFPlayer[/li]
    [li]Diode from positive terminal to VCC in DFPlayer [/li]
    [li]Battery Power source; USB power source; Power Supply power source; 5V USB plug regulator power source[/li]
    [li]1k Resistor from TX RX; Rx Tx[/li]
    [li]1-10k resistor from Rx Tx[/li]
    [li]1k between channel to GND[/li]
    [li]Separate power source for each the Arduino, amp, and DFPlayer[/li]
    [li]Tried multiple DFPlayers[/li]

Keep note that the amp/speaker works well. The files are the same both on the computer and in the SD card.

Here is my code:
Code: Select all
#include <DFRobotDFPlayerMini.h>

/***************************************************
DFPlayer - A Mini MP3 Player For Arduino
 <https://www.dfrobot.com/index.php?route=product/product&product_id=1121>
 
 ***************************************************
 This example shows the basic function of library for DFPlayer.
 
 Created 2016-12-07
 By [Angelo qiao]([email protected])
 
 GNU Lesser General Public License.
 See <http://www.gnu.org/licenses/> for details.
 All above must be included in any redistribution
 ****************************************************/

/***********Notice and Trouble shooting***************
 1.Connection and Diagram can be found here
 <https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#Connection_Diagram>
 2.This code is tested on Arduino Uno, Leonardo, Mega boards.
 ****************************************************/

#include <Arduino.h>
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
int counter = 0;
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  
  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(15);  //Set volume value. From 0 to 30
  delay(1000);
myDFPlayer.enableDAC();  //Enable On-chip DAC
}

void loop()
{
  static unsigned long timer = millis();
  if(millis() - timer > 1000 && counter == 0)
  {
   myDFPlayer.play(1);
   Serial.println(F("Music Started"));
   delay(1000);
   Serial.println(F("1 second later..."));
   delay(6000);
   Serial.println(F("7 seconds later..."));
   delay(1000);
   counter =1;
  }


delay(7000);
  
  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
  }
}

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;
  }
}



2018-09-18 23:20:42 Yes, it needs a 300 to 1000 Ohm resistor between the controller and the dfplayer's RX input. Looking at the signals with a scope you can see that the noise stems from the fact that its RX input turns periodically into an output during playback and back-drives the TX output the micro controller. The resistor limits this otherwise high current so it doesn't have an ill effect. The noise is mostly audible when the power source is near or at 5V because the current goes up as the voltages goes.

Gary
userHeadPic garystofer
2018-03-17 02:12:44 I had the same issue until I used the 1K resistor on the RX & TX lines... then it cleared up during playback.

Since you are using a speaker..... why are you not using the speaker pins? (but instead the DAC pins?)

Trying using SPKR1 & SPKR 2


Not quite the same.. but my lingering problem is a huge POP from the speaker when it gets powered on/off.. playback is fine..

This article has a theory.. (although I havent tested it)

http://work-now-dammit.blogspot.dfrobot.at/2 ... scent.html
userHeadPic whispers007
2018-03-15 10:36:41 I get the same noise out of my 28mm speaker when I'm hooked up to batteries. I'm using two CR2032's into the raw input to power the Arduino, and coming out of VCC to the DFPlayer. I'm not getting any success when plugged into USB though. It sounds like its playing at about 10X speed. so...stumped. userHeadPic boyleb