Search Code

Návod pre ESP32 41/55 - MP3 prehrávač pomocou Micro SD karty | SunFounder's ESP32 IoT Learning kit

Návod pre ESP32 41/55 - MP3 prehrávač pomocou Micro SD karty | SunFounder's ESP32 IoT Learning kit

V tomto návode si vytvoríme MP3 prehrávač pomocou mikrokontroléra ESP32 a micro SD karty. ESP32 bude čítať zvukové súbory uložené na micro SD karte a výstup zvuku zabezpečí cez audio zosilňovač a reproduktor. Tento projekt kombinuje rôzne komponenty vrátane ESP32, audio zosilňovača a micro SD karty, aby vám umožnil prehrávať hudbu jednoduchým spôsobom.

Počas celého procesu si preberieme potrebné zapojenie, kódovanie a riešenie bežných problémov. Pre lepšiu vizuálnu orientáciu si pozrite aj pripojené video (vo videu o 00:00).

Vysvetlenie hardvéru

Medzi hlavné komponenty použité v tomto projekte patria mikrokontrolér ESP32, micro SD karta, audio zosilňovač a reproduktor. ESP32 je výkonný mikrokontrolér so vstavanou Wi-Fi a Bluetooth podporou, vďaka čomu je ideálny pre IoT projekty. Bude spracovávať a riadiť prehrávanie zvuku.

Micro SD karta sa používa na ukladanie zvukových súborov vo formáte MP3. Pripojí sa k ESP32 a umožní programu čítať súbory a posielať zvukové dáta do zosilňovača. Audio zosilňovač prijme digitálny signál z ESP32 a zosilní ho na pohon reproduktora, aby bolo možné zvuk počuť.

Podrobnosti z datasheetu

VýrobcaSunFounder
Označenie dieluESP32
Logické/IO napätie3,3 V
Napájacie napätie5 V
Výstupný prúd (na kanál)max. 2 A
Špičkový prúd (na kanál)max. 3 A
Odporúčaná PWM frekvenciado 40 kHz
Logické vstupné prahy0,3 x VCC (nízka), 0,7 x VCC (vysoká)
Pokles napätia / RDS(on) / saturácia0,15 V
Tepelné limity85 °C
PuzdroWROOM-32
Poznámky / variantyKompatibilné s rôznymi zvukovými knižnicami

  • Uistite sa, že micro SD karta je naformátovaná ako FAT32.
  • Na pripojenie audio zosilňovača použite rezistor, aby ste predišli skresleniu.
  • Udržujte napájacie pripojenia stabilné, aby nedošlo k prerušeniam.
  • Pred zapnutím systému skontrolujte zapojenie na uvoľnené spoje.
  • Sledujte sériový výstup kvôli ladeniu a informáciám.
  • Pre lepšiu kvalitu zvuku použite reproduktory s nízkou impedanciou.
  • Pre optimálny výkon sa uistite, že ESP32 nie je pri prehrávaní zvuku preťažený úlohami.

SD_MMC sa používa na prístup k micro SD karte a AudioOutputI2S sa používa na zvukový výstup.

Pokyny na zapojenie

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

Pri zapájaní komponentov začnite pripojením napájania. Pripojte 5 V z ESP32 na pin VCC audio zosilňovača. Potom pripojte uzemňovací pin z ESP32 na uzemňovací pin zosilňovača. Zvukový výstupný pin z ESP32, zvyčajne GPIO25, by mal byť pripojený na vstupný pin zosilňovača cez rezistor 10 kΩ.

Reproduktor pripojte na výstupné piny audio zosilňovača. Upozorňujeme, že reproduktor nemá polaritu, takže ho môžete pripojiť v oboch smeroch. Vložte micro SD kartu do určeného slotu na ESP32. Pred zapnutím systému dôkladne skontrolujte všetky pripojenia.

Príklady kódu a vysvetlenie

V poskytnutom kóde začneme zahrnutím potrebných knižníc na prehrávanie zvuku a prístup k SD karte. Hlavné identifikátory sú mp3, file a out, ktoré predstavujú MP3 generátor, zdroj zvukového súboru a zvukový výstup.

AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;

Tu deklarujeme ukazovatele na MP3 generátor a zdroj zvukového súboru. Vo funkcii setup() inicializujeme sériovú komunikáciu a SD kartu.

void setup() {
  Serial.begin(115200);
  if (!SD_MMC.begin()) {
    Serial.println("Zlyhalo pripojenie SD karty!");
  }
  file = new AudioFileSourceSD_MMC("/To Alice.mp3");
  out = new AudioOutputI2S(0, 1);
}

V tomto úryvku skontrolujeme, či je SD karta úspešne pripojená. Ak zlyhá, vytlačí sa chybové hlásenie. Potom nastavíme MP3 súbor a režim zvukového výstupu.

void loop() {
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop();
  } else {
    Serial.println("MP3 dokončené");
    delay(1000);
  }
}

Táto slučka kontroluje, či sa MP3 súbor stále prehráva. Ak nie, vytlačí správu, že prehrávanie je dokončené. Celý kód sa načíta nižšie pod článkom pre ďalšiu referenciu.

Demonštrácia / Čo očakávať

Keď je všetko zapojené a kód je nahraný, po vložení micro SD karty by ste mali počuť zvuk prehrávaný cez reproduktor. Po vložení karty nezabudnite resetovať ESP32. Ak sa zvuk neprehráva, skontrolujte zapojenie a uistite sa, že zvukový súbor je v kóde správne pomenovaný (vo videu o 05:00).

Medzi časté chyby patrí nesprávne naformátovanie micro SD karty alebo použitie nepodporovaných zvukových formátov. Vždy sa uistite, že súbory sú vo formáte MP3 a umiestnené v koreňovom adresári alebo v určenom priečinku podľa potreby.

Časové značky videa

  • 00:00 Začiatok
  • 2:19 Úvod do projektu
  • 4:27 Stránka dokumentácie
  • 5:32 Zapojenie audio zosilňovača
  • 8:00 Formátovanie microSD karty pre ESP32
  • 10:16 Knižnica a kód
  • 15:16 Výber dosky ESP32 a COM portu v Arduino IDE
  • 16:58 Prehrávanie skladby pomocou ESP32 z micro SD karty
  • 19:14 Druhá ukážka s 18650 batériou

Images

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

Resources & references

Files📁

No files available.