Пребарување код

ESP32 Упатство 41/55 - MP3 плеер со користење на Micro SD картичка | SunFounder's ESP32 IoT комплет за учење

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 се користи за аудио излез.

Упатства за поврзување

ESP32-40-micro-sd-card-1
esp32-41-play-music-wriing

За да ги поврзете компонентите, започнете со поврзување на напојувањето. Поврзете го 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 батерија

Слики

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);
  }
}

Ресурси и референци

Датотеки📁

Нема достапни датотеки.