2021年8月10日火曜日

ラズパイで作る小型ネットワークオーディオプレーヤー

 ラズパイを使って、デジタル出力専用のネットワークオーディオプレーヤーを作りました(下の写真の最上段)。USBメモリやNASに入っている音楽を再生したり、ウェブラジオを聞いたりできる便利な機器です。



ケースはタカチのYM-150(150x40x100mm)です。電源ON/OFF以外の操作は全てVolumioを使ってネットワーク経由で行うので、パネルは非常にシンプルです。Volumioについては他のサイトに沢山情報があるのでここでは省略します。

↑操作画面はこんな感じ

Volumioにデフォルトで入っているAllo DigiOneのドライバをそのまま使えるように設計してあります。


出力はS/PDIF 2系統(同軸/光)と、HDMI端子を使ったLVDS I2Sの計3系統です。

中身はRAM 4GBのラズパイ4と自作のインターフェース基板1枚だけです。


ラズパイの上にHATと呼ばれる子基板を載せる一般的な形にしなかったのは、爆熱で知られるラズパイ4を冷ましやすくするためです。クールスタッフという放熱フィルムを使ってCPUの熱をケースの天板に逃がす設計にしています。動作中はケース全体がホカホカになります。


ラズパイとインターフェース基板は下の写真のコネクタで繋がっています。
自作の基板にピンソケットを2組取り付けただけです。


回路図は下の通り。

特大サイズの回路図はこちら(リンク)

WM8804をI2Sマスターにして水晶発振のMCLKからBCKとLRCKを生成し、ラズパイに送り込みます。ラズパイは送り込んだクロックに同期したデータを出してくれるので、それをWM8804に入れてSPDIFに変換します。

上記のI2S信号をLVDSに変換してHDMI端子から送り出す回路も付けました。
せっかくHDMI端子を使うので4対の差動レーン以外も少しは有効活用しようと、Utility端子に44.1kHz/48kHz系統の識別信号を入れました。5V電源出力とHPD (Hot Plug Detection) も実装しています。受信側で5V電源とHPD端子が接続されると送信側のLVDSドライバがイネーブルされる仕組みになっています(Q1まわり)。


I2Sの受信側には下のようなLVDS-CMOS変換回路を作って自作AK4495 DACと組み合わせ、2mのHDMIケーブルを使って44.1~192kHzのオーディオ信号が正常に通ることを確認しました。

この基板の電源はHDMIケーブルを通じてネットワークプレーヤーから供給されています。



ここで使っているLVDSレシーバーのDS90LV048Aには終端抵抗が内蔵されていないので、必ず100Ωの抵抗を外付けする必要があります。最初はOn-Chip Terminationだと思い込んで終端抵抗を付けなかったのですが、ハイレゾ信号が通らず間違いに気づきました(恥

下の画像はこのネットワークプレーヤーと上の変換基板を2mのHDMIケーブルで接続して測定したLVDS終端抵抗の両端の電圧です。I2SのMCLKです。


LVDSが正常に動いていれば、上の画像のようにどのレーンにも振幅350mV程度の差動信号が来ているはずです。信号がフルスイングしていたり反射で乱れていたりする場合は異常です。

-----

ネットワークプレーヤーの回路図左下は電源制御に関する部分です。

電源スイッチをONにした時の動作は簡単で、マイコン(ATtiny85)からの信号でQ2をONにしロードスイッチ(Q3, 4)を導通させるだけです。

Q6にはラズパイのUSBバスの5V電源が繋がっており、ラズパイの電源が入っている間は絶対ロードスイッチがオフにならない仕組みになっています。

電源スイッチをOFFにすると、マイコンからの信号がラズパイのGPIO4(プルアップされている)をLOWにします。すると、あらかじめ設定しておいたVolumioのプラグイン "GPIO Buttons" がラズパイを安全にシャットダウンさせてくれます。


ラズパイがシャットダウンしてUSBバスパワーがオフになったことをマイコンが検知すると10秒後にQ2がオフになり、ラズパイと自作基板への電源供給を止めます。電源OFF時でもマイコンは常に起きています。

-----

現在このネットワークプレーヤーはほぼウェブラジオ専用機となっていますが、NAS(実は所有している)を久々に取り出して再びネットワークオーディオ環境を整える予定です。

このプレーヤーと組み合わせるためにHDMI-I2S入力を備えたDACも設計中です。
→作りました (ES9028PROを使ったDACの設計と製作)

0 件のコメント:

コメントを投稿