Search Code

Samouczek ESP32 41/55 - Odtwarzacz MP3 z użyciem karty Micro SD | Zestaw edukacyjny SunFounder ESP32 IoT

Samouczek ESP32 41/55 - Odtwarzacz MP3 z użyciem karty Micro SD | Zestaw edukacyjny SunFounder ESP32 IoT

W tym samouczku stworzymy odtwarzacz MP3 wykorzystujący mikrokontroler ESP32 oraz kartę micro SD. ESP32 będzie odczytywać pliki audio zapisane na karcie micro SD i przesyłać dźwięk przez wzmacniacz audio i głośnik. Ten projekt łączy różne komponenty, w tym ESP32, wzmacniacz audio i kartę micro SD, aby umożliwić odtwarzanie muzyki w prosty sposób.

W trakcie procesu omówimy niezbędne połączenia, kodowanie oraz sposoby rozwiązywania typowych problemów. Aby uzyskać więcej wskazówek wizualnych, koniecznie obejrzyj powiązane wideo (na wideo o 00:00).

Omówienie sprzętu

Główne komponenty użyte w tym projekcie to mikrokontroler ESP32, karta micro SD, wzmacniacz audio i głośnik. ESP32 to wydajny mikrokontroler z wbudowaną łącznością Wi-Fi i Bluetooth, co czyni go idealnym do projektów IoT. Będzie on odpowiedzialny za przetwarzanie i kontrolę odtwarzania audio.

Karta micro SD służy do przechowywania plików audio w formacie MP3. Łączy się z ESP32 i umożliwia programowi odczytywanie plików oraz wysyłanie danych audio do wzmacniacza. Wzmacniacz audio pobiera sygnał cyfrowy z ESP32 i wzmacnia go, aby zasilić głośnik, umożliwiając słyszenie dźwięku.

Szczegóły z karty katalogowej

ProducentSunFounder
Numer częściESP32
Napięcie logiki/IO3,3 V
Napięcie zasilania5 V
Prąd wyjściowy (na kanał)maks. 2 A
Prąd szczytowy (na kanał)maks. 3 A
Zalecana częstotliwość PWMdo 40 kHz
Progi logiczne wejścia0,3 x VCC (niski), 0,7 x VCC (wysoki)
Spadek napięcia / RDS(on) / nasycenie0,15 V
Limity termiczne85 °C
ObudowaWROOM-32
Uwagi / wariantyKompatybilny z różnymi bibliotekami audio

  • Upewnij się, że karta micro SD jest sformatowana w systemie FAT32.
  • Użyj rezystora do podłączenia wzmacniacza audio, aby zapobiec zniekształceniom.
  • Utrzymuj stabilne połączenia zasilania, aby uniknąć przerw.
  • Sprawdź połączenia pod kątem luźnych styków przed włączeniem systemu.
  • Monitoruj wyjście szeregowe w celu uzyskania informacji debugowania.
  • Używaj głośników o niskiej impedancji dla lepszej jakości dźwięku.
  • Aby uzyskać najlepszą wydajność, upewnij się, że ESP32 nie jest przeciążony zadaniami podczas odtwarzania audio.

SD_MMC jest używany do dostępu do karty micro SD, a AudioOutputI2S jest wykorzystywany do wyjścia audio.

Instrukcje dotyczące połączeń

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

Aby połączyć komponenty, zacznij od podłączenia zasilania. Podłącz 5 V z ESP32 do pinu VCC wzmacniacza audio. Następnie podłącz pin masy z ESP32 do pinu masy wzmacniacza. Pin wyjścia audio z ESP32, zwykle GPIO25, należy podłączyć do pinu wejściowego wzmacniacza przez rezystor 10 kΩ.

W przypadku głośnika podłącz go do pinów wyjściowych wzmacniacza audio. Należy pamiętać, że głośnik nie ma biegunowości, więc można go podłączyć w dowolny sposób. Włóż kartę micro SD do przeznaczonego do tego gniazda na ESP32. Przed włączeniem systemu dokładnie sprawdź wszystkie połączenia.

Przykłady kodu i omówienie

W dostarczonym kodzie zaczynamy od dołączenia niezbędnych bibliotek do odtwarzania audio i dostępu do karty SD. Główne identyfikatory to mp3, file i out, które reprezentują odpowiednio generator MP3, źródło pliku audio i wyjście audio.

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

Tutaj deklarujemy wskaźniki dla generatora MP3 i źródła pliku audio. W funkcji setup() inicjalizujemy komunikację szeregową i kartę SD.

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

W tym fragmencie sprawdzamy, czy karta SD została zamontowana pomyślnie. Jeśli nie, wyświetlany jest komunikat o błędzie. Następnie konfigurujemy plik MP3 i tryb wyjścia audio.

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

Ta pętla sprawdza, czy plik MP3 jest nadal odtwarzany. Jeśli nie, wyświetla komunikat informujący o zakończeniu odtwarzania. Pełny kod zostanie załadowany poniżej artykułu w celu dalszego odniesienia.

Demonstracja / Czego się spodziewać

Po podłączeniu wszystkiego i wgraniu kodu powinieneś usłyszeć dźwięk odtwarzany przez głośnik po włożeniu karty micro SD. Pamiętaj, aby zresetować ESP32 po włożeniu karty. Jeśli dźwięk nie jest odtwarzany, sprawdź połączenia i upewnij się, że plik audio jest poprawnie nazwany w kodzie (na wideo o 05:00).

Typowe problemy obejmują nieprawidłowe sformatowanie karty micro SD lub użycie nieobsługiwanych formatów plików audio. Zawsze upewnij się, że pliki są w formacie MP3 i umieszczone w katalogu głównym lub w określonym folderze, jeśli to konieczne.

Znaczniki czasu wideo

  • 00:00 Start
  • 2:19 Wprowadzenie do projektu
  • 4:27 Strona dokumentacji
  • 5:32 Podłączanie wzmacniacza audio
  • 8:00 Formatowanie karty microSD dla ESP32
  • 10:16 Biblioteka i kod
  • 15:16 Wybór płytki ESP32 i portu COM w Arduino IDE
  • 16:58 Odtwarzanie piosenki za pomocą ESP32 z karty Micro SD
  • 19:14 Druga demonstracja z użyciem baterii 18650

Obrazy

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
Język: 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);
  }
}

Zasoby i odniesienia

Pliki📁

Brak dostępnych plików.