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ファイル音源
●フリーWave,MP3【https://www.ne.jp/asahi/music/myuu/wave/wave.htm】
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);
}
.png)
.png)
.png)
0 件のコメント:
コメントを投稿