ho acquistato per arduino il serial mp3 v1.2, ma non riesco a fare partire la canzone che ho salvato sulla scheda sd.
Il serial mp3 l’ho alimentato tramite alimentazione esterna.
Ho provato a collegare il serial mp3 sia ad un paio di cuffiette che ad un altoparlante autoalimentato.
La SD è formattata in FAT.
Ho salvato un file in mp3 di circa 10 MB rinominandolo “001.mp3” nella cartella principale della sd.
Ho provato numerosi codici, mi sono fatto aiutare dalla AI perché ho poche competenze di programmazione, ma non riesco a farlo funzionare.
Il circuito sul serial mp3 player è stampigliato JC… dovrebbe essere un YX5600.
Ho tentato diversi codici ma senza risultato, mi potete dare un aiuto?
la versione del codice che avevo in mente deve partire automaticamente all’accensione, al massimo del volume e andare in loop su tutte le canzoni presenti sulla microsd, privo di tasti.
il codice:
include <SoftwareSerial.h>
// Pin modificati: RX=12, TX=13
SoftwareSerial mp3(12, 13); // RX, TX
// Comandi YX5300
#define CMD_SEL_DEV 0x09
#define DEV_TF 0x02
#define CMD_SET_VOLUME 0x06
#define CMD_PLAY_W_INDEX 0x03
static int8_t Send_buf[8] = {0};
// Funzione per inviare comandi al modulo
void sendCommand(byte command, byte dat1 = 0, byte dat2 = 0){
Send_buf[0] = 0x7E; // Start byte
Send_buf[1] = 0xFF; // Version
Send_buf[2] = 0x06; // Length
Send_buf[3] = command; // Command
Send_buf[4] = 0x01; // Feedback
Send_buf[5] = dat1; // Data1
Send_buf[6] = dat2; // Data2
Send_buf[7] = 0xEF; // End byte
for (uint8_t i = 0; i < 8; i++){
mp3.write(Send_buf[i]);
}
}
void setup() {
Serial.begin(9600);
mp3.begin(9600);
delay(500);
Serial.println("Inizializzazione modulo YX5300...");
// Seleziona la scheda TF
sendCommand(CMD_SEL_DEV, 0, DEV_TF);
delay(500);
// Imposta volume a 30 (massimo)
sendCommand(CMD_SET_VOLUME, 0, 30);
delay(500);
// Riproduce la prima traccia
sendCommand(CMD_PLAY_W_INDEX, 0, 1);
Serial.println("Riproduzione traccia 1 avviata.");
}
void loop() {
// Qui non serve fare nulla: la musica continuerà a suonare
}
Ciao,
come richiesto al punto 7 del REGOLAMENTO, per favore edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona <CODE/> nella barra degli strumenti per contrassegnarla come codice.
Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmdT su un Mac, sempre all'interno del IDE).
Ok, ti ringrazio.
Il codice però non è ancora indentato (il forum purtroppo fa questo se non lo si inserisce tra i tag CODE, devi aver solo aggiunto il tag al testo) ma essendo uno sketch relativamente breve si comprende abbastanza, quindi se vuoi segui le indicazioni (il Ctrl-T intendo, prima di incollare il codice) anche se per questo caso puoi anche lasciarlo così, ma poi per il futuro metti sempre il codice "buono"
PS: io purtroppo non so aiutarti perché non ho quel player, ma solo quelli "classici" i Mini...
Grazie, ho provato anche ad inserire il codice di esempio recuperato dal datasheet, su arduino lampeggia il led di RX, ma non riesco a sentire nulla in uscita dall serial mp3.
Ho tentato ad invertire i pin di RX e TX ma senza successo.
Il codice del produrtore è questo:
/*----------------------------------------------------
Simple music play with Serial MP3 Player GD3300D chip.
Copy the "exam.mp3" file to an empty SD card
Connect board Serial MP3 Player with Arduino:
TX --> Pin 10
RX --> Pin 11
GND --> GND
VCC --> 5V
----------------------------------------------------*/
#include <SerialMP3.h>
#define RX_PIN 12 // RX pin 12
#define TX_PIN 13 // TX pin 13
SerialMP3 mp3(RX_PIN, TX_PIN);
void setup() {
// put your setup code here, to run once:
mp3.showDebug(true); // print command send to Serial MP3 Player
Serial.begin(9600); // Start serial interface
mp3.init(); // Initialization Serial MP3 Player
}
void loop() {
// put your main code here, to run repeatedly:
mp3.play(); // play exam.mp3
delay(5000); // wait 2 second
}
Prova ad evitare di usare il pin 13, usa i pin indicati come esempio nel datasheet che ti ha linkato @gpb01, ossia 5 e 6 (collegati rispettivamente a TX e RX del modulo). Poi scarica ed usa il codice di esempio di quel datasheet, e vedi se funziona.
Dove vanno a finire i fili di alimentazione del modulo? Hai provato a collegarli ai +5V e GND di Arduino? Se usi un’alimentazione separata devi perlomeno unire tra di loro i GND, altrimenti non può funzionare.
avevo utilizzato un’alimentazione esterna per essere sicuro che non era un problema di alimentazione. alimentato anche da arduino il problema non si risolve. ho utilizzato anche i pin come indicato, ma nulla. su arduino lampeggia RX ma non si sente l’audio
Ne dubito di un malfunzionamento della scheda, perché l'ho anche sostituita acquistando un altra… ma sempre lo stesso risultato, credo che sto sbagliando qualcosa… le ho acquistate in amazzonia
Veramente nei commenti di quel codice leggo che è per chip GD3300D, mentre tu nel primo post hai messo una immagine che parla di YX5300/YX6300. Delle due l'una, intanto devi sapere/capire quale chip ha la tua board. Posta l'esatto link alla tua, dove l'hai comprata, e così vediamo.
Il link non dovevi leggerlo, ma provare ad usare QUELLA libreria (sempre se il tuo chip è YX5300).
Apri l'IDE, vai nella gestione librerie e cerca "SerialMP3" (tutto attaccato, senza virgolette): troverai DUE librerie, una per GD3300D/TD5580A ed una per YX5300. Installa quella che corrisponde al chip della tua board, quindi controlla bene i collegamenti (TTX su RX e RX su TX), prova uno degli sketch di esempio e vedi se ti funziona.