ESP32 оқулығы 41/55 - Micro SD картасын қолданып MP3 ойнатқыш | SunFounder компаниясының ESP32 IoT оқу жиынтығы
Бұл оқулықта біз ESP32 микроконтроллері мен микро SD картасын пайдаланып MP3 ойнатқышын жасаймыз. ESP32 микро SD картасында сақталған аудио файлдарды оқиды және дыбысты аудио күшейткіш пен динамик арқылы шығарады. Бұл жоба ESP32, аудио күшейткіш және микро SD картасы сияқты әртүрлі компоненттерді біріктіріп, музыканы қарапайым түрде ойнатуға мүмкіндік береді.
Бүкіл процесс барысында біз қажетті сым қосылымдарын, кодтауды және жиі кездесетін мәселелерді қалай шешуге болатынын талқылаймыз. Қосымша көрнекі нұсқаулар алу үшін байланысты бейнені міндетті түрде қараңыз (бейнеде 00:00).
Аппараттық құралдар түсіндірмесі
Бұл жобада қолданылатын негізгі компоненттерге ESP32 микроконтроллері, микро SD картасы, аудио күшейткіш және динамик жатады. ESP32 - кірістірілген Wi-Fi және Bluetooth мүмкіндіктері бар қуатты микроконтроллер, бұл оны IoT жобалары үшін өте қолайлы етеді. Ол аудио ойнатуды өңдеу мен басқаруды жүзеге асырады.
Микро SD картасы MP3 форматындағы аудио файлдарды сақтау үшін қолданылады. Ол ESP32-ге қосылады және бағдарламаға файлдарды оқуға және аудио деректерді күшейткішке жіберуге мүмкіндік береді. Аудио күшейткіш ESP32-ден цифрлық сигналды қабылдап, оны динамикті басқару үшін күшейтеді, осылайша дыбыс естіледі.
Деректер парағының мәліметтері
| Өндіруші | SunFounder |
|---|---|
| Бөлшек нөмірі | ESP32 |
| Логика/IO кернеуі | 3.3 В |
| Қоректендіру кернеуі | 5 В |
| Шығыс тогы (арна үшін) | 2 А макс |
| Шың тогы (арна үшін) | 3 А макс |
| PWM жиілік нұсқауы | 40 кГц дейін |
| Кіріс логикалық шектері | 0.3 x VCC (төмен), 0.7 x VCC (жоғары) |
| Кернеу төмендеуі / RDS(on) / қанығу | 0.15 В |
| Жылулық шектер | 85 °C |
| Қаптама | WROOM-32 |
| Ескертулер / нұсқалар | Әртүрлі аудио кітапханалармен үйлесімді |
- Микро SD картасының FAT32 форматында болуын қамтамасыз етіңіз.
- Бұрмалануды болдырмау үшін аудио күшейткішті қосу кезінде резисторды қолданыңыз.
- Үзілістерді болдырмау үшін қоректендіру қосылымдарын тұрақты ұстаңыз.
- Жүйені қосу алдында сым қосылымдарын бос тұрғанын тексеріңіз.
- Қателерді жою ақпараты үшін сериялық шығысты бақылаңыз.
- Жақсырақ дыбыс сапасы үшін төмен кедергілі динамиктерді қолданыңыз.
- Ең жақсы өнімділік үшін ESP32 аудио ойнату кезінде тапсырмалармен шамадан тыс жүктелмегенін қамтамасыз етіңіз.
SD_MMC микро SD қолжетімділігі үшін, ал AudioOutputI2S аудио шығысы үшін қолданылады.
Сым қосылым нұсқаулары


Компоненттерді біріктіру үшін алдымен қоректендіруді қосудан бастаңыз. ESP32-ден 5 В-ты аудио күшейткіштің VCC түйреуішіне қосыңыз. Содан кейін ESP32-ден жер түйреуішін күшейткіштің жер түйреуішіне қосыңыз. ESP32-ден аудио шығыс түйреуіші, әдетте GPIO25, 10 кΩ резистор арқылы күшейткіштің кіріс түйреуішіне қосылуы керек.
Динамик үшін оны аудио күшейткіштің шығыс түйреуіштеріне қосыңыз. Динамиктің полярлығы жоқ екенін ескеріңіз, сондықтан оны кез келген бағытта қосуға болады. Микро SD картасын ESP32-дегі арнайы ұяға салыңыз. Жүйені қосу алдында барлық қосылымдарды қайта тексеруді ұмытпаңыз.
Код мысалдары мен түсіндірме
Берілген кодта біз аудио ойнату және SD картаға қол жеткізу үшін қажетті кітапханаларды қосудан бастаймыз. Негізгі идентификаторлар - mp3, file және out, олар сәйкесінше MP3 генераторын, аудио файл көзін және аудио шығысын білдіреді.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;
Мұнда біз MP3 генераторы мен аудио файл көзі үшін көрсеткіштерді жариялаймыз. setup() функциясында біз сериялық байланыс пен SD картаны инициализациялаймыз.
void setup() {
Serial.begin(115200);
if (!SD_MMC.begin()) {
Serial.println("SD картаны орнату сәтсіз аяқталды!");
}
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
out = new AudioOutputI2S(0, 1);
}
Бұл үзіндіде біз SD картаның сәтті орнатылғанын тексереміз. Егер ол сәтсіз болса, қате туралы хабарлама басып шығарылады. Содан кейін біз MP3 файлын және аудио шығыс режимін орнатамыз.
void loop() {
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
} else {
Serial.println("MP3 аяқталды");
delay(1000);
}
}
Бұл цикл MP3 файлының әлі ойнатылып жатқанын тексереді. Егер ол ойнатылмаса, ойнату аяқталғанын көрсететін хабарлама басып шығарылады. Толық код қосымша анықтама үшін мақаланың астында жүктеледі.
Демонстрация / Не күтуге болады
Барлығы дұрыс қосылып, код жүктелгеннен кейін микро SD картасы салынған кезде динамик арқылы аудио ойнатылғанын естуіңіз керек. Картаны салғаннан кейін ESP32-ді қайта қосуды ұмытпаңыз. Егер аудио ойнатылмаса, сым қосылымдарын тексеріп, кодтағы аудио файл атауының дұрыс екеніне көз жеткізіңіз (бейнеде 05:00).
Жиі кездесетін қателіктерге микро SD картасын дұрыс форматтамау немесе қолдау көрсетілмейтін аудио файл форматтарын пайдалану жатады. Файлдардың MP3 форматында екеніне және қажет болған жағдайда түбірлік каталогта немесе көрсетілген қалтада орналасқанына әрқашан көз жеткізіңіз.
Бейне уақыт белгілері
- 00:00 Бастау
- 2:19 Жобаға кіріспе
- 4:27 Құжаттар беті
- 5:32 Аудио күшейткіш үшін сым қосылымы
- 8:00 ESP32 үшін microSD картасын форматтау
- 10:16 Кітапхана және код
- 15:16 Arduino IDE-де ESP32 тақтасын және COM портын таңдау
- 16:58 Микро SD картасынан ESP32 көмегімен ән ойнату
- 19:14 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
Ресурстар мен сілтемелер
-
ҚұжаттамаESP32 Tutorial 41/55- SunFounder doc page for playing music from memory carddocs.sunfounder.com
Файлдар📁
Файлдар жоқ.