ciao a tutti
sto cercando di usare il DFPlayer mini con Arduini Nano V3.
nel codice che riporto sotto faccio riprodurre all'accensione il primo file mp3.
il problema è che se sto collegato usb al pc funziona perfettamente, ma se alimento arduino nano da alimentatore non funziona!
ho provato a disabilitare da pc sotto Device Manager USB-SERIAL CH340 e anche stando collegato con usb al pc non funziona più. se riabilito la seriale su pc rifunziona!
potreste cortesemente aiutarmi?
grazie in anticipo a tutti
ciao
#include <SoftwareSerial.h>
#include <DFPlayerMini_Fast.h>
SoftwareSerial mySerial(10, 11); // RX, TX
DFPlayerMini_Fast myMP3;
void setup()
{
// Serial.begin(9600); con o senza non cambia nulla
mySerial.begin(9600);
myMP3.begin(mySerial);
myMP3.play(1);
}
void loop()
{
}
Ok, ma definisci "non funziona". Cos'è che non funziona? Non parte Arduino? O Arduino si accende ma il player no? O si accende anche il player ma non riproduce? Come hai collegato il player? E infine, quale player (metti un link all'esatto articolo che hai acquistato)?
il dfplayer mini è quello con sigla yx5200-24ss (non ho più il link perchè lo avevo comprato tanti anni fa)
il collegamento da DFplayer mini ad arduino è fatto con TX ed RX oltre al + e - che sono anch'essi collegati ad arduino. (ovviamente c'è un altroparlantino 8ohn 2W collegato su spk1 e spk2)
con "non funziona" intendo che all'accensione (collegando cavo usb a caricatore cellulare) non parte in play il file mp3 e il led del DFplayer mini non si accende.
come detto, invece se collego il cavo usb al pc (che ha i driver CH340) il player riproduce correttamente il file mp3 quindi i collegamenti credo siano corretti.
ripeto che se su pc (dove funziona tranquillamente) disabilito la porta seriale ch340 da device manger, il player non riproduce neanche da lì.
Ok, ma quello è il chip, non il modulo, magari cerca tu la sigla e posta il link a quello che ti sembra uguale al tuo. Magari se ricordi almeno da dove l'hai acquistato e/o chi te lo ha venduto puoi cercare sul relativo sito.
Non è comunque chiaro, perdonami. La connessione dipende anche dal tipo di board, ad esempio per interfaccia seriale con il modulo di Adrirobot andrebbe connesso in questo modo (a parte la differenza della board, qui una UNO):
Intanto TX ed RX in che senso? Pin D0 e D1? E sai che D0 e D1 sono la UART fisica che è anche connessa alla USB? Prova ad usare una SoftwareSerial ad esempio... Vedi QUI.
i collegamenti sono corretti perchè funziona se collegato al pc
il tx ed rx non li ho dettagliati perchè dal codice si vedeva:
SoftwareSerial mySerial(10, 11); // RX, TX
ho messo anche la resistenza da 1Kohm perchè sennò si sente rumore durante la riproduzione (quando connesso al pc)
ho provato anche ad usere i pin hardware di arduino ossia D0 e D1 (ho dovuto staccare mometaneamente il DFplayer mini per flashare il programma su arduni dato che, se ho capito bene, è la stessa seriale che arduino usa con miniSB).
il risultato è stato lo stesso -> riproduce se collegato alla porta usb del pc e non riproduce se collegato ad alimentatore usb.
detto ciò, dato che ho pensato dall'inizio a qualcosa che desse fastidio mi è venuto in mente che forse ci entrasse qualcosa la connessione seriale tra pc e arduino che in qualche modo, se assente, interferisce con la riproduzione del file mp3 e mi è venuto in mente che forse il DFpayer non fosse pronto
allora ho inserito come prima riga del Void Setup un Delay (2000); e adesso quando collego l'arduino ad una qualunque fonte di alimentazione, dopo 2 secondi FUNZIONA e parte la riproduzione del file mp3.
pensare che son 2gg che mi sbatto con modifiche e contromodifiche ed è bastato un delay!!!
ringrazio tutti per aver cercato di aiutarmi e mi scuso se non sono stato sufficientemente chiaro nello spiegare il problema.
mi scuso anche per aver, poi, risolto da solo.
Si, perdonami, mi era sfuggito. E' una domanda ormai "di routine" quando si tratta di problemi legati alla seriale
Bene! Anche se non mi spiego molto questa cosa, forse non è "pronto" perché all'attivazione (ossia quando si collega l'alimentazione per la prima volta, cosa diversa dall'attivazione via seriale USB) deve in qualche modo leggere l'indice dei file.
Ma l'importante è aver risolto.
io sono sepre per cercare di capire, ma in questo caso non ci sono riuscito.
unica cosa che mi viene in mente è che per ativare la comunicazione seriale tra arduino a DFplayer serva del tempo e che invece quando si connette al pc, in qualche modo accelera tale processo e il DFFplayer è già pronto.
comunque ho povato delay(500) e non era sufficiente e sono attivato a 1000 con il risultato che mi serve.
resta un mistero!
mah
adesso devo capire come usare il pin BUSY per poter usare il codice all'interno di un programma più complesso che sto realizzando.
Quello che ti posso dire per certo è che quella libreria che stai usando non fa alcun controllo "reale" sull'effettiva presenza di comunicazione con il modulo.
Ti suggerisco di usarne un'altra.
Tieni conto anche che quando colleghi il tuo Arduino alla seriale del PC, il micro si resetta mentre il player no ed ha quindi tutto il tempo di inizializzarsi come deve.
Probabilmente questo "ritardo" è sufficiente per fare in modo che subito dopo il reset la comunicazione con il modulo vada a buon fine.
#include <DFMiniMp3.h>
......
DfMp3 myMP3(Serial2);
.....
void setup() {
Serial.begin(115200);
myMP3.begin(9600);
myMP3.reset();
max_num_track = myMP3.getTotalTrackCount();
if (max_num_track) {
Serial.print("Total track number on SD: ")
Serial.println(max_num_track);
}
else
Serial.println("Error! SD missing or DFPlayer not connected");
myMP3.setVolume(25);
myMP3.stop();
Il pin BUSY è nello stato LOW fintanto che il player si trova in riproduzione e lo puoi quindi testare per capire se la traccia è partita correttamente.
Non c'entra con il problema specifico, ma, magari, può interessare ...
.... ho basato un progetto (che è stato poi pubblicato su Elettronica In) sulla versione con "flash" invece che "SD" di quel riproduttore audio ... il tutto è dettagliato su GitHub inclusi sorgenti, librerie usate (alcune corrette perché contenevano degli errori) e documentazione.
E' un progetto piuttosto articolato e fa un ampio uso del modulo che ho preso da DFrobot.
@cotestatnt
grazie mille per il codice che hai condiviso, proverò in questo modo dato che sto avendo problemi anche nell'uso di BUSY con l'attuale libreria che sto usando
@gpb01
grazie anche a te per aver condiviso la tua esperienza e soprattutto per i link (gran cosa avere un progetto pubblicato su elettronica in - complimenti)
sapete se c'è un modo per togliere il suono "din din" all'accensione del modulo DFplayer mini?
lo fa anche in modalità standalone e quindi non è colpa di arduino
ho provato a mettere un condensatore in serie all'altoparlante perchè il suono sembrava prodotto dalla tensione continua all'accensione (come se fosse un picco di tensione) ma non ho risolto.
pensavo di interporre un relè, per tenere staccato l'altoparlante per un paio di secondi all'avvio, ma prima che mi sbatto magari qualcuno ha trovato altre soluzioni