2026年4月1日水曜日

ESP32 - PCM5102 MP3再生

ESP32-audioI2S-masterライブラリを使って PCM5102A I2S DAC によるMP3再生を行いました。 下記サイトのスケッチを使用しました。 

接続
ESP32   PCM5102
GP25 ー DIN
GP26 ー LCK
GP27 ー BCK
3.3V      ー    VIN
GND      ー      GND

参考サイト
●外部DAC(PCM5102A)とスピーカーで音楽再生
●ESP32-audioI2S-masterを使う


PCM5102A - 32ビットDAC
アマゾン購入
【SCK】ブリッジ(内部クロック)










【H1L】(FLT)      L側 ブリッジ
【H2L】(DEMP) L側 ブリッジ
【H3L】(XSMT) H側 ブリッジ
【H4L】(FMT)    L側 ブリッジ








Esp32-devkitc-32e 開発ボード
●Esp32-devkitc-32e 開発ボード
※アマゾンの写真には技適マークがありますが、送られた製品は技適マーク無し(証明書無)





ボードマネージャ














追加ボードマネージャーURLを変更
【https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json】
【esp 32】
【バージョン3.2.0】インストール


ライブラリマネージャー








●ESP32-audioI2S-master 
 所定のlibrariesに貼付

【i2s】
【バージョン3.2.1】インストール



MP3ファイル音源


SPIFFSにMP3ファイル書込み
※アップロード出来ない場合→Arduino/tools/ESP32FS/tool/esp32fs.jar 書替え
MP3ファイルをSPIFFS にアップロード
スケッチファイル(.ino)と同じ場所に
【data】フォルダを作成して、MP3ファイル(kanpai.mp3)を書込む。
【ESP32 Sketch Data Upload】クリックするとSPIFFS にMP3ファイルがアップロードされる。
●【ESP32 Dev Module】をボードにする。
パーテーション変更
メモリ不足のエラーが出るのでPartition Scheme【No OTA(2MB APP/2MB SPIFFS】を選択してプログラム書込み→MP3ファイルをアップロード



プログラム Arduino IDE【ボード:ESP32 Dev Module
#include <Audio.h>
#include <SPIFFS.h>

#define I2S_DOUT      25
#define I2S_BCLK      27
#define I2S_LRC       26

Audio audio;

void setup() {
  Serial.begin(115200);

  SPIFFS.begin();
  audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
  audio.setVolume(21); // default 0...21

  audio.connecttoFS(SPIFFS, "/kanpai.mp3");
}

void loop()
{
  audio.loop();
}

// optional
void audio_info(const char *info){
    Serial.print("info        "); Serial.println(info);
}
void audio_id3data(const char *info){  //id3 metadata
    Serial.print("id3data     ");Serial.println(info);
}
void audio_eof_mp3(const char *info){  //end of file
    Serial.print("eof_mp3     ");Serial.println(info);
}
void audio_showstation(const char *info){
    Serial.print("station     ");Serial.println(info);
}
void audio_showstreamtitle(const char *info){
    Serial.print("streamtitle ");Serial.println(info);
}
void audio_bitrate(const char *info){
    Serial.print("bitrate     ");Serial.println(info);
}
void audio_commercial(const char *info){  //duration in sec
    Serial.print("commercial  ");Serial.println(info);
}
void audio_icyurl(const char *info){  //homepage
    Serial.print("icyurl      ");Serial.println(info);
}
void audio_lasthost(const char *info){  //stream URL played
    Serial.print("lasthost    ");Serial.println(info);
}
void audio_eof_speech(const char *info){
    Serial.print("eof_speech  ");Serial.println(info);
}





0 件のコメント:

コメントを投稿

ESP32 - Bluepad32 ロボカー PS4コントローラー操作

  Bluetooth (Classic / BLE)対応の Bluepad32ライブラリー使用して、 無印E SP32制御ロボットカーを純正PS4コントローラーで操作しました。 (Xboxコントローラーに入替て操作出来ます) 同ブログ【 ESP32 - Bluepad32 PS...