Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-13 06:57
In questo assemblaggio, abbiamo utilizzato un lettore mp3 con Arduino Uno, un mini amplificatore audio PAM8403 con regolazione del volume, un modulo mp3 DFPlayer Mini e una coppia di altoparlanti da 3 Watt.
Questo schema serve non solo per il lettore musicale, ma anche per consentire le funzioni vocali per un dispositivo barriera di parcheggio o un robot, tra gli altri. Questo montaggio consentirà il posizionamento di una voce registrata negli apparati. Questa voce sarà naturale e non sintetizzata. Per la maggior parte delle persone, queste sono caratteristiche preferibili rispetto alle alternative standard.
Per questo assemblaggio, utilizziamo specificamente Arduino Uno, ma puoi anche connetterti a ESP8266 o ESP32. Ovviamente sarà necessaria una regolazione sui perni.
Passaggio 1: scheda tecnica
Passaggio 2: modulo DFPlayer
Il modulo DFPlayer utilizza la comunicazione seriale RX TX, VCC, GND. Ha uscita a due altoparlanti e ingresso audio.
Passaggio 3: Mini amplificatore PAM8403
Passaggio 4: assemblaggio
Passaggio 5: biblioteche
Aggiungere la seguente libreria "DFRobotDFPlayerMini" per la comunicazione con il modulo mp3.
Accedi semplicemente a "Schizzo >> Includi librerie >> Gestisci librerie …"
Passaggio 6: codice sorgente
Inizieremo definendo le librerie e le costanti che useremo con il nostro codice.
Inizia creando un oggetto, il software seriale e un altro, che è myDFPlayer.
La variabile buf, che è di tipo String, servirà per memorizzare i dati provenienti dal Seriale Arduino, che saranno i comandi per il modulo MP3. La variabile "pausa" verrà utilizzata per indicare se la musica è in riproduzione o in pausa (pause = true, e indica che è in pausa, altrimenti è in riproduzione).
#include "SoftwareSerial.h"#include "DFRobotDFPlayerMini.h" //Inizia a serial por software nos pinos 10 e 11 SoftwareSerial mySoftwareSerial(10, 11); // RX, TX //Objeto responsável pela comunicação com o módulo MP3 (DFPlayer Mini) DFRobotDFPlayerMini myDFPlayer; //variável responsável per armazear os comandi inviados per controlar o player String buf; //variável responsável por armazenar o estado do player (0: tocando; 1: pausado) boolean pausa = false; //variável responsável por armazenar o stado da equalização //varia de 0 a 5 int equalizacao = 0; // (0 = Normal, 1 = Pop, 2 = Rock, 3 = Jazz, 4 = Classic, 5 = Bass)" //variável responsável por armazenar o total de músicas non presenta una scheda SD. int maxSongs = 0;
Impostare
In questo passaggio, mettiamo opzioni di stampe per darti indicazioni che sta montando il circuito, ad esempio con valutazioni di condizioni false.
void setup(){ //Comunicacao serial com o modulo mySoftwareSerial.begin(9600); //Inizializzazione di un seriale con Arduino Serial.begin(115200); //Verifica se o modulo esta responseendo e se o //cartao SD foi encontrado Serial.println(); Serial.println("DFRobot DFPlayer Mini"); Serial.println("Inizializzazione modulo DFPlayer… (3~5 secondi)"); if (!myDFPlayer.begin(mySoftwareSerial)) { Serial.println("Nao inicializado:"); Serial.println("1. Controllare come conexoes fa DFPlayer Mini"); Serial.println("2. Insira um cartao SD"); mentre (vero); } Serial.println(); Serial.println("Modulo DFPlayer Mini inicializado!"); //Definicoes iniciais myDFPlayer.setTimeOut(500); //Timeout seriale 500ms myDFPlayer.volume(10); //Volume 10 vai da 0 a 30 myDFPlayer. EQ(0); //Equalizacao normal //recupera o numero de Músicas encontradas no SD. maxSongs = myDFPlayer.readFileCounts(DFPLAYER_DEVICE_SD); Serial.println(); Serial.print("Numero de arquivos no cartao SD: "); Serial.println(maxSongs); //Mostra o menu di comandi menu_opcoes();
Menu Opzioni
Controlli l'intero assieme attraverso il monitor seriale. Quindi, ogni volta, lo schema stamperà il menu Opzioni che hai, con comandi, indicazioni.
void menu_opcoes(){ Serial.println(); Serial.println("Comando:"); Serial.print("[1-"); Serial.print(maxSongs); Serial.println("] Per selezionare o archiviare MP3"); Serial.println("[s] parar riproducao"); Serial.println("[p] pausa/continua una musica"); Serial.println("[e] seleciona equalizacao"); Serial.println(" [+ o -] aumenta ou diminui o volume"); Serial.println(); }
Ciclo continuo
void loop(){ //Aguarda l'accesso a tutti i dati serial while (Serial.available() > 0) { //recupera i dati all'accesso buf = Serial.readStringUntil('\n'); //Reproducao (índice da música) if ((buf.toInt() >= 1) && (buf.toInt() <= maxSongs)) { Serial.print("Reproduzindo musica: "); Serial.println(buf.toInt()); myDFPlayer.play(buf.toInt()); // per riprodurre la musica menu_opcoes(); } //Pausa/Continua a musica if (buf == "p") { if (pausa) { Serial.println("Continua musica…"); mioDFPlayer.start(); } else { Serial.println("Musica in pausada…"); myDFPlayer.pause(); } pausa = !pausa; menu_opcoes(); } //Parada if (buf == "s") { myDFPlayer.stop(); Serial.println("Musica parata!"); menu_opcoes(); } //Seleciona equalizacao if (buf == "e") { equalizacao++; if (equalizacao == 6) { equalizacao = 0; } myDFPlayer. EQ(equalizacao); Serial.print("Equalizacao: "); Serial.print(equalizacao); Serial.println(" (0 = Normale, 1 = Pop, 2 = Rock, 3 = Jazz, 4 = Classico, 5 = Basso)"); menu_opcoes(); } //Aumenta volume if (buf == "+") { myDFPlayer.volumeUp(); Serial.print("Volume attuale:"); Serial.println(myDFPlayer.readVolume()); menu_opcoes(); } //Diminui volume if (buf == "-") { myDFPlayer.volumeDown(); Serial.print("Volume attuale:"); Serial.println(myDFPlayer.readVolume()); menu_opcoes(); } } //mentre } //loop