No puedo reproducir audio con ESP32 + DFPlayer Mini: Timeout Error

Buenas noches a todos, usuario nuevo aquí.

Resulta que hace una semana aproximadamente estoy intentando reproducir unos archivos mp3 utilizando un ESP32, un DFPlayer y unos speakers.

El problema es que no estoy logrando que el DFPlayer reproduzca el archivo de prueba mp3 que tengo en mi tarjeta SD.
La conexión entre el ESP32 y el DFPlayer Mini se hace correctamente, pero el problema es a la hora de reproducir los archivos, pues siempre me tira un Timeout Error.

Ya probé casi de todo:

  • Originalmente conectaba el ESP al DFPlayer utilizando los pines 26 y 27 para RX y TX respectivamente. Los cambié al 16 y 17. No funcionó
  • Cambié de SoftwareSerial a HardwareSerial. No funcionó.
  • Formatee la SD a FAT16. No funcionó
  • Reduje significativamente la calidad de mis mp3 de prueba. No funcionó
  • Renombré los mp3 de prueba a la nomenclatura solicitada por DFPlayer Mini (0001.mp3, 0002.mp3, etc.). No funcionó.
  • Revisé el cableado del ESP32 al DFPlayer Mini. Está en orden y no encontré cables flojos.

Este es mi codigo actualmente:

#include "DFPlayerMini_Fast.h"
#include <Arduino.h>
#include "HardwareSerial.h" // Include HardwareSerial library

// Define HardwareSerial object for DFPlayer Mini communication
HardwareSerial MySerial(1); // Replace 1 with the appropriate port number

// Create the Player object
DFPlayerMini_Fast player;

void setup() {

    // Init USB serial port for debugging
    Serial.begin(9600);

    // Start communication with DFPlayer Mini using hardware serial
    MySerial.begin(9600, SERIAL_8N1, 16, 17); // Configure hardware serial

    if (player.begin(MySerial, true)) {
        Serial.println("DFPlayer Mini connected!");

        // Set volume to maximum (0 to 30).
        player.volume(15);

        // Play the first MP3 file (modify x for other tracks)
        Serial.println(F("Reproduciendo Audio"));
        player.play(1);


        delay(1000);

        Serial.println(F("bool isPlaying();"));
        Serial.println(player.isPlaying());
    } else {
        Serial.println("Connecting to DFPlayer Mini failed!");
    }
}

void loop() {

}

Esto es lo que siempre me muestra la terminal:

Executing task in folder DFPlayer-ESP32-AudiosAmbiente: C:\Users\mlv19\.platformio\penv\Scripts\platformio.exe device monitor 

--- Terminal on COM3 | 9600 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
�p���P��iC��4���DFPlayer Mini connected!
Sent Stack:
7E FF 6 6 0 0 F FE E6 EF

Reproduciendo Audio
Sent Stack:
7E FF 6 3 0 0 1 FE F7 EF

bool isPlaying();
Sent Stack:
7E FF 6 42 0 0 0 FE B9 EF

timeout error
0

Esta es una foto de mi circuito actualmente. Estoy alimentando el ESP32 a traves de un puerto USB de mi laptop:

Aqui les dejo un esbozo de las conexiones:

Otra cosa que noté, es que el led del DFPlayer Mini nunca se enciende, a pesar de que la conexión con el mismo es exitosa.

Agradezco cualquier ayuda que pudieran brindarme, es parte de un proyecto académico que debo entregar a la brevedad.

Muchas gracias de antemano.

Hi,
Yo uso ese mp3 player pero uso la libreria de #include "DFRobotDFPlayerMini.h". Como estas conectando los cables de rx y tx. Debes conecta el rx del mp3 va al pin del micro tx y el tx del mp3 va al pin del micro rx. En ora palabras estan cruzados.

Hola, permuté los cables de lugar tal como lo indicas y no funcionó. Sigo teniendo el mismo problema de timeout error.

De todas formas ya lo tenia conectado originalmente como lo indicas. Mira el esbozo que hice de las conexiones.

Hi,
Que tamano de memoria sd usas? Debe de usar una de menos de 32gb segun las especificaciones en el manual. Al principio useba una de 64gb y no trabajaba.Cuando lei las instruciones entonces use una de 32gb y trabajo Yo uso adjunto sketch como pueba para ver si el mp3 player trabaja. Yo compre 6 y dos salieron danado. Yo uso Arduino NANO.

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 8;  // Connects to module's RX
static const uint8_t PIN_MP3_RX = 9;  // Connects to module's TX
SoftwareSerial SS_player(PIN_MP3_RX, PIN_MP3_TX);

