インターネットラジオ 第2作


更新: 2021/11/13, 2021/12/31, 2022/01/03, 2022/01/23, 2022/01/29, 2022/03/20

概要

  • 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と同じ配信方式だが、やや安定度が劣る印象。
  • その他の局 ... 安定して再生できるかは配信サーバーのキャパとか回線の安定に左右されるようだ。リアルタイム受信中に音がプチプチ途切れるのはストレスなので、事前に録音しておいたものを再生で聴く、というのがよさそう。
    • Jazz Sakura ... 国内の局。国内で配信しているとは限らないが、まずまず安定している。
    • Top Blues ... 320kビットレート。リアルタイム受信しながらの保存は少々厳しい。
    • Venice Classic Radio Italia ... 割と安定して受信できる局
  • 未対応の局 ...
    • radiko ... 有償対応のためか認証機構を乗り越えるのは簡単ではない。ライセンスの問題もある。
    • JAZZ24 ... ここ専用の処理ロジックを作りこもうとしたが、Transfer-Encoding not supported のエラーが発生して未解決
  • プログラム録音のスケジュールファイル例はこちら


トップページに戻る