I2S再生のオーディオプレーヤーを作ってみた(ESP32、PCM5102A、UDA1334A) | a24a24a24のブログ

a24a24a24のブログ

アメピグ残党。
釣り、温泉、お出かけ、パソコン。最近、電子工作。

オーディオ通信規格のI2Sを、いろいろ試しています。

 

 

音は鳴るようになったのですが、

「再生する間、ずっと内部で処理待ちになる」形式のプログラムだったので、

音と並行で画面を動かしたり、リアルタイム処理をするのが難しい状態でした。

 

 

そこで今回、自前の2段バッファ処理のプログラムを組み

microSDの音楽ファイルを再生しながら並行で

ボタン操作やOLEDの表示処理まで行う、簡単なオーディオプレーヤーを作ってみました。

 

※試作中なので、細かい説明は省略します。

 

 

 

 

 

作った物はこんな感じです。ゴチャゴチャですね。

 

左から、microSDモジュール、ジョイスティック、SSD1306 OLED表示器。

右が音が鳴る部分の、I2Sモジュール PCM5102AとUDA1334A(イヤホンを接続)

奥に埋もれているのが、マイコンのESP32。

 

 

 

 

 

今回、プログラムで作ったことを図にしました。

 

ESP32内蔵のI2Sバッファだけでは、データの送信完了まで待つ必要があり(※方法による)

バックグラウンドで別処理することが難しいです。

ネットで紹介されているESP32 I2Sプログラムのほとんどが「待ち」の手法だと思います。

 

そこで、前段に別バッファを用意して、さらに2ページ構成にしました。

負荷のタイミングを分散し、データ送信を待たず適宜注ぎ足しで送ることで

並行処理する余裕を作りました。

我流なので、プログラムやアルゴリズムが合っているかは分かりません。

 

 

 

 

 

microSDから読み込む音楽データは、44.1kHz 16ビットステレオの非圧縮WAVファイル

としました。MP3は残念ながら対応していません。

 

ジョイスティックの操作で、選曲、ボリュームの上下、早送り巻き戻しができます。

 

 

 

 

 

I2Sモジュール2種、手前がUDA1334A、右奥がPCM5102Aです。

どちらも同様に再生できます。

 

音質ですが、スマホや昔のオーディオプレーヤーと同じくらい、

細かく気にしなければ、十分音楽を聴けると思います。

概ねネットの評判通りと感じました。

 

 

 

 

 

SSD1306 OLED表示器です。

I2Sを2段バッファ処理にしたことで、再生しながら並行で情報表示ができました。

(ESP32内蔵バッファだけでも動くかもしれませんが、タイミングが厳しいと思います)

 

右側の時間は、再生のタイムカウンター。

下方のバーは音量のレベルメーターです。いい感じでピコピコと動きます。

 

 

 

 

今後の使い方ですが。

まったく上達しない電子オルガン鍵盤練習の、BGM再生用に

めっちゃカスタマイズできるリピート機能を付けてみようかな、と思っています。

 

練習したい部分をワンキーで30秒戻ったり、お気に入りポイントを20個登録できたり?

いろいろ作って試してみたいと思います。