ArduinoGeneral

DFPlayer mini popping when driving 2 speakers

userHead soldiez 2020-03-16 01:59:53 4369 Views5 Replies
My DFPlayer Mini works flawlessly when driving one speaker, but when I add another speaker, after a few minutes it starts to get too hot too touch for more than a few seconds and starts making a pop every 2 seconds or so(but still works ok otherwise). The speakers are rated 1W 8 ohm. For my project(mp3 doorbell) I only need a sound being played once in a while, but DFPlayer gets hot and starts popping even if I don't play a song. If I power the arduino from usb it pops every 2 seconds or so, but if I power it directly from 5V it gets crazier, stutters at the start of every song and then starts popping like every half a second or so. Any ideas?

Thanks!

Edit: The arduino led gets slightly brighter every time the pop happens.(Arduino Uno).

This is the code, but I don't think it's too relevant regarding this issue:
Code: Select all
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

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

int buttonPause = 12;
byte oldSwitchState = HIGH;
boolean isPlaying = false;
int count = 0;
int songNumber = 1;
int totalSongs = 5;
int value = 0;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
int buttonState = 0;
int lastVolume = 0;

void setup() {
    pinMode(buttonPause, INPUT_PULLUP);
    //digitalWrite(buttonPause, LOW);
    
    mySoftwareSerial.begin(9600);
    Serial.begin(9600);

    delay(500);

    Serial.println();
    Serial.println("DFPlayer Mini Demo");
    Serial.println("Initializing DFPlayer...");

    if (!myDFPlayer.begin(mySoftwareSerial)) {
        Serial.println("Unable to begin:");
        Serial.println("1.Please recheck the connection!");
        Serial.println("2.Please insert the SD card!");
        while (true);
    }
    myDFPlayer.setTimeOut(500);

    //----Set volume----
    myDFPlayer.volume(10); //Set volume value (0~30).
    
    //----Set different EQ----
    myDFPlayer.EQ(DFPLAYER_EQ_NORMAL);
    myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
}

void loop() {
  byte switchState = digitalRead(buttonPause);
  value = analogRead(A2);
  value = map(value, 7, 1023, 0, 25);
  if(value != lastVolume){
   myDFPlayer.volume(value);
   lastVolume = value;
  }
  
 if(oldSwitchState != switchState){
    lastDebounceTime = millis();
  }

   if ((millis() - lastDebounceTime) > debounceDelay) {
 if(switchState != buttonState){
  buttonState = switchState;
    if (switchState == LOW) {
            myDFPlayer.play(songNumber);
            Serial.println(songNumber);
            if(songNumber>=totalSongs){
              songNumber=0;
            }
              songNumber++;
        }
      }
   }
   oldSwitchState = switchState;
}
2022-03-22 11:36:48 interesting userHeadPic s.mullep2022
2022-03-22 03:13:10 We had a similar problem with two speakers connected - the DFplayer was shutting off after a few seconds. We solved the problem using a resistor of 50 - 100 Ohm in series with the speakers, for both speakers, to reduce power consumption - then the DFplayer acted normally. Of course the sound is less loud with the resistors. userHeadPic contrechoc
2020-03-17 21:02:20 It doesn't matter if the volume is high or low, it does the same if the volume is 5, 10, or 25. I don't mind if it starts getting hot, because a song only plays for a few seconds, but I don't get why it gets too hot when a song isn't playing. I tried other libraries, implementing sleep and things like that but it does the same thing. userHeadPic soldiez