====== 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 #include "Arduino.h" #include #include #include #ifdef ESP32 #include #include "SPIFFS.h" #else #include #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); } }