Talaan ng mga Nilalaman:

MP3 Player With Arduino: 6 Hakbang
MP3 Player With Arduino: 6 Hakbang

Video: MP3 Player With Arduino: 6 Hakbang

Video: MP3 Player With Arduino: 6 Hakbang
Video: LDmicro 6: Arduino nano Breadboard Circuit (Microcontroller PLC Ladder Programming with LDmicro) 2024, Nobyembre
Anonim
Image
Image
Datasheet
Datasheet

Sa pagpupulong na ito, gumamit kami ng isang mp3 player na may Arduino Uno, isang mini PAM8403 sound amplifier na may pagsasaayos ng dami, isang mp3 module na DFPlayer Mini, at isang pares ng mga nagsasalita ng 3-Watt.

Naghahain ang scheme na ito hindi lamang para sa music player, ngunit pinapayagan din ang mga pag-andar ng boses para sa isang aparato ng hadlang sa paradahan o isang robot, bukod sa iba pa. Papayagan ng pagpupulong na ito ang paglalagay ng isang naitala na boses sa mga aparador. Ang boses na ito ay magiging natural at hindi na-synthesize. Para sa karamihan ng mga tao, ito ang mas kanais-nais na mga tampok kumpara sa karaniwang mga kahalili.

Para sa pagpupulong na ito, partikular na ginagamit namin ang Arduino Uno, ngunit maaari ka ring kumonekta sa ESP8266 o ESP32. Malinaw na, isang pagsasaayos ang kinakailangan sa mga pin.

Hakbang 1: Datasheet

Hakbang 2: Modyul ng DFPlayer

Module ng DFPlayer
Module ng DFPlayer

Gumagamit ang module ng DFPlayer ng serial na komunikasyon RX TX, VCC, GND. Mayroon itong output sa dalawang speaker at audio input.

Hakbang 3: Mini Amplifier PAM8403

Mini Amplifier PAM8403
Mini Amplifier PAM8403

Hakbang 4: Assembly

Assembly
Assembly

Hakbang 5: Mga Aklatan

Mga aklatan
Mga aklatan

Idagdag ang sumusunod na "DFRobotDFPlayerMini" library para sa komunikasyon sa mp3 module.

I-access lamang ang "Sketch >> Isama ang Mga Aklatan >> Pamahalaan ang Mga Aklatan …"

Hakbang 6: Source Code

Magsisimula kami sa pamamagitan ng pagtukoy sa mga aklatan at mga pare-pareho na gagamitin namin sa aming code.

Magsimula sa pamamagitan ng paglikha ng isang bagay, ang serial software, at isa pa, na myDFPlayer.

Ang variable ng buf, na kung saan ay uri ng String, ay maglilingkod upang maiimbak ang data na nagmumula sa Arduino Serial, na magiging mga utos para sa MP3 module. Gagamitin ang variable na "pause" upang ipahiwatig kung ang musika ay tumutugtog o naka-pause (pause = true, at ipinapahiwatig na naka-pause ito, kung hindi man ay tumutugtog ito).

# isama ang "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" // Inicia isang 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 por armazenar os comandos enviados para sa 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 estado da equalização // varia de 0 a 5 int equalizacao = 0; // (0 = Normal, 1 = Pop, 2 = Rock, 3 = Jazz, 4 = Klasik, 5 = Bass) "// variável responsável por armazenar o total de músicas na nagpapakita ng walang SD card. Int maxSongs = 0;

Pag-set up

Sa hakbang na ito, naglalagay kami ng mga pagpipilian ng mga kopya upang mabigyan ka ng mga pahiwatig na ito ay tumataas ang circuit, kasama ang mga pagsusuri ng mga maling kundisyon, halimbawa.

void setup () {// Comunicacao serial com o modulo mySoftwareSerial.begin (9600); // Inicializa isang serial do Arduino Serial.begin (115200); // Verifica se o modulo esta respondendo e se o // cartao SD foi encontrado Serial.println (); Serial.println ("DFRobot DFPlayer Mini"); Serial.println ("Inicializando modulo DFPlayer… (3 ~ 5 segundos)"); kung (! myDFPlayer.begin (mySoftwareSerial)) {Serial.println ("Nao inicializado:"); Serial.println ("1. Cheque as conexoes do DFPlayer Mini"); Serial.println ("2. Insira um cartao SD"); habang (totoo); } Serial.println (); Serial.println ("Modulo DFPlayer Mini inicializado!"); // Definicoes 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.readFileCount (DFPLAYER_DEVICE_SD); Serial.println (); Serial.print ("Numero de arquivos no cartao SD:"); Serial.println (maxSongs); // Mostra o menu de comandos menu_opcoes ();

Menu ng Mga Pagpipilian

Kinokontrol mo ang buong pagpupulong na ito sa pamamagitan ng serial monitor. Kaya't sa bawat oras, ang pamamaraan ay i-print ang Menu ng Mga Pagpipilian na mayroon ka, na may mga utos, mga direksyon.

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 reproducao"); Serial.println ("[p] pausa / Continua a musica"); Serial.println ("[e] seleciona equalizacao"); Serial.println ("[+ or -] aumenta ou diminui o volume"); Serial.println (); }

Loop

void loop () {// Aguarda a entrada de dados pela serial habang (Serial.available ()> 0) {// recupera os dados de entrada 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 ()); // dá play na música menu_opcoes (); } // Pausa / Continua isang musica kung (buf == "p") {kung (pausa) {Serial.println ("Continua musica…"); myDFPlayer.start (); } iba pa {Serial.println ("Musica pausada…"); myDFPlayer.pause (); } pausa =! pausa; menu_opcoes (); } // Parada kung (buf == "s") {myDFPlayer.stop (); Serial.println ("Musica parada!"); menu_opcoes (); } // Seleciona equalizacao kung (buf == "e") {equalizacao ++; kung (equalizacao == 6) {equalizacao = 0; } myDFPlayer. EQ (equalizacao); Serial.print ("Equalizacao:"); Serial.print (equalizacao); Serial.println ("(0 = Normal, 1 = Pop, 2 = Rock, 3 = Jazz, 4 = Classic, 5 = Bass)"); menu_opcoes (); } // Dami ng Aumenta kung (buf == "+") {myDFPlayer.volumeUp (); Serial.print ("Volume atual:"); Serial.println (myDFPlayer.readVolume ()); menu_opcoes (); } // Diminui volume if (buf == "-") {myDFPlayer.volumeDown (); Serial.print ("Volume atual:"); Serial.println (myDFPlayer.readVolume ()); menu_opcoes (); }} // habang} // loop

Inirerekumendang: