Search Code

ESP32 оқулығы 41/55 - Micro SD картасын қолданып MP3 ойнатқыш | SunFounder компаниясының ESP32 IoT оқу жиынтығы

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-40-micro-sd-card-1
esp32-41-play-music-wriing

Компоненттерді біріктіру үшін алдымен қоректендіруді қосудан бастаңыз. 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 батареясын қолданатын екінші демонстрация

Суреттер

speaker_pic
speaker_pic
audio_module
audio_module
ESP32-40-micro-sd-card-1
ESP32-40-micro-sd-card-1
esp32-41-play-music-wriing
esp32-41-play-music-wriing
842-ESP32 Tutorial 41/55- Arduino code for playing music from microSD card
Тіл: C++
#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);
  }
}

Ресурстар мен сілтемелер

Файлдар📁

Файлдар жоқ.