Bemerkung
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Vertiefen Sie sich mit anderen Enthusiasten in die Welt von Raspberry Pi, Arduino und ESP32.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Sonderangebote: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Bereit, mit uns zu erkunden und zu kreieren? Klicken Sie auf [here] und treten Sie heute bei!
2.11 MP3-Player mit SD-Karten-Unterstützung¶
Willkommen in der aufregenden Welt der Musik mit Ihrem ESP32! Dieses Projekt bringt die Leistung der Audiobearbeitung direkt in Ihre Hände und macht Ihren ESP32 nicht nur zu einem erstaunlichen Mikrocontroller für Rechenaufgaben, sondern auch zu Ihrem persönlichen Musikplayer. Stellen Sie sich vor, Sie betreten Ihr Zimmer und Ihr Lieblingslied spielt direkt von diesem kleinen Gerät. Das ist die Kraft, die wir Ihnen heute zur Verfügung stellen.
Benötigte Komponenten
In diesem Projekt benötigen wir die folgenden Komponenten.
KOMPONENTEN-BESCHREIBUNG |
KAUFLINK |
|---|---|
- |
|
Steckbrett |
|
Mehrere Verbindungskabel |
|
Widerstand |
|
Lautsprecher |
- |
Betriebsschritte
Stecken Sie Ihre SD-Karte mithilfe eines Kartenlesers in den Computer und formatieren Sie sie. Sie können das Tutorial unter Wie formatiert man eine SD-Karte? verwenden.
Kopieren Sie Ihre Lieblings-MP3-Datei auf Ihre SD-Karte.
Stecken Sie die SD-Karte in den SD-Kartensteckplatz der Erweiterungsplatine.
Bauen Sie die Schaltung auf.
Da dies ein Mono-Verstärker ist, können Sie IO25 mit dem L- oder R-Pin des Audioverstärkermoduls verbinden.
Der 10K-Widerstand wird verwendet, um Hochfrequenzrauschen zu reduzieren und die Lautstärke zu verringern. Er bildet zusammen mit der parasitären Kapazität des DAC und des Audioverstärkers einen RC-Tiefpassfilter. Dieser Filter verringert die Amplitude von Hochfrequenzsignalen und reduziert somit effektiv Hochfrequenzrauschen. Das Hinzufügen des 10K-Widerstands macht die Musik weicher und beseitigt unerwünschtes Hochfrequenzrauschen.
Wenn die Musik auf Ihrer SD-Karte bereits leise ist, können Sie den Widerstand entfernen oder durch einen kleineren Wert ersetzen.
Verbinden Sie den ESP32-WROOM-32E mit dem USB-Kabel mit dem Computer.
Laden Sie diesen Code herunter oder kopieren Sie ihn direkt in die Arduino IDE.
Ändern Sie die Zeile des Codes
file = new AudioFileSourceSD_MMC("/To Alice.mp3"); entsprechend dem Namen und Pfad Ihrer Datei.Bemerkung
Die
ESP8266Audio-Bibliothek wird hier verwendet. Sehen Sie sich das Tutorial unter Manuelle Installation an, um sie zu installieren.
Warnung
Wenn Sie ein ESP32-Entwicklungsboard Version 3.0.0 oder höher verwenden, können während des Kompilierungsprozesses Fehler auftreten. Dieses Problem tritt normalerweise auf, weil neuere Versionen des Boards die
ESP8266Audio-Bibliothek nicht mehr unterstützen. Um dieses Beispiel ordnungsgemäß auszuführen, wird empfohlen, die Firmware-Version Ihres ESP32-Boards auf 2.0.17 herunterzustufen. Nachdem Sie dieses Beispiel abgeschlossen haben, aktualisieren Sie wieder auf die neueste Version.
Wählen Sie den entsprechenden Port und das Board in der Arduino IDE aus und laden Sie den Code auf Ihren ESP32 hoch.
Nach erfolgreichem Hochladen des Codes hören Sie Ihre Lieblingsmusik spielen.
Wie funktioniert das?
Der Code verwendet mehrere Klassen aus der
ESP8266Audio-Bibliothek, um eine MP3-Datei von einer SD-Karte über I2S abzuspielen:#include "AudioFileSourceSD_MMC.h" #include "AudioOutputI2S.h" #include "AudioGeneratorMP3.h" #include "SD_MMC.h" #include "FS.h"
AudioGeneratorMP3ist eine Klasse, die MP3-Audio dekodiert.AudioFileSourceSD_MMCist eine Klasse, die Audiodaten von einer SD-Karte liest.AudioOutputI2Sist eine Klasse, die Audiodaten an die I2S-Schnittstelle sendet.
In der
setup()-Funktion initialisieren wir die SD-Karte, öffnen die MP3-Datei von der SD-Karte, richten den I2S-Ausgang am internen DAC des ESP32 ein, stellen den Ausgang auf Mono und starten den MP3-Generator.void setup() { // Starten der seriellen Kommunikation. Serial.begin(115200); delay(1000); // Initialisieren der SD-Karte. Wenn es fehlschlägt, eine Fehlermeldung drucken. if (!SD_MMC.begin()) { Serial.println("SD-Karten-Mount fehlgeschlagen!"); } // Öffnen der MP3-Datei von der SD-Karte. Ersetzen Sie "/To Alice.mp3" durch Ihren eigenen MP3-Dateinamen. file = new AudioFileSourceSD_MMC("/To Alice.mp3"); // Einrichten des I2S-Ausgangs am internen DAC des ESP32. out = new AudioOutputI2S(0, 1); // Den Ausgang auf Mono einstellen. out->SetOutputModeMono(true); // Initialisieren des MP3-Generators mit der Datei und dem Ausgang. mp3 = new AudioGeneratorMP3(); mp3->begin(file, out); }
In der
loop()-Funktion überprüfen wir, ob der MP3-Generator läuft. Wenn er läuft, setzen wir ihn in einer Schleife fort; andernfalls stoppen wir ihn und drucken „MP3 done“ auf den seriellen Monitor.void loop() { // Wenn der MP3-Generator läuft, in einer Schleife fortsetzen. Andernfalls stoppen. if (mp3->isRunning()) { if (!mp3->loop()) mp3->stop(); } // Wenn der MP3-Generator nicht läuft, eine Nachricht drucken und 1 Sekunde warten. else { Serial.println("MP3 done"); delay(1000); } }