sonstiges:tutorials:esp32:mp3_von_sd_karte
MP3s - i2s DAC - SDHC
Übersicht
Verbindungen zum I2S Dac (PCM5102a zB)
- LCK - GPIO25
- BCK - GPIO26
- DIN - GPIO22
- SCK - GND
Die SD Karte muss wie gewohnt verbunden werden
- MOSI - GPIO23
- MISO - GPIO19
- SCK - GPIO18
- CS/SS - GPIO5
Auf manchen Boards sind Pins wie XMT vorhanden. Da muss ins Datenblatt geguckt werden wie diese beschaltet werden müssen (In den meisten Fällen auf gnd).
Der Sketch kann (nicht VBR) MP3s problemlos abspielen. Der Bibliothek Inhaber rät dazu die CPU Frequenz auf 160MHz festzulegen.
https://github.com/earlephilhower/ESP8266Audio
- sketch.cpp
#include "Arduino.h" #include <SD.h> #include <HTTPClient.h> #include <SPIFFS.h> #ifdef ESP32 #include <WiFi.h> #include "SPIFFS.h" #else #include <ESP8266WiFi.h> #endif //out = new AudioOutputI2SDAC(); #include "AudioFileSourceSD.h" #include "AudioGeneratorMP3a.h" #include "AudioOutputI2SDAC.h" AudioGeneratorMP3a *mp3; AudioFileSourceSD *file; AudioOutputI2SDAC *out; void setup() { WiFi.mode(WIFI_OFF); Serial.begin(115200); if(!SD.begin()){ Serial.println("Card Mount Failed"); return; } uint8_t cardType = SD.cardType(); if(cardType == CARD_NONE){ Serial.println("No SD card attached"); return; } Serial.print("SD Card Type: "); if(cardType == CARD_MMC){ Serial.println("MMC"); } else if(cardType == CARD_SD){ Serial.println("SDSC"); } else if(cardType == CARD_SDHC){ Serial.println("SDHC"); } else { Serial.println("UNKNOWN"); } uint64_t cardSize = SD.cardSize() / (1024 * 1024); Serial.printf("SD Card Size: %lluMB\n", cardSize); delay(1000); Serial.printf("SD Card MP3 start\n"); file = new AudioFileSourceSD("/musik.mp3"); out = new AudioOutputI2SDAC(); mp3 = new AudioGeneratorMP3a(); mp3->begin(file, out); } void loop() { if (mp3->isRunning()) { if (!mp3->loop()) mp3->stop(); } else { Serial.printf("MP3 done\n"); delay(1000); } }
sonstiges/tutorials/esp32/mp3_von_sd_karte.txt · Zuletzt geändert: 2022-11-17 22:34 von 127.0.0.1