ESP32 Упатство 41/55 - MP3 плеер со користење на Micro SD картичка | SunFounder's ESP32 IoT комплет за учење
Во ова упатство, ќе креираме MP3 плеер користејќи го ESP32 микроконтролерот и микро SD картичка. ESP32 ќе чита аудио датотеки складирани на микро SD картичката и ќе го испушта звукот преку аудио засилувач и звучник. Овој проект комбинира различни компоненти, вклучувајќи го ESP32, аудио засилувач и микро SD картичка, за да ви овозможи да пуштате музика на едноставен начин.
Во текот на процесот, ќе разговараме за потребното поврзување, кодирање и како да решавате вообичаени проблеми. За повеќе визуелни упатства, задолжително погледнете го придружното видео (во видео на 00:00).
Објаснување на хардверот
Главните компоненти користени во овој проект вклучуваат ESP32 микроконтролер, микро SD картичка, аудио засилувач и звучник. ESP32 е моќен микроконтролер со вградени Wi-Fi и Bluetooth можности, што го прави идеален за IoT проекти. Тој ќе го обработува и контролира аудио репродуцирањето.
Микро SD картичката се користи за складирање на аудио датотеки во MP3 формат. Таа се поврзува со ESP32 и му овозможува на програмот да ги чита датотеките и да испраќа аудио податоци до засилувачот. Аудио засилувачот го зема дигиталниот сигнал од ESP32 и го засилува за да го придвижи звучникот, овозможувајќи звукот да се слушне.
Детали од податочната листа
| Производител | SunFounder |
|---|---|
| Број на дел | ESP32 |
| Логички/IO напон | 3.3 V |
| Напон на напојување | 5 V |
| Излезна струја (по канал) | 2 A макс |
| Врвна струја (по канал) | 3 A макс |
| Насоки за PWM фреквенција | до 40 kHz |
| Прагови на влезна логика | 0.3 x VCC (ниско), 0.7 x VCC (високо) |
| Пад на напон / RDS(on) / заситување | 0.15 V |
| Термички граници | 85 °C |
| Пакет | WROOM-32 |
| Белешки / варијанти | Компатибилен со различни аудио библиотеки |
- Осигурете се дека микро SD картичката е форматирана како FAT32.
- Користете отпорник за поврзување на аудио засилувачот за да спречите изобличување.
- Одржувајте ги стабилни врските за напојување за да избегнете прекини.
- Проверете ги жиците за лабави врски пред да го вклучите системот.
- Следете го серискиот излез за информации за дебагирање.
- Користете звучници со низок импеданс за подобар квалитет на звук.
- За најдобри перформанси, осигурете се дека ESP32 не е преоптоварен со задачи додека пушта аудио.
SD_MMC се користи за пристап до микро SD, а AudioOutputI2S се користи за аудио излез.
Упатства за поврзување


За да ги поврзете компонентите, започнете со поврзување на напојувањето. Поврзете го 5 V од ESP32 со VCC пинот на аудио засилувачот. Потоа, поврзете го пинот за заземјување од ESP32 со пинот за заземјување на засилувачот. Аудио излезниот пин од ESP32, обично GPIO25, треба да се поврзе со влезниот пин на засилувачот преку отпорник од 10 kΩ.
За звучникот, поврзете го со излезните пинови на аудио засилувачот. Забележете дека звучникот нема поларитет, па можете да го поврзете на било кој начин. Вметнете ја микро 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 Форматирање на microSD картичка за ESP32
- 10:16 Библиотека и код
- 15:16 Избор на ESP32 плоча и COM порт во Arduino IDE
- 16:58 Репродукција на песна користејќи ESP32 од микро SD картичка
- 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
Датотеки📁
Нема достапни датотеки.