|
概要
- ESP-WROOM-32のWIFIを使ったインターネットラジオ。
- MP3とAACによる配信に対応。
- 受信可能な局(URL等)をリスト化しておき、そこから選択する方式とした。
- RTC(リアルタイムクロック)によりプログラム録音(音源データの保存)。
- 受信中、随時の保存開始と停止。
- 保存ファイル(MP3/AAC)の再生。
|
|
回路(デジタル部)
- RTCはSTMicroelectronicsのM41T62。Strawberry Linuxの注文番号:#12062
- LCDはコントローラにST7032iを使用したI2Cインターフェースのもの。共立電子の商品コード:I6D124(税込998円) だが、メーカーはスイッチサイエンス(税込902円)で、それはさらに秋月電子の通販コードP-06669にピッチ変換基板をつけたものである。他の部品とまとめて注文する都合で共立電子から購入。
- タクトスイッチなどのプルアップにはESP-WROOM-02の内臓プルアップ機能を使わないで、外付けの抵抗を付けている。内臓プルアップでは動作が不安定だった。
|
|
回路(アナログ部)
|
|
ソフトウエア構成
- Arduino 1.8.16 で開発
- WIFI設定、受信対応局情報、録音スケジュールを外部ファイルで定義する。
- Playlist(M3U)ファイルを経由して配信されている局の場合、AACなど音源ファイルのGETの途中でタイムアウトが発生しても再GETを試みる。
- M3Uファイルの"使い方"は、NHKとMUSICBIRDとで異なるので、それぞれの対応をプログラムソース中にハードコーディングしてしまった。
- ストリーミング方式(という言い方でよいのか。パケット垂れ流し方式)の局の場合、HTTPの接続が不意に切れることがある。その場合再接続を試みる。
- プログラム録音時の録音済み時間確認は保存したデータの量ではなく、単純にESP-WROOM-32のクロック(つまり実経過時間)によっている。なので、HTTP接続が切れたので再接続した、という場合は所定の時間分のデータが保存されない。
- ソースファイル(スケッチ)はこちら
- VS1053にはベンダーからパッチが提供されている。が、これを使うとなぜか音が低音になってしまう。とくに人間の声でその効果がはっきり出ます。ですので、結局このパッチは使っていない。
|
|
実装
- 解体したMP3プレーヤ第9作のケース(タカチのPF20-6-13)を流用。
- RTCのバックアップバッテリ用ソケットを側面に配置している
|
|
結果
- 現在の受信対応局リストファイルはこちら。
- NHK-FM/R1/R2 ... まずまず安定して受信できる。のだが、ときどき"ザッ"というようなノイズが発生する。保存したAACファイルを本機で再生したときも同じ場所で発生する。しかしWindowsによる再生では発生しない。なのでおそらくAACをデコードするときのVS1053の問題。(とはいえ同様にAACで配信するコミュニティFMでは発生しないのが不思議)
- コミュニティFM(musicbird) ... NHKと同じ配信方式だが、やや安定度が劣る印象。
- その他の局 ... 安定して再生できるかは配信サーバーのキャパとか回線の安定に左右されるようだ。リアルタイム受信中に音がプチプチ途切れるのはストレスなので、事前に録音しておいたものを再生で聴く、というのがよさそう。
- 未対応の局 ...
- radiko ... 有償対応のためか認証機構を乗り越えるのは簡単ではない。ライセンスの問題もある。
- JAZZ24 ... ここ専用の処理ロジックを作りこもうとしたが、Transfer-Encoding not supported のエラーが発生して未解決
- プログラム録音のスケジュールファイル例はこちら。
|