(4)I2Sモジュール を使う

今回は音質の改善とCPU負荷の低減を目指して、I2Sモジュールを導入します。

I2Sとアンプモジュール

Raspberry PI用I2Sモジュールをネットで探すと

等が有ります。これらはRaspberry PIのヘッダーピンに挿入して使用する(配線がいらない)タイプですが値段的にちょっと高い。そこで今回は値段的に安い

インターフェイス I2S PCM5102A DAC デコーダ GY-PCM5102 I2S プレーヤーモジュール Raspberry Pi 用 pHAT フォーマットボードデジタル PCM5102 オーディオボード

を使います。使い方の詳細が、”PCM5102 I2S”に有ります。参考にして下さい。

アンプモジュールは、”PAM8403を使う”を使用します。これはAMAZON”PAM8403 VR ”で約400円位です。

配線

配線は下記の通り。

Raspberry PiとPCM5102との接続

このモジュールには、設定用のパッドが4個有ります。パッドの設定は”PCM5102 I2S”に従って行って下さい。

Raspberry PIにはI2S用デフォルトピンが有り、それらとPCM5102のピンとを下記の様に接続します。

 PCM5102  Default 
BCKGPIO18
DINGPIO21
LCKGPIO19

PCM5102とGF1002(PAM8403)との接続

PCM5102の出力をGF1002に繋いで音を増幅します。このアンプは値段の割に性能が良いのですが、有名なポップアップノイズが有ります。 これに対し、”PAM8403を使う”と同じポップアップノイズ対策しています。

PAM8403のMute端子はLowでMuteオン(音が出ない)。Highでオフ(音が出る)となります。つまり、Raspberry PIの電源オン、オフ時にこのMute端子をLowに設定すればポップアップノイズは発生しません。

ただこの対策はPAM8403のMute端子の引き出しが若干難しいのが難点です。Mute端子を基板から浮かし、そこから信号線を引き出します。

この作業が意外と難しく実は何個かアンプを壊しています。ポップアップノイズを気にしないのならこの辺の回路は必要有りません(GF1002のリワーク必要無し)。配線作業がグット楽になります。

電源

回路では2種類の電圧(5,3.3V) を使用していますが、5Vのみを供給し3.3VはRaspberry PIが 生成するものを使用しています。回路には有りませんが、5Vにスイッチを使用しRaspberry PIへの電源のオンオフを行っています。

Volumio側セットアップ

I2Sモジュールのセットアップ

まずはI2Sモジュールのセットアップを行います。

  1.  ”3本線の設定アイコン”をクリック
  2.  ”再生設定”をクリック
  3.  一般再生オプションのオーディオ出力欄にある
    • ”I2S DAC”をクリック(Onになります)
    • 画面が変わり、DAC Modelの選択を行います。”Generic I2S DAC”を選択
    • 下の”保存”をクリック
  4.  ”再起動”が要求されます。クリックして再起動します。

これでI2Sモジュールのセットアップは完了ですが、PAM8403のMuteコントロールの設定を行っていないので音が出ません。次にMuteコントロールの設定を行います。

GPIO16のセットアップ

Raspberry PIのGPIOは電源投入(初期状態)時、GPIO8までがHigh、それ以降はLowレベルとなります。初期状でLowになるGPIO16を使ってPAM8403のMute端子をコントロールします。

Volumioは”GPIO Control”プラグインを使用してGPIOをコントロールする事が出来ます。以下でプラグインをインストールしGPIO16の設定を行います。

  1.  ”3本線の設定アイコン”をクリック
  2.  ”ブラグインの設定”をクリック
  3.  プラグイン管理画面の”プラグインを検索”タグを選ぶとプラグインの一覧が表示されます
    • 一覧の下の方に”GPIO Control”が有ります。今回はこれを使用します。
      • (1つ上の”GPIO Buttons”と間違えないで下さい)
    • ”GPIO Control”の”インストール”ボタンをクリック
  4.  インストールが開始します。
    • インストールが完了したら”プラグインを有効にする”ボタンをクリック
  5.  プラグイン管理画面に戻って”インストール済みプラグイン”タグをクリック
    • 現時点でインストールされているプラグインの一覧が表示されます。
    • GPIO Controlの”設定”ボタンをクリック
  6.  GPIO 設定画面が表示されます。
    • Volumio立ち上がり時にGPIO16をHighにする為に下記の様に設定
      • System Startup EventOn
        GPIO Pin16
        GPIO StateOn
        DelayNo delay
      • Volumio終了(Shut Down)時はGPIO16がLowに戻るので、終了時の設定は不要
    • 設定後下に有る”Save”ボタンをクリック

動作は後ほど確認します。

ボリュームのセットアップ

この設定を行うとVolumioのメイン画面からボリュームの調整が出来る様になります。

  1.  ”3本線の設定アイコン”、”再生設定”をクリック
  2.  一般再生オプションの音量オプション欄で
    • 初期状態(左側)から右側に編集
    • 編集後下に有る”保存”をクリック
    • その後、再起動して下さい。
  3.  起動時、
    • 画面に初期音量”20”が表示される様になります。
    • 右下のスピーカーのアイコンをクリックすると
  4.  ボリューム設定画面が表示されボリュームの設定が可能。

Raspberry PI単体でVolumioを

(2)7” touch panel を使う(HDMI)で他のPCからWeb画面を通さずにRaspberry PI単体でVolumioを実行するケースについて説明しました。これにI2Sとアンプモジュールを追加します。準備した主な部品は以下の通り。

  • Raspberry PI
    • Raspberry PI 3Bでは消費電力が多いので Raspberry PI Zero 2 Wを使用
  • USB HUB
    • Raspberry PI Zero 2 WはUSBポートが少ない為、これでカバー。
  • 7”LCD
  • LCDケース
  • ACアダプタ
    • 電源用。 5V2A(5V単一電源のみ)
  • PCM5102とGF1002
    • I2Sとアンプモジュール。今回使用したもの。
  • その他
    • スイッチ
    • DCジャック
    • USBケーブル等

配線の概要は以下の通り。

出来上がりは以下の通り。

  • 表面
    • LCDの下にMute用のLEDを設置。
    • アングルのHDMI,USBコネクタを使用しているのでケーブルが目立たない
  • 裏面
    • かなり乱雑になっていますが表側からこれらは見えません。
    • 4ポートのUSBハブにUSB機器。ここにMouse等接続
  • 側面
    • スイッチとDCジャックを設置しています。

電源オンオフとMute状態の確認

LEDはGPIO16がHigh(Mute Off)で点灯、 Low(Mute On)で消灯します。LEDがMuteの状態を点灯消灯で表しています。今回の設定で電源オンオフ間のMuteの状態は以下の様になります

  • 電源スイッチON
    • Raspberry PI Zero 2 Wに電源が投入
    • LCDに”VOLUMIO”と表示されますがその後しばらく真っ暗になります。
    • Mute状態
      • GPIO16の初期値Low ー> LEDは消灯 ー> Muteオン ー> ポップアップ音無し
  • LCDは真っ暗のままですがLEDが点灯
    • Volumioが起動。GPIO16がHighにセット。
    • Mute状態
      • GPIO16:High ー> LED点灯 ー> Muteオフ
      • Muteはオフだが電源投入から時間が経っているのでポップアップ音自体無し
  • LCDにMouseのポインタが表示された後、Volumioのメイン画面が表示される
    • Mute状態
      • Volumioが動作中LEDが点灯 ー> Muteオフ ー> 再生音がスピーカーへ
  • Volumioの終了(”電源オフ”ボタン選択)
    • Volumio終了時にGPIO16の処理は行っていない
    • Volumio終了 ー> Zero 2 WがShut Down ー> GPIO16が初期値Lowとなる。
    • Mute状態
      • GPIO16:Low ー> LEDは消灯 ー> Muteオン
  • 電源スイッチOFF
    • LEDが消灯した後(Muteオン)に電源をオフしているのでポップアップ音無し

LEDはVolumio動作時には必ず点灯しています。Volumioにはスクリーンセイバー機能が有り、一定時間アクセスしないとLCDが真っ暗になります。この時に間違って電源を切られないようにVolumioが動作している事を示す役割も有ります。

使用感

概ね想定通りの出来上がりです。気になる点は

  • 立ち上がるまでに時間がかかる。
    • Zero 2 Wの為か立ち上がりに時間がかかります。
    • でも最初の一回のみなので良しとしています。
  • Volumioの動作が遅い
    • これもZero 2 Wの為でしょうか
    • 選曲を頻繁に行うわけでは無いのであまり気にならない

くらい。

Raspberry PI単品で動作し、かつ通常と同じく他のPCのWebからも操作出来る。大きさも7”と小さく場所を取りません。とても便利です。