ESP32 Tutoriaal 41/55 - MP3-speler met behulp van Micro SD-kaart | SunFounder se ESP32 IoT-leerkit
In hierdie tutoriaal gaan ons 'n MP3-speler skep met behulp van die ESP32-mikrobeheerder en 'n mikro-SD-kaart. Die ESP32 sal klanklêers wat op die mikro-SD-kaart gestoor is, lees en die klank deur 'n klankversterker en luidspreker uitset. Hierdie projek kombineer verskeie komponente, insluitend die ESP32, 'n klankversterker en 'n mikro-SD-kaart, om jou in staat te stel om musiek op 'n eenvoudige manier te speel.
Dwarsdeur die proses sal ons die nodige bedrading, kodering en hoe om algemene probleme op te los, bespreek. Vir meer visuele leiding, maak seker dat jy die gepaardgaande video (in video by 00:00) kyk.
Hardeware Verduidelik
Die hoofkomponente wat in hierdie projek gebruik word, sluit die ESP32-mikrobeheerder, 'n mikro-SD-kaart, 'n klankversterker en 'n luidspreker in. Die ESP32 is 'n kragtige mikrobeheerder met ingeboude Wi-Fi- en Bluetooth-vermoëns, wat dit ideaal maak vir IoT-projekte. Dit sal die verwerking en beheer van klankafspeel hanteer.
Die mikro-SD-kaart word gebruik om klanklêers in MP3-formaat te stoor. Dit verbind met die ESP32 en stel die program in staat om die lêers te lees en klankdata na die versterker te stuur. Die klankversterker neem die digitale sein van die ESP32 en versterk dit om die luidspreker aan te dryf, sodat klank gehoor kan word.
Datablad Besonderhede
| Vervaardiger | SunFounder |
|---|---|
| Deelnommer | ESP32 |
| Logika/IO-spanning | 3.3 V |
| Toevoerspanning | 5 V |
| Uitsetstroom (per kanaal) | 2 A maks |
| Piekstroom (per kanaal) | 3 A maks |
| PWM-frekwensie riglyn | tot 40 kHz |
| Insetlogika-drempels | 0.3 x VCC (laag), 0.7 x VCC (hoog) |
| Spanningsval / RDS(on) / versadiging | 0.15 V |
| Termiese limiete | 85 °C |
| Pakket | WROOM-32 |
| Notas / variante | Verenigbaar met verskeie klankbiblioteke |
- Maak seker die mikro-SD-kaart is as FAT32 geformateer.
- Gebruik 'n resistor om die klankversterker te verbind om vervorming te voorkom.
- Hou kragtoevoerverbindings stabiel om onderbrekings te vermy.
- Kontroleer bedrading vir los verbindings voordat die stelsel aangeskakel word.
- Monitor die reeksuitset vir ontfoutingsinligting.
- Gebruik lae-impedansie luidsprekers vir beter klankgehalte.
- Vir beste werkverrigting, maak seker die ESP32 is nie oorlaai met take terwyl klank gespeel word nie.
SD_MMC word gebruik vir mikro-SD-toegang, en AudioOutputI2S word vir klankuitset gebruik.
Bedradingsinstruksies


Om die komponente saam te bedraad, begin deur die kragtoevoer te verbind. Verbind die 5 V van die ESP32 aan die VCC-pen van die klankversterker. Verbind dan die grondpen van die ESP32 aan die grondpen van die versterker. Die klankuitsetpen van die ESP32, gewoonlik GPIO25, moet deur 'n 10 kΩ-resistor aan die insetpen van die versterker verbind word.
Vir die luidspreker, verbind dit aan die uitsetpenne van die klankversterker. Let op dat die luidspreker geen polariteit het nie, so jy kan dit in enige rigting verbind. Plaas die mikro-SD-kaart in die aangewese gleuf op die ESP32. Maak seker dat jy al die verbindings dubbel nagaan voordat die stelsel aangeskakel word.
Kode Voorbeelde & Deurloop
In die verskafde kode begin ons deur die nodige biblioteke vir klankafspeel en SD-kaarttoegang in te sluit. Die hoofidentifiseerders is mp3, file en out, wat onderskeidelik die MP3-generator, die klanklêerbron en die klankuitset verteenwoordig.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;
Hier verklaar ons wysers vir die MP3-generator en die klanklêerbron. In die setup()-funksie initialiseer ons die reekskommunikasie en die SD-kaart.
void setup() {
Serial.begin(115200);
if (!SD_MMC.begin()) {
Serial.println("SD-kaart montering misluk!");
}
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
out = new AudioOutputI2S(0, 1);
}
In hierdie uittreksel kontroleer ons of die SD-kaart suksesvol gemonteer is. As dit misluk, word 'n foutboodskap gedruk. Ons stel dan die MP3-lêer en die klankuitsetmodus op.
void loop() {
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
} else {
Serial.println("MP3 klaar");
delay(1000);
}
}
Hierdie lus kontroleer of die MP3-lêer steeds speel. As dit nie die geval is nie, druk dit 'n boodskap wat aandui dat die afspeel voltooi is. Die volle kode sal onder die artikel laai vir verdere verwysing.
Demonstrasie / Wat om te Verwag
Sodra alles bedraad is en die kode opgelaai is, behoort jy die klank deur die luidspreker te hoor speel wanneer die mikro-SD-kaart ingesit word. Maak seker dat jy die ESP32 herstel nadat jy die kaart ingesit het. As die klank nie speel nie, kontroleer die bedrading en maak seker die klanklêer is korrek in die kode benoem (in video by 05:00).
Algemene slaggate sluit in om nie die mikro-SD-kaart korrek te formateer nie of om onondersteunde klanklêerformate te gebruik. Maak altyd seker dat die lêers in MP3-formaat is en in die wortelgids of gespesifiseerde vouer geplaas word soos nodig.
Video Tydstempels
- 00:00 Begin
- 2:19 Inleiding tot die projek
- 4:27 Dokumentasiebladsy
- 5:32 Bedrading vir klankversterker
- 8:00 Formateer mikroSD-kaart vir ESP32
- 10:16 Biblioteek en Kode
- 15:16 Kies ESP32-bord en COM-poort in Arduino IDE
- 16:58 Speel Liedjie met ESP32 vanaf Mikro SD-kaart
- 19:14 Tweede demonstrasie met 18650-battery
#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
Hulpbronne en verwysings
-
DokumentasieESP32 Tutorial 41/55 - SunFounder doc page for playing music from memory carddocs.sunfounder.com
Lêers📁
Geen lêers beskikbaar.