// Create the Player object
DFRobotDFPlayerMini player;
//***********************************************************
void setup() {
  // Init USB serial port for debugging
  Serial.begin(115200);
  // Init serial port for DFPlayer Mini
  SS_player.begin(9600);
 //player.begin(SS_player);
 
  //*********************** mp3 serial setup  ***********************
 delay(100);
 Serial.println("system running");
if (!player.begin( SS_player, /*isACK = */true, /*doReset = */true)) {  //Use serial to communicate with mp3.
   
//if (!player.begin(SS_player, false )) {
    Serial.println(F("Unable to begin mp3 player:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while (true) ;
 }
  player.EQ(DFPLAYER_EQ_NORMAL);
  player.outputDevice(DFPLAYER_DEVICE_SD);
  player.volume(18);
  player.setTimeOut(500);
  Serial.println(F("MP3 Player   Online"));
 }
//************************************************************
void loop() {

  byte track = 1;
  // Set volume to maximum (0 to 30).
  Serial.print("Playing track =  ");
  Serial.println(track);
    // Play the first MP3 file on the SD card folder 1
  //player.start();                                                     
  player.playLargeFolder(01, 0001); 
   Serial.println("End Playing song");
  delay(10000);
}
//************************************************************

Uso una tarjeta sd kingston de 32 gb formateada en FAT32. Ya he probado formateandola a FAT16 y tampoco funcionó.

Hi,
Adjunto sketch que use en un esp32 y trabajo perfectamente. Tratalo para ver si te trabaja.
Yo tengo el micro seleccionada ESP32 Dev module. La tarjeta de sd tienes que formatearla como FAT32.

#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

// Use pins 2 and 3 to communicate with DFPlayer Mini
static const uint8_t PIN_MP3_TX = 17;  // Connects to module's RX
static const uint8_t PIN_MP3_RX = 16;  // Connects to module's TX
SoftwareSerial SS_player(PIN_MP3_RX, PIN_MP3_TX);

// Create the Player object
DFRobotDFPlayerMini player;
//***********************************************************
void setup() {
  // Init USB serial port for debugging
  Serial.begin(115200);
  // Init serial port for DFPlayer Mini
  SS_player.begin(9600);
 //player.begin(SS_player);
 
  //*********************** mp3 serial setup  ***********************
 delay(100);
 Serial.println("system running");
if (!player.begin(SS_player, false )) {
    Serial.println(F("Unable to begin mp3 player:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while (true) ;
 }
  player.EQ(DFPLAYER_EQ_NORMAL);
  player.outputDevice(DFPLAYER_DEVICE_SD);
  player.volume(18);
  player.setTimeOut(500);
  Serial.println(F("MP3 Player   Online"));
 }
//************************************************************
void loop() {

  byte track = 1;
  // Set volume to maximum (0 to 30).
  Serial.print("Playing track =  ");
  Serial.println(track);
    // Play the first MP3 file on the SD card folder 1
  //player.start();                                                     
  player.playLargeFolder(01, 0001); 
   Serial.println("End Playing song");
  delay(10000);
}
//************************************************************

Hola, probé tu codigo y tampoco funcionó.

La terminal me muestra esto --- Terminal on COM3 | 9600 8-N-1 --- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at https://bit.ly/pio-monitor-filters --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ��c␀�␅�1)���||���!1�system running MP3 Player Online Playing track = 1 End Playing song Playing track = 1 End Playing song Playing track = 1 End Playing song Playing track = 1 End Playing song

Pero no reproduce el audio que tengo en la carpeta.
A los milisegundos de mostrar el Playing track = 1, arroja el End Playing song.

Hi,
El led prende? Cuando estas tacando la musica el led debe de prender. Yo estoy usando un ESP32S y los pines son el TX = 17 y el RX = 16. Adjuto foto donde se ve el led encendido cuando esta tocando la cancion. Haz una cosa formatea la memoria fat32,Haz un folder llamado 01 y copia el file dentro del folder llamado 0001.mp3. Mira ver si te trabaja.

No, el led del DFPlayer nunca se enciende. Lo cual es raro porque el esp me muestra que logra hacer bien la conexion. Sin embargo no reproduce la pista de prueba que tengo en el.

Luego pruebo lo que me indicaste y te cuento.

Hi,
Ten seguro que tienes los cables a los pines correctos.
mp3 RX al TX = 17
mp3 TX al RX = 16


Hola, las conexiones estan bien.

Empiezo a pensar que mi dfplayer está defectuoso.

Hi,
Como tu estas usado un shield si tienes un voltimetro selecciona leer ohmios verifica que las conecciones estan bien hechas ya que los shields algunos veces tienen problemas en las conncciones. Lee la resistencia desde los pines del mp3 modulo a los pines del micro, Asi puedes verificar que tienes buenas conneciones. Si estan bien entonces es posible que el mp3 modulo no funciona. Yo uso ese mp3 modulo para que me de las horas habladas de un reloj digital usando un DS1307. y un micro NANO. Pregunta tu estas seguro que donde tienes las conecciones que salen del shield hacia el modulo estan correctas ya que normalmenta las conecciones del shield son las que estan cerca donde indica el numero del pin. Por lo tanto deberian estar en la linea de afuera. Ya que los shield que yo tengo son la linea de afuera. o sea la que estan mas cerca donde dice el numero del pin.

LOGRÉ HACERLO FUNCIONAR.
Seguí tu consejo de mover los cables a los pines que están mas cerca del número de pin.
Por si las dudas, también probé usando otra protoboard. Y en vez de alimentarlo por medio del usb de mi pc, lo alimenté por un tomacorrientes.
Y funcionó.

Gracias en serio por tu tiempo y tu paciencia. Al final mi DFPlayer funcionaba.

Eso sí, parece que conectó y reprodujo audio una sola vez, porque ahora intento conectarlo de nuevo para que reproduzca y no hay caso :confused:

Rectifico: logré hacerlo andar y esta vez alimentado por mi computadora.

El problema es el cable GND que no estaba haciendo buen contacto del lado del DFPlayer.


Hi.
Por eso es bueno tener un voltimetro. Cuando todo falla o no trabaja entonces es la hora de usar el voltimetro para ver si hay voltaje y los cables estan haciendo buenas coneciones. Bueno me alegro que ya esta funcionando.. Veo que el led esta prendido indicando que el mp3 player esta trabajando.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.