Mafunzo ya ESP32 41/55 - Kicheza MP3 kwa kutumia kadi ya Micro SD | Kifurushi cha Kujifunza cha ESP32 IoT cha SunFounder
Katika mafunzo haya, tutaunda kicheza MP3 kwa kutumia kidhibiti cha ESP32 na kadi ndogo ya SD. ESP32 itasoma faili za sauti zilizohifadhiwa kwenye kadi ndogo ya SD na kutoa sauti kupitia amplifier ya sauti na spika. Mradi huu unachanganya vipengele mbalimbali, vikiwemo ESP32, amplifier ya sauti, na kadi ndogo ya SD, ili kukuwezesha kucheza muziki kwa njia rahisi.
Katika mchakato wote, tutajadili uunganishaji wa waya unaohitajika, usimbaji, na jinsi ya kutatua matatizo ya kawaida. Kwa mwongozo zaidi wa kuona, hakikisha umeangalia video inayohusiana (katika video saa 00:00).
Vifaa Vimeelezwa
Vipengele vikuu vinavyotumika katika mradi huu ni pamoja na kidhibiti cha ESP32, kadi ndogo ya SD, amplifier ya sauti, na spika. ESP32 ni kidhibiti chenye nguvu kilicho na Wi-Fi na Bluetooth zilizojengewa ndani, na kufanya kiwe bora kwa miradi ya IoT. Kitashughulikia usindikaji na udhibiti wa uchezaji wa sauti.
Kadi ndogo ya SD hutumika kuhifadhi faili za sauti katika muundo wa MP3. Inaunganishwa na ESP32 na inaruhusu programu kusoma faili na kutuma data ya sauti kwa amplifier. Amplifier ya sauti inachukua ishara ya dijiti kutoka ESP32 na kuiimarisha ili kuendesha spika, kuruhusu sauti isikike.
Maelezo ya Datasheet
| Mtengenezaji | SunFounder |
|---|---|
| Nambari ya sehemu | ESP32 |
| Voltage ya Logic/IO | 3.3 V |
| Voltage ya usambazaji | 5 V |
| Mkondo wa pato (kwa kila chaneli) | 2 A max |
| Mkondo wa kilele (kwa kila chaneli) | 3 A max |
| Mwongozo wa mzunguko wa PWM | hadi 40 kHz |
| Viwango vya kuingiza mantiki | 0.3 x VCC (chini), 0.7 x VCC (juu) |
| Kushuka kwa voltage / RDS(on) / kueneza | 0.15 V |
| Mipaka ya joto | 85 °C |
| Kifurushi | WROOM-32 |
| Vidokezo / lahaja | Inaoana na maktaba mbalimbali za sauti |
- Hakikisha kadi ndogo ya SD imeumbizwa kama FAT32.
- Tumia resistor kwa kuunganisha amplifier ya sauti ili kuzuia upotoshaji.
- Weka viunganisho vya usambazaji wa nguvu vikiwa thabiti ili kuepuka usumbufu.
- Angalia waya kwa viunganisho vilivyolegea kabla ya kuwasha mfumo.
- Fuatilia pato la serial kwa taarifa za utatuzi.
- Tumia spika za impedance ya chini kwa ubora bora wa sauti.
- Kwa utendaji bora, hakikisha ESP32 haijalemewa na kazi wakati wa kucheza sauti.
SD_MMC hutumika kwa ufikiaji wa kadi ndogo ya SD, na AudioOutputI2S hutumika kwa pato la sauti.
Maagizo ya Uunganishaji wa Waya


