Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Nesta montagem, utilizamos um mp3 player com Arduino Uno, um mini amplificador de som PAM8403 com ajuste de volume, um módulo mp3 DFPlayer Mini e um par de alto-falantes de 3 watts.
Este esquema serve não só para o reprodutor de música, mas também para permitir funções de voz para um dispositivo de barreira de estacionamento ou um robô, entre outros. Esta montagem permitirá a colocação de uma voz gravada nos aparelhos. Essa voz será natural e não sintetizada. Para a maioria das pessoas, esses recursos são preferíveis em comparação com as alternativas padrão.
Para esta montagem, estamos usando especificamente o Arduino Uno, mas você também pode se conectar ao ESP8266 ou ESP32. Obviamente, será necessário um ajuste nos pinos.
Etapa 1: folha de dados
Etapa 2: Módulo DFPlayer
O módulo DFPlayer usa a comunicação serial RX TX, VCC, GND. Possui saída para dois alto-falantes e entrada de áudio.
Etapa 3: Mini Amplificador PAM8403
Etapa 4: Montagem
Etapa 5: Bibliotecas
Adicione a seguinte biblioteca "DFRobotDFPlayerMini" para comunicação com o módulo mp3.
Basta acessar "Sketch >> Incluir Bibliotecas >> Gerenciar Bibliotecas…"
Etapa 6: Código Fonte
Começaremos definindo as bibliotecas e constantes que usaremos com nosso código.
Comece criando um objeto, o software serial, e outro, que é myDFPlayer.
A variável buf, que é do tipo String, servirá para armazenar os dados vindos do Arduino Serial, que serão os comandos para o módulo MP3. A variável "pause" será usada para indicar se a música está tocando ou pausada (pause = true, e indica que está em pausa, caso contrário, está tocando).
#include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" // Inicia um software por serial 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 por armazenar os comandos para controlar o jogador 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 estado da equalização // varia de 0 a 5 int equalizacao = 0; // (0 = Normal, 1 = Pop, 2 = Rock, 3 = Jazz, 4 = Clássico, 5 = Baixo) "// variável responsável por armazenar o total de músicas no cartão SD. Int maxSongs = 0;
Configurar
Nesta etapa, colocamos opções de impressos para dar indicações de que está montando o circuito, com avaliações de condições falsas, por exemplo.
void setup () {// Comunicacao serial com o modulo mySoftwareSerial.begin (9600); // Inicializa um serial do Arduino Serial.begin (115200); // Verifica se o módulo esta respondendo e se // cartao SD foi encontrado Serial.println (); Serial.println ("DFRobot DFPlayer Mini"); Serial.println ("Inicializando modulo DFPlayer… (3 ~ 5 segundos)"); if (! myDFPlayer.begin (mySoftwareSerial)) {Serial.println ("Nao inicializado:"); Serial.println ("1. Cheque as conexoes do DFPlayer Mini"); Serial.println ("2. Insira um cartao SD"); enquanto (verdadeiro); } Serial.println (); Serial.println ("Módulo DFPlayer Mini inicializado!"); // Definições iniciais myDFPlayer.setTimeOut (500); // Timeout serial 500ms myDFPlayer.volume (10); // Volume 10 vai de 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 de comandos menu_opcoes ();
Menu de Opções
Você controla toda a montagem por meio do monitor serial. Assim, a cada vez, o esquema estará imprimindo o Menu de Opções que você possui, com comandos, orientações.
void menu_opcoes () {Serial.println (); Serial.println ("Comandos:"); Serial.print ("[1-"); Serial.print (maxSongs); Serial.println ("] Para selecionar o arquivo MP3"); Serial.println ("[s] parar reprodução"); Serial.println ("[p] pausa / continua a musica"); Serial.println ("[e] seleciona equalizacao"); Serial.println ("[+ ou -] aumenta ou dentro do volume"); Serial.println (); }
Ciclo
void loop () {// Aguarda a entrada de dados pela serial while (Serial.available ()> 0) {// recupera os dados de entrada buf = Serial.readStringUntil ('\ n'); // Reprodução (índice da música) if ((buf.toInt ()> = 1) && (buf.toInt () <= maxSongs)) {Serial.print ("Reproduzindo musica:"); Serial.println (buf.toInt ()); myDFPlayer.play (buf.toInt ()); // dá play na música menu_opcoes (); } // Pausa / Continua a musica if (buf == "p") {if (pausa) {Serial.println ("Continua musica…"); myDFPlayer.start (); } else {Serial.println ("Musica pausada…"); myDFPlayer.pause (); } pausa =! pausa; menu_opcoes (); } // Parada if (buf == "s") {myDFPlayer.stop (); Serial.println ("Musica parada!"); 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 = Normal, 1 = Pop, 2 = Rock, 3 = Jazz, 4 = Clássico, 5 = Baixo)"); menu_opcoes (); } // Aumenta o volume if (buf == "+") {myDFPlayer.volumeUp (); Serial.print ("Volume atual:"); Serial.println (myDFPlayer.readVolume ()); menu_opcoes (); } // Diminui o volume if (buf == "-") {myDFPlayer.volumeDown (); Serial.print ("Volume atual:"); Serial.println (myDFPlayer.readVolume ()); menu_opcoes (); }} // enquanto} // loop