DF Player Mini no funciona con conector SD TF

Hola,

Hace unos días compré unas réplicas del DF Player Mini, MP3-TF-16P, y funcionan correctamente hasta que, en lugar de insertar la tarjeta micro SD directamente al DF Player, utilizo un conector SD-TF como el del siguiente link. En ese caso, el DF se inicializa pero no se ejecuta ninguna pista de audio y la luz azul cuando debe estar reproduciendo no se enciende. Lo raro es que tampoco se paraliza el código ni nada, es como si estuviera funcionando pero sin escucharse el audio y sin encenderse la luz.

El DF Player lo tengo conectado a un Arduino Uno.

He probado con diferentes tarjetas SD, con dos conectores SD-TF diferentes, y en un DF Player original, y todo funciona, por lo que por descarte pienso que el error debe estar en los módulos MP3-TF-16P.

¿Alguien sabe qué puede estar pasando? ¿Y si tiene solución?

Muchas gracias

Prueba a ver si el adaptador con la SD conectados a la lectora de SD de tu Notebook reproduce archivos mp3 o lo que estes queriendo escuchar.

Volviendo a tu Arduino, probaste el ejemplo SDtest.ino o algo asi que lee el tipo de formato en el que fue grabada la memoria SD?

Si estas usando la librería "DFRobotDFPlayerMini.h", añade al principio de tu "loop" el siguiente "if":

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

Además añade a tu código la siguiente función:

void printDetail(uint8_t type, int value) {
  switch (type) {
    case TimeOut:
      Serial.println(F("Tiºme 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 DFPlayerUSBInserted:
      Serial.println("USB Inserted!");
      myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);
      delay (500);
      myDFPlayer.randomAll();
      break;
    case DFPlayerUSBRemoved:
      Serial.println("USB Removed!");
      myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
      delay (500);
      myDFPlayer.randomAll();
      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;
  }
}

Repite las pruebas y mira por el monitor serie los mensajes a ver si obtienes alguna pista.

Muchas gracias por vuestras respuestas:

Sí, esto lo he probado y funciona. Puedo reproducir los archivos mp3 con el conector desde el ordenador sin problema.

Ese ejemplo no, pero si utilizo el conector lo que veo en el monitor serie al inicializar el código es:

DFRobot DFPlayer Mini Demo
Initializing DFPlayer ... (May take 3~5 seconds)
Unable to begin:
1.Please recheck the connection!
2.Please insert the SD card!

Esto no pasa si inserto la SD directamente, o si utilizo el DFPlayer Mini original, con la SD insertada directamente o con el conector.

Gracias por el código. Lo he ejecutado, y cuando tengo la tarjeta SD insertada directamente en el MP3-TF-16P se reproducen los archivos de audio y los mensajes que aparecen son "Time Out", "Card Removed", "Card Inserted"...

En el caso en el que utilizo el conector e intento reproducir un archivo, el mensaje es "File Index Out of Bound" (con la misma SD y contenido que sí funciona insertada directamente).

Por internet he visto que puede haber diferencias en los chips entre módulos DF Player mini o MP3-TF-16P, y de ahí entendería que hubieran diferencias en el comportamiento de ambos, pero no acabo de comprender qué sucede cuando se utiliza el conector en lugar de insertar directamente la tarjeta SD en el módulo.

Hi,
Formatiastes la memoria usando el formato fat32 y el tamano de la memoria tiene que ser de menos o 32gb.

He probado con una tarjeta SD de 2 GB y otra de 32 GB, formateándolas a FAT32 y exFAT y con los mismos archivos de audio en ambas, y el resultado es el mismo.

Todo funciona correctamente en el DFPlayer mini (con o sin conector), y en el caso del MP3-TF-16P, las dos tarjetas funcionan insertándolas directamente, pero no a través del conector.

Gracias,
Javi

Para mi que el problema es el cable SD-TF, por alguna razón las réplicas del DF Player Mini, MP3-TF-16P no reconocen el cable SD-TF

Para mí también, pero no consigo comprender qué sucede en el conector SD-TF para que se comporte distinto a utilizar la tarjeta directamente

La librería SD de Arduino no soporta exFAT, solo FAT16 y FAT32.

Podrías intentar abrir en donde se inserta la tarjeta y comprobar que hay continuidad con el macho del cable y que no hay ningún corto circuito entre los pines.

imagen

Eso me dice que no es del conector.

Eso me ocurría ocasionalmente al darle tensión al conjunto arduino+ Dfplayer, lo solucione colocando como primera orden del "setup" un delay de entre 500 y 1000. Arduino corre mas que el Dfplayer en el PoR

"Time Out. No me ha salido nunca, quizás porque en el setup tengo:

//----Mp3 control----
  myDFPlayer.reset(); //Reset the module cuando se resetea el arduino, el Dfplayer recuerda donde se quedo.
  delay (500);
  myDFPlayer.setTimeOut(500);//?????????????????????????????????????????????????????
  delay (500);

No me preguntes porque, lo arrastro desde el primer código que hice.

"Card Removed". Normal al sacar la SD.

"Card Inserted". Normal al volver a insértala. Lo único que el DF se queda parado, si quisieras que arrancara donde se quedo, en el código que te pase cambia el "CASE" correspondiente:

case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      myDFPlayer.start();
      break;

"File Index Out of Bound". Ni idea no me salido nunca ni logro reproducirlo,( no tengo ese conector). Pero no es el de "Unable to begin: ........ ", luego esta reconociendo la tarjeta pero no logra comunicarse con ella. Ni idea de lo que te esta ocurriendo.

Por dar palos de ciego, ¿Cómo conectas el DFplayer?
¿"SoftwareSerial.h" para redefinir los pines TX/RX del arduino?.
¿La tipica resistencia de 1K en la entrada RX del DFplayer?.
¿5V de alimentación?, ¿Externa o del Arduino?.

Yo probé los tres en que podía formatear la SD, y el único que no funcionó es el NTFS. Igualmente, ahora la tarjeta tiene el formato FAT32.

Generalmente me aparece el mensaje de "Unable to begin". Para sortear este fallo y poder probar algo más, lo que hice era iniciar el código con la tarjeta insertada directamente y una vez funcionaba lo cambiaba por la conexión a través del conector. Por lo que realmente no puedo asegurar que de inicio se reconozca la tarjeta a través del conector.

Conectado a los pines 10 y 11 del arduino, siguiendo los esquemas de ejemplo.
Utilizo la resistencia de 1K entre el pin 11 y el RX del DF Player.
Librerías "SoftwareSerial.h" y "DFRobotDFPlayerMini.h".
El DF Player se alimenta a través del Arduino.
El mismo circuito y conexiones lo utilizo para cambiar el DF Player Mini original por su réplica.

Esto me ha dado un poco de miedo hacerlo porque sólo tengo dos conectores ahora mismo para hacer pruebas y temo romperlo y que no pueda utilizarlo más. En su lugar, puesto que estos conectores funcionan y que la diferencia se encuentra en la parte de contacto con la réplica del DF Player Mini, he desmontado la carcasa de uno de los MP3-TF-16P para ver si de ahí podría salir alguna información nueva. Adjunto una foto con el módulo desmontado, la tarjeta y la zona del conector equivalente:

A simple vista yo no soy capaz ni tengo conocimientos suficientes para saber qué puede estar funcionando erróneamente cuando el contacto es con el conector y no con la SD directamente. He probado a ejecutar el código ejerciendo presión con la SD o con el conector en la zona donde debe estar insertada, pero el funcionamiento es el mismo (OK con la tarjeta, NOK con el conector).

Muchas gracias por vuestras respuestas.

Léete las reseñas de otros compradores en el LINK que aportaste en el post#1. Por ejemplo:

No esta muy claro que ese conector sea de buena calidad, yo en tu caso si estuviera a tiempo lo devolvería.
Saludos.

Ahora que pienso, si quieres alejar la tarjeta del Dfplayer, ¿ Porque no usas los pines USB +/- con 5V y gnd conectados a una hembra USB?.

Efectivamente hay posibilidades de que al abrir la hembra del cable el conector muera.
Podría ser que el contacto que te marco en la imagen que es el que cierra a GND cuando se inserta la tarjeta para informar de que hay tarjeta falle porque el conector macho del cable a simple vista parece que es mas estrecho que la tarjeta de memoria.
Puedes probar sin alimentar nada que cuando introduces la tarjeta el pin que te marco tiene continuidad con GND, y luego lo pruebas con el conector macho del cable.

imagen

¿Tienes un multímetro?
Si lo tienes, ponlo en la escala más baja de resistencia y mide si hay continuidad entre el pin más a la izquierda en la foto y GND cuando insertas el extensor.
Si no la hay haz la misma medición pero con la tarjeta directamente.
Si con la tarjeta hay continuidad pero con el extensor no, ya encontramos el problema.
El conector con formato TF está fuera de tolerancia y, sumado a la dudosa calidad del zócalo, por eso no hace contacto.

No conocía esa opción. ¿Permitiría quitar la SD y reproducir el audio desde un USB?

Tanto insertando la tarjeta como a través del conector hay continuidad entre ese pin que habéis marcado y GND. ¿Debería hacer alguna otra comprobación en el otro lado del conector? Pero me parece raro que sea problema del conector... porque sea de mejor o peor calidad, el conector con el DF Player original funciona...

Si fíjate en el trozo de código que te mande antes:

case DFPlayerUSBInserted:
      Serial.println("USB Inserted!");
      myDFPlayer.outputDevice(DFPLAYER_DEVICE_U_DISK);
      delay (500);
      myDFPlayer.randomAll();
      break;
    case DFPlayerUSBRemoved:
      Serial.println("USB Removed!");
      myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
      delay (500);
      myDFPlayer.randomAll();
      break;

Eso funciona correctamente. Lo probé con una SD con unas canciones en el directorio raíz colocada en el DFplayer y unas cuantas canciones en un pendrive. Al introducir el pendrive pasa automaticamente a reproducir lo que contiene, funcionando los comandos pause y start.
No probé una estructura de carpetas en el pendrive, eso pruébalo tu, usa ese Dfplayer que le has quitado la tapa al lector, (dudo que puedas volver a ponérsela), si no puedes volver a ponerle la tapa es una buena opción para no tener que tirarlo.

Un error del espesor de un pelo en el conector mas un zócalo de mala calidad (y el de la foto sin carcaza parece pésimo) con dudosas tolerancias puede darte más de un dolor de cabeza, aunque no te parezca.

Como ese pin es el card detect, se lo ve feo y tenias errores de tarjeta no insertada, podía ser que se hubiese armado la tormenta perfecta.
Lástima que no es algo tan sencillo de solucionar como eso. :man_facepalming:t2:

Lo único que se me ocurre es que el diseño de los clones no es tan inmune a los ruidos como el original y por eso no trabaja con el extensor.

De acuerdo. Parece que la mejor solución para no tener que tirar estas réplicas es sustituir la SD por el USB tal como propone @gonpezzi . Miraré esta alternativa.

Muchas gracias a todos por vuestras aportaciones, me ha servido para conocer un poco mejor el funcionamiento del DF Player.