|
概要
- ESP-WROOM-32 と I2S接続DACによるMP3/AACプレーヤ
- デコーダはESP-WROOM-32上のソフトウエアデコーダ
- 外部アンプ+スピーカに接続して使うことを想定
- 操作はWindows PCから。それ用のプログラムも開発した
- 接続先となるミニコンポのUSB端子を電源の一部として利用
|
|
回路図(製作開始時)
- 接続先ミニコンポの起動と同時にESP-WROOM-32が起動する。
- Windows上のコントローラプログラムからの起動によりメイン電源が入り、入れ違いでUSBの電源は遮断される(はずだった)。
|
|
回路図(最終)
- 製作開始時の回路では、電源回路が上記の意図通りには動作せず、電源の切り替わり時にESP-WROOM-32が再起動してしまう。
- 結局、ESP-WROOM-32は常時USBからの電源で動作させることにし、外部電源はDACのアナログ部とリレーだけになった。ESP-WROOM-32でデコードするが問題ない。
- メイン電源スイッチのつもりでつけたプッシュボタンはなにも機能していない。
|
|
ソフトウエア
- デコーダとI2S部分はこちらのもの(schreibfaul1/ESP32-audioI2S)を利用させていただいた。これは今も更新されているようですが、昨年(2022年)の8月ごろのバージョンを使いました。
- このデコーダはSDカードへのアクセス部分も含んでいるが、その部分は使い慣れたFatFs(R0.10a)に置き換えた。
- Visual Studio Code + PlatformIO で開発。主なソースファイルはこちら(main.cpp, spi_sd.cpp(FatFsの低レベル部分), Audio.cpp/.h(FatFs対応の改造))
- Windows上のコントロールプログラム(左図)。
- C#2019(Visual Studio Community 2019)で開発した。ソースの一式、こちら。
- 再生対象のディレクトリ/MP3ファイルの選択、再生開始・停止、ランダム再生の開始、同一ディレクトリ内の次の曲への移行、再生中の曲の中での先送り・後戻り、音量変更、本体電源のオンオフ。
- 同一のデータファイルを本体とコントローラの両方に置いている。ディレクトリ構造と曲目の取得はローカルに置いたデータファイルから。再生時、コントローラは本体にディレクトリやファイルの番号を伝えるだけで、本体は同一のデータファイルから音源ファイルの位置を取得する。
- ソース一式はこちら。
- データファイルの生成はコントロールプログラムとは別にC言語で記述した。Windowsのコンソールアプリ。ソース一式はこちら。
|
|
本体実装
|
|
結果
|