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:
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.
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
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.
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.
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
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
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."));
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...