Problemas inciando DFPlayer

O de un cable duppont, nunca se sabrá, lo importante es que ya ha arrancado.
Una cosa, aunque ese circuito que has montado funciona no es el optimo. Yo utilizo el siguiente:
dfplayer

  • Las GND implicadas como ves unidas.
  • En lugar de una resistencia de 1K, un autentico divisor de tensión, con esos valores de resistencias la señal de 5V generada por el pin TX del arduino queda convertida en 3V3 justo lo que necesita el pin RX del Dfplayer
  • La línea TX-Dfplayer ---->RX-Arduino directa, los 3V3 que genera el Dfplayer son leídos como HIGH por el arduino sin problemas.
  • El diodo en Vcc: Aunque el dfplayer puede funcionar entre 3V2 y 5V, en su datasheet indica claramente un valor tipico de 4V2 . Luego 5V - 0,7(caída en el diodo) = 4V3, mas cercana al valor recomendado.

Y yo particularmente conectaría el pin BUSY del Dfplayer con el pin 2 o 3 del arduino, según que caso podría simplificar la programación.

Muchas gracias por los consejos

He montado esto como lo decías, aunque como no tenía resistencias de 500 he puesto una de 330 y una de 100 en serie, hacen 430 y en la salida del división de tensión deberían salir (si no lo calculé mal) unos 3,5v... Aunque midiendo con el polímetro veo que sale unos 3,8 ...
Habré medido algo mal supongo...

Bueno, el caso es que funciona.

¿Usando el diodo ya podría alimentar sin problemas el dfplayer desde el Arduino ?

Bueno, sigo montando el proyecto, os voy actualizando con dudas

Muchas gracias !

Me alegro que vayas avanzando, pero hay algo que no me convence y es el tema de la alimentacion.

La salida de +5 del Mega puede entregar como maximo 800mA, y me sale que el DFPlayer puede consumir hasta 600mA, mas el consumo del micro, el led de power, los leds de TX/RX y el regulador de 3'3V., calculo que le queda de margen poco mas de 100mA, es para que lo tengas en cuenta si piensas conectarle al Mega mas leds u otros dispositivos que consuman.

Hola, pues en la alimentación también tengo bastante dudas...

¿Con una pila de 9v bastaría?
Quería usar algo así, recargable, para poder enchufar el juguete cuando se quede sin pilas.
¿Estas pilas son seguras?

¿Podría conectar el Arduino directamente a la pila por el puerto Vin y el dfplayer directamente a la pila también pero regulando la tensión a la necesaria?
¿Con un LM7805 o LM1117T valdría ?

Perdonad, pero en este tema no he investigado casi nada todavía (estoy muy pez en todo...) Pero ya que preguntas, si puedes aconsejarme como hacerlo se agradece.

Los componentes del proyecto son los de esta foto(cambiando el Uno por un nano) , más un potenciómetro para ajustar el volumen, creo que no añadiré nada más.

Habria que ver que consumo total tendria tu montaje final (veo que incluyes 4 leds en la protoboard) y forzando el volumen al maximo, y en funcion del consumo ver si con una pila de 1000mA te va a dar una duracion adecuada.

Yo personalmente para comprobar consumos en los prototipos utilizo los siguiente:

Y en funcion del consumo que me dé veo de que potencia tiene o tienen que tener las pilas.

Para mi es valido, También puedes sustituir esas dos resistencias en serie por dos de 1K en paralelo, que seguro tienes, el calculo es exactamente 3,33V.

No , no es cuestión del voltaje, aunque al bajar este bajara un poco el consumo, opino lo mismo que el compañero @tresvdoble , muy alto para alimentarlo desde el nano que solo te puede dar 500mA.
Esas baterías que indicas no las he usado nunca, pero léete las reseñas no son muy buenas.

Yo hace un par de años que compre y me van bastante, bien de este tipo:
https://es.aliexpress.com/item/1005002314012004.html
Un porta pilas para dos en serie y como dijiste antes:

Si ya los tienes úsalos, pero no te olvides de los condensadores que indica el fabricante y tendrás que refrigerarlos bien, (pasta térmica incluida). Son poco eficientes y lo mejor seria usar un modulo step-down , a modo de ejemplo , (existen muchos en el mercado):
https://www.amazon.es/TECNOIOT-Mini-360-Adjustable-Converter-Ultra-Small/dp/B07G4FM6ZW/ref=sr_1_1_sspa
Le ajustas la salida a 4V2 y suprimes el diodo que colocamos antes.

Ok, muchas gracias a los dos, voy a ver si compro los componentes que me faltan y puedo terminar el prototipo.
Os voy diciendo cómo va !

Bueno, pues ya estaría más o menos hecho el prototipo :smiley:

A falta de que le llegue el Nano y un potenciómetro deslizante que compré en AliExpress para ajustar el volumen estaría todo más o menos.

Como esto tardará en llegar todavía unas semanas iré soldando lo que pueda, Compré unas plaquitas de estas PCB y más o menos lo dispondría así:

¿Como lo veis?

A ver qué tal se me da soldar todo esto... ¿Usáis Flux para soldar? Yo no lo he usado nunca, vamos no he soldado casi nada...

Bueno, os voy poniendo avances.

Quizás sería mejor que mueva este hilo a "Proyectos" ¿No?

Gracias !

Pd: los audios son como borrador,hay que poner bien los sonidos, no la grabación esa rápida que hice, y normalizar el volumen para que suenen igual de volumen

Bien, veo que tienes muy bien encauzado el proyecto en cuanto a harware y software.

No, normalmente el alambre de estaño lleva un nucleó de resina de propiedades parecidas, el ultimo que copre fue este y no va mal.
https://www.amazon.es/Soldadura-Electronica-Sn99-0-7Cu-Solderding-Bricolaje/dp/B07TP2WRDC/ref=sr_1_1_sspa
Y otra cosa , no se te ocurra soldar el nano o el dfplayer directamente a las placas pcb utiliza conectores de este tipo:
https://www.amazon.es/Ociodual-Header-Hembra-Arduino-Robotica/dp/B07884JM15/ref=sr_1_42
Evalúa la opción de usar terminales de tornillo para inter conexionar las placas, te evitas las soldaduras entre ellas y el desmontaje para hacerlo.
https://www.amazon.es/Greluma-piezas-bloque-terminales-tornillo/dp/B08K32Q9Y9/ref=sr_1_10
Incluso para el nano ya las venden hechas y te evitas soldar.

Hola, Gracias por los consejos.
Me parece buena idea lo de los conectores para poder montar y desmontar más fácilmente en caso de tener que buscar algo que no funcione bien. Aunque creo que le dará más "altura" al proyecto... veré cómo meto todo esto en la carcasa que construiré...

Lo de no soldar el DFPlayer a la PCB ¿Es por no dar calor a los pines del chip o por qué no lo recomiendas?

En cuanto al estaño, estoy viendo que el que trae de muestra el soldador dice que tiene 1,6% de Flux, probaré primero con ese a ver qué tal.

Eso también, pero lo mas importante es que si un día tienes que cambiar el nano o el dfplayer para pruebas averías etc. Los tienes montados en "Zocalos" , te aseguro que con tantos pines son insoldables, sobre todo en esas PCB de agujeros pasantes entre las dos caras de la PCB.

OK, gracias, a ver si me llegan los pedidos y puedo continuar.

Por cierto, acabo de probar por primera vez esto del Chat GPT para ver por curiosidad cómo funcionaba esto de las IA y me ha dado por preguntar si puede hacer código para Arduino y sí que puede... me ha generado un código en nada... que luego habrá que revisar, pero menudo adelanto!

Le puse esto,con mi inglés de aquella manera, pero parece que lo ha entendido

i have a dfplayer mini to reproduce songs, an arduino Uno, and two push buttons.
I want a program that when you push a button the dfplayer starts reproducing the first song, if you push this button again the next song will be reproduced. The other button is to play the previous song

ha generado este código, con algunas indicaciones al final de instalar la libreria DFRobot, etc...

#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>

// Create SoftwareSerial object for communication with DFPlayer
SoftwareSerial mySerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;

// Pin definitions for buttons
const int nextButtonPin = 2;
const int prevButtonPin = 3;

// Variables to keep track of current song
int currentSong = 1;

void setup() {
  // Start serial communication for debugging
  Serial.begin(9600);

  // Start software serial for communication with DFPlayer
  mySerial.begin(9600);
  delay(1000);

  // Initialize DFPlayer
  if (!myDFPlayer.begin(mySerial)) {
    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."));

  // Set volume to maximum
  myDFPlayer.volume(30);

  // Set default song to play
  myDFPlayer.play(currentSong);

  // Configure button pins as inputs with pull-up resistors
  pinMode(nextButtonPin, INPUT_PULLUP);
  pinMode(prevButtonPin, INPUT_PULLUP);
}

void loop() {
  // Check if next button is pressed
  if (digitalRead(nextButtonPin) == LOW) {
    currentSong++;
    if (currentSong > myDFPlayer.readFileCounts()) {
      currentSong = 1;
    }
    myDFPlayer.play(currentSong);
    delay(500);
  }

  // Check if prev button is pressed
  if (digitalRead(prevButtonPin) == LOW) {
    currentSong--;
    if (currentSong < 1) {
      currentSong = myDFPlayer.readFileCounts();
    }
    myDFPlayer.play(currentSong);
    delay(500);
  }
}

Es algo bastante sencillo, pero está bien esto. Supongo que no hará del todo las cosas bien y tocará revisar, pero para una prueba y copiar lo que haga falta para luego adaptarlo es todo un adelanto

Perdón por el offtopic :slight_smile:

Hola de nuevo.

¿Sabéis cómo atenuar el pequeño chasquido que da el altavoz al conectar la corriente?

Probé con un condensador en la alimentación y también cambiándolo en la salida de los altavoces, pero sigue sonando:

Gracias !

Buenas de nuevo.

Estoy retomando la parte electrónica de este proyecto que tenía un poco en stand by mientras diseñaba la carcasa del juguete...

El caso es que estoy volviendo a montar todo y me estoy dando cuenta de un pequeño problema...
Parece que el DFPlayer necesita unos segundos más en arrancar que el Arduino y la primera vez que enciendo todo no Inicia bien, una vez ya ha tomado todo corriente, si pulso el Reset entonces sí parece que inicia bien y ya puedo poner la música.

Podéis ver en este vídeo lo que digo:

¿Sabéis cómo podría sincronizar el DFPlayer y el Arduino para que inicien bien sin ese Reset?

He probado a poner un Delay antes de iniciar el puerto serie pero no parece funcionar.
¿Debo añadir algo a la parte electrónica? o podría hacer algo por código?

Muchas gracias por adelantado.

EDIT; Conseguí solucionarlo.
Añadiendo el true, false en este IF:

  if (!myDFPlayer.begin(mySoftwareSerial), true, false) {  // Usar softwareSerial to communicate with mp3.
    Serial.println(F("No se pudo iniciar DFPlayer:"));
    Serial.println(F("1. Valida las conexiones"));
    Serial.println(F("2. Comprueba la tarjeta SD"));
    while (true){
      delay(0);
    }
  }
  Serial.println(F("DFPlayer Mini online."));

Me parece que lo correcto seria

if (!myDFPlayer.begin(mySoftwareSerial, false)){

Fuente:

Saludos

Pues por lo que indican en esos enlaces parece que sí, pruebo así a ver.
Muchas gracias!

Hola de nuevo.

Estoy montando el circuito en la base definitiva y ahora no suena ninguna canción.
El DFPlayer inicia bien, porque no se queda en el bucle este inicial de que no se puede iniciar...
Pero no sé qué pasa que ahora no suena nada, justo antes de montarlo aquí sí iba bien...
He probado con otro altavoz pero nada... el volumen está correcto...
Antes cuando encendía sonaba un pequeño chasquido del altavoz, ahora no noto eso...
¿qué me puede faltar?

Muchas gracias de antemano.

Edit:

Os pongo un vídeo para que veáis lo que pasa, al pulsar los botones parece que se comunica bien con el DFPlayer, se enciende su led... los botones de abajo son sonidos cortos así que el led dura poco encendido, pero los dos de arriba pone canciones enteras, así que el led dura más encendido.
Y parece ir bien, pero no se escucha nada de nada...

Solucionado, una mala conexión en los altavoces...

ya está casi terminado el proyecto, solo unos ajustes en los sonidos, algún retoque en la pintura y poco m ás...

1 Like

Me gustaria probar tu codigo en mi proyecto, para ver si me funciona

No problem, puedes descargar el proyecto entero en este enlace: