Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Dalam perakitan ini, kami menggunakan pemutar mp3 dengan Arduino Uno, penguat suara mini PAM8403 dengan penyesuaian volume, modul mp3 DFPlayer Mini, dan sepasang speaker 3-Watt.
Skema ini berfungsi tidak hanya untuk pemutar musik, tetapi juga untuk memungkinkan fungsi suara untuk perangkat penghalang parkir atau robot, antara lain. Perakitan ini akan memungkinkan penempatan suara yang direkam dalam peralatan. Suara ini akan alami dan tidak disintesis. Bagi kebanyakan orang, ini adalah fitur yang lebih disukai dibandingkan dengan alternatif standar.
Untuk perakitan ini, kami secara khusus menggunakan Arduino Uno, tetapi Anda juga dapat terhubung ke ESP8266 atau ESP32. Jelas, penyesuaian akan diperlukan pada pin.
Langkah 1: Lembar Data
Langkah 2: Modul DFPlayer
Modul DFPlayer menggunakan komunikasi serial RX TX, VCC, GND. Ini memiliki output ke dua speaker dan input audio.
Langkah 3: Penguat Mini PAM8403
Langkah 4: Perakitan
Langkah 5: Perpustakaan
Tambahkan perpustakaan "DFRobotDFPlayerMini" berikut untuk komunikasi dengan modul mp3.
Cukup akses "Sketsa >> Sertakan Perpustakaan >> Kelola Perpustakaan …"
Langkah 6: Kode Sumber
Kita akan mulai dengan mendefinisikan library dan konstanta yang akan kita gunakan dengan kode kita.
Mulailah dengan membuat satu objek, perangkat lunak serial, dan lainnya, yaitu myDFPlayer.
Variabel buf yang bertipe String akan berfungsi untuk menyimpan data yang berasal dari Serial Arduino yang akan menjadi perintah-perintah untuk modul MP3. Variabel "jeda" akan digunakan untuk menunjukkan apakah musik sedang diputar atau dijeda (jeda = benar, dan menunjukkan bahwa itu dijeda, jika tidak sedang diputar).
#include "SoftwareSerial.h"#include "DFRobotDFPlayerMini.h" //Inicia a serial por software nos pinos 10 e 11 SoftwareSerial mySoftwareSerial(10, 11); // RX, TX //Objeto respons untuk berkomunikasi dengan módulo MP3 (DFPlayer Mini) DFRobotDFPlayerMini myDFPlayer; //variável responsável por armazenar os comandos enviados para controlar o player String buf; //variável responsável untuk armazenar atau estado do player (0: tocando; 1: pauseado) boolean pausa = false; //variável responsável por armazenar dan 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 tidak menyajikan kartu SD. int maxSongs = 0;
Mempersiapkan
Pada langkah ini, kami menempatkan opsi cetakan untuk memberi Anda indikasi bahwa itu sedang memasang sirkuit, dengan evaluasi kondisi salah, misalnya.
void setup(){ //Komunikasi serial com o modulo mySoftwareSerial.begin(9600); //Inisialisasi serial yang dilakukan Arduino Serial.begin(115200); //Verifikasi 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 detik)"); if (!myDFPlayer.begin(mySoftwareSerial)) { Serial.println("Nao inicializado:"); Serial.println("1. Periksa seperti yang dilakukan kerucut DFPlayer Mini"); Serial.println("2. Insira um cartao SD"); sementara (benar); } Serial.println(); Serial.println("Modulo DFPlayer Mini inicializado!"); //Definisi ini adalah myDFPlayer.setTimeOut(500); // Batas waktu serial 500 ms myDFPlayer.volume(10); //Volume 10 dari 0 hingga 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("Nomor de arquivos no cartao SD: "); Serial.println(maxSongs); //Sebagian besar menu dari perintah menu_opcoes();
Menu Pilihan
Anda mengontrol seluruh perakitan ini melalui monitor serial. Jadi setiap kali, skema akan mencetak Menu Opsi yang Anda miliki, dengan perintah, arah.
void menu_opcoes(){ Serial.println(); Serial.println("Komando:"); Serial.print("[1-"); Serial.print(maxSongs); Serial.println("] Untuk pilihan MP3"); Serial.println("[s] parar reproducao"); Serial.println("[p] jeda/lanjutkan musik"); Serial.println("[e] seleciona equalizacao"); Serial.println("[+ atau -] aumenta ou mengecilkan volume"); Serial.println(); }
Lingkaran
void loop(){ //Menjaga entrada de dados pela serial while (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()); // untuk memainkan musik menu_opcoes(); } //Jeda/Lanjutkan a musica if (buf == "p") { if (pausa) { Serial.println("Continua musica…"); myDFPlayer.start(); } else { Serial.println("Musik jedaada…"); myDFPlayer.pause(); } jeda = ! jeda; menu_opcoes(); } //Parada if (buf == "s") { myDFPlayer.stop(); Serial.println("Musik 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 = Klasik, 5 = Bass)"); menu_opcoes(); } //Aumenta volume if (buf == "+") { myDFPlayer.volumeUp(); Serial.print("Volume sebenarnya:"); Serial.println(myDFPlayer.readVolume()); menu_opcoes(); } //Mengurangi volume if (buf == "-") { myDFPlayer.volumeDown(); Serial.print("Volume sebenarnya:"); Serial.println(myDFPlayer.readVolume()); menu_opcoes(); } } //sementara } //loop