Ili kuunganisha vipengele pamoja, anza kwa kuunganisha usambazaji wa nguvu. Unganisha 5 V kutoka ESP32 kwenye pini ya VCC ya amplifier ya sauti. Kisha, unganisha pini ya ardhi kutoka ESP32 kwenye pini ya ardhi ya amplifier. Pini ya pato la sauti kutoka ESP32, kwa kawaida GPIO25, inapaswa kuunganishwa kwenye pini ya kuingiza ya amplifier kupitia resistor ya 10 kΩ.
Kwa spika, unganisha kwenye pini za pato za amplifier ya sauti. Kumbuka kwamba spika haina polarity, kwa hivyo unaweza kuunganisha kwa njia yoyote. Ingiza kadi ndogo ya SD kwenye sehemu iliyotengwa kwenye ESP32. Hakikisha umeangalia mara mbili viunganisho vyote kabla ya kuwasha mfumo.
Mifano ya Msimbo na Mwongozo
Katika msimbo uliotolewa, tunaanza kwa kujumuisha maktaba muhimu za uchezaji wa sauti na ufikiaji wa kadi ya SD. Vitambulisho vikuu ni mp3, file, na out, ambavyo vinawakilisha jenereta ya MP3, chanzo cha faili ya sauti, na pato la sauti, mtawalia.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;
Hapa, tunatangaza viashiria vya jenereta ya MP3 na chanzo cha faili ya sauti. Katika kazi ya setup(), tunaanzisha mawasiliano ya serial na kadi ya SD.
void setup() {
Serial.begin(115200);
if (!SD_MMC.begin()) {
Serial.println("Kuweka kadi ya SD kumeshindwa!");
}
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
out = new AudioOutputI2S(0, 1);
}
Katika kipande hiki, tunaangalia kama kadi ya SD imewekwa kwa mafanikio. Ikishindikana, ujumbe wa hitilafu unachapishwa. Kisha tunaweka faili ya MP3 na hali ya pato la sauti.
void loop() {
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
} else {
Serial.println("MP3 imekamilika");
delay(1000);
}
}
Kitanzi hiki kinaangalia kama faili ya MP3 bado inacheza. Ikikosa kucheza, kinachapisha ujumbe unaoonyesha kwamba uchezaji umekamilika. Msimbo kamili utapakiwa chini ya makala kwa marejeleo zaidi.
Maonyesho / Nini cha Kutarajia
Mara tu kila kitu kitakapounganishwa na msimbo kupakiwa, unapaswa kusikia sauti ikicheza kupitia spika wakati kadi ndogo ya SD imeingizwa. Hakikisha umewasha upya ESP32 baada ya kuingiza kadi. Ikiwa sauti haichezi, angalia waya na uhakikishe faili ya sauti imepewa jina sahihi katika msimbo (katika video saa 05:00).
Makosa ya kawaida ni pamoja na kutoifomati kadi ndogo ya SD vizuri au kutumia muundo wa faili za sauti usiotumika. Hakikisha faili ziko katika muundo wa MP3 na zimewekwa kwenye saraka kuu au folda maalum kama inavyohitajika.
Vidokezo vya Muda wa Video
- 00:00 Mwanzo
- 2:19 Utangulizi wa mradi
- 4:27 Ukurasa wa hati
- 5:32 Uunganishaji wa waya kwa amplifier ya sauti
- 8:00 Kuumbiza kadi ndogo ya SD kwa ESP32
- 10:16 Maktaba na Msimbo
- 15:16 Kuchagua bodi ya ESP32 na COM port katika Arduino IDE
- 16:58 Kucheza Wimbo kwa kutumia ESP32 kutoka kadi ndogo ya SD
- 19:14 Maonyesho ya pili kwa kutumia betri ya 18650
#include "AudioFileSourceSD_MMC.h"
#include "AudioOutputI2S.h"
#include "AudioGeneratorMP3.h"
#include "SD_MMC.h"
#include "FS.h"
// Declare pointers for the MP3 generator, file source, and output.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;
void setup() {
// Start the serial communication.
Serial.begin(115200);
delay(1000);
// Initialize the SD card. If it fails, print an error message.
if (!SD_MMC.begin()) {
Serial.println("SD card mount failed!");
}
// Open the MP3 file from the SD card. Replace "/To Alice.mp3" with your own MP3 file name.
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
// Set up the I2S output on ESP32's internal DAC.
out = new AudioOutputI2S(0, 1);
// Set the output to mono.
out->SetOutputModeMono(true);
// Initialize the MP3 generator with the file and output.
mp3 = new AudioGeneratorMP3();
mp3->begin(file, out);
}
void loop() {
// If the MP3 is running, loop it. Otherwise, stop it.
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
}
// If the MP3 is not running, print a message and wait for 1 second.
else {
Serial.println("MP3 done");
delay(1000);
}
}
Common Course Links
Common Course Files
Resurser och referenser
-
DokumentationESP32 Tutorial 41/55- SunFounder doc page for playing music from memory carddocs.sunfounder.com
Filer📁
Inga filer tillgängliga.