Raspberry Pi Zero W + pHAT DAC
HOME BACK

はじめに

「Raspberry Pi Zero Wのいたずら」で基本的な設定が終了したが、Raspberry Pi Zero Wをどのように使うか思慮している。
そのような折、Raspberry Pi Zero Wを購入したUKのPIMORONIから pHAT DACの案内メールが届いた。
pHAT DACはRaspberry Pi Zero Wと同じ大きさのDAC基板で、Raspberry Pi Zero WとはGPIOピン・ヘッダーで結合して、ミュージック・サーバーとすることができる。
DACはI2Sをサポートしており、192kHz24bitのハイレゾ対応であり、この大きさであればアンプに内蔵することもできそうである。
PIMORONIでは12ポンドの値付けであったが、調べてみたらスイッチサイエンスで1,566円(送料+150円)だったので、 こちらから通販で購入した。

pHAT DAC

下記写真がpHAT DACであるが、基板サイズは65mm*30mm、使用されているDAC-ICはTI PCM5102Aである。
このDAC-ICはI2S、192kHz24bit、しかもIC単体で2.1VRMSのライン出力があるのでキット等によく使用されている。
筆者もすでに、このTI PCM5102Aを使用したキットを応用してDACを製作しているが、今回のpHAT DACは、やはり、それらに比べるとかなり小型であることが魅力である。
ライン出力は3.5mmステレオ・ジャックであるが、その脇にオプションのRCAジャックを配置することができる。
基板裏側に Made in Sheffield,UKとなっているが、何故かその上に日本語で「海賊ロボ忍者さる」と書かれている。

ピン・ヘッダーの半田付け

Raspberry Pi Zero WとpHAT DACを組み合わせて使用するためには、それぞれに20*2 40 ピン・ヘッダーを半田付けする必要がある。
pHAT DACには、このピン・ヘッダーピンが同梱されているが、Raspberry Pi Zero Wでは別途、入手する必要がある。
筆者はのPIMORONIからRaspberry Pi Zero Wを購入した時に追加注文で入手した。
Raspberry Pi Zero WとpHAT DACのそれぞれのピン・ヘッダーを半田付けしたのが下記写真である。

これらの半田付けは確実に行う必要がある。
筆者は別のRaspberry Pi Zero Wにピン・ヘッダーの半田付けを行い、pHAT DACと組み合わせてみたが、動作しなかった。
原因はピン・ヘッダーの半田付け不良であった訳であるが、まともに動作するRaspberry Pi Zero WとpHAT DACあったので、原因の切り分けができたが、そうでないとかなり困難なことになろう。

ビン・ヘッダーを半田付けした2つの基板を結合して完成である。
pHAT DACの電源はビン・ヘッダーを経由してRaspberry Pi Zero Wから供給され、I2S関連データもビン・ヘッダー経由で送られる。
ライン出力は3.5mmステレオ・ジャックから取り出す。

DAC・MPD関連の設定

「Raspberry Pi Zero Wのいたずら」で、すでにRaspbian Jessie Liteをインストールし、基本的な設定は終わっているので、これにDAC・MPD関連の設定を追加していく。

最初に音響関係の現況を確認してみる。
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice

次にPCM5102Aを使用するための設定を施す。
以下のファイルを作成する。
$ sudo vi /etc/asound.conf
pcm.!default {
type hw card 0
}
ctl.!default {
type hw card 0
}

/boot/config.txtに以下を追記する。
$ sudo vi /boot/config.txt
dtoverlay=hifiberry-dac

これでリブートしてaplay -lで確認すると、ドライバー等が組み込まれたことが判る。
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

次はMPD関連の設定を行う。
$sudo apt-get install mpd mpc
$sudo apt-get install alsa-utils

MPDの設定ファイルである /etc/mpd.conf を編集する。
$sudo vi /etc/mpd.conf
最初に bind_to_address という行を探し#でコメントアウトする。
#bind_to_address "localhost"

次の箇所を以下のように編集する。
audio_output {
type "alsa"
name "My ALSA Device"
device "hw:0,0" # optional
# mixer_type "hardware" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional
}

筆者は自作NASに音楽ファイルを格納しているので、それらが再生できるように設定を行う。
$sudo vi /etc/fstab
//192.168.0.95/Music /music cifs username=root,password=samba,uid=mpd,file_mode=0644,dir_mode=0755,iocharset=utf8 0 0

次は / に music ディレクトリーを作りマウントし、/var/lib/mpd/musicへリンクする。
$sudo mkdir /music
$sudo mount -a
$sudo ln -s /music /var/lib/mpd/music

最後にUSBメモリーの自動マウントの設定を行う。
$sudo apt-get install usbmount
$sudo ln -s /media /var/lib/mpd/music

設定が終わったら、MPDを下記のコマンドで再起動する。
sudo /etc/init.d/mpd restart
[ ok ] Restarting mpd (via systemctl): mpd.service

とりあえず、以上の設定でミュージック・サーバーとして機能するが、 本機は小型なので、自宅以外で使用することを想定して追加の機能を施した。
自宅以外では自作NASは使用できないし、USBポートが一つしかないので、それをUSB-LAN変換アダプターとして使ってしまうと、楽曲ファイルを格納したUSBメモリー等を使用することができない。
そのため、Raspberry Pi Zero Wに挿入したマイクロSDカードに直接、楽曲ファイルを格納することとした。
マイクロSDカードにRaspbian Jessie Liteをインストールし、各種設定を施すと約1.5GB程度の容量を消費する。
例えば、8GBのマイクロSDカードを使用すれば、6GB程度を楽曲ファイルの格納に使用でき、44.1kHz16bit wavであれば、CDアルバム 10数枚程度の楽曲ファイルを格納できる。
sambaをインストールしてWindowsPCからLAN経由で楽曲ファイル格納用ディレクトリーにアクセスできれば、楽曲ファイルの管理も簡単である。

先ず、楽曲ファイル格納用ディレクトリー music-subを作り、マウントし、リンクを張る。
$sudo mkdir /music-sub
$sudo mount -a
$sudo ln -s /music-sub /var/lib/mpd/music

次にsamba関連の2つのソフトをインストールする。
$sudo apt-get install samba
$sudo apt-get install samba-common-bin

sambaの設定ファイルを編集し下記を追記する。
$sudo vi /etc/samba/smb.conf
[music-sub]
comment = music-sub
read only = no
locking = no
path = /music-sub
guest ok = yes
force user = root

次にpasswdを設定する。
今回はsambaとした。
$sudo smbpasswd -a root
New SMB password:samba
Retype new SMB password:samba

sambaを再起動して完了である。
$sudo service samba restart
Failed to restart samba.service: Unit samba.service is masked.
再起動出来なかったが、それでもWindowsPCから\\192.168.0.89\music-subでアクセスすると問題なく/music-subに到達し、楽曲ファイルも格納できた。

最後に、OSとMPDのバージョンは以下のとおりである。
$ uname -a
Linux raspberrypi 4.9.35+ #1014 Fri Jun 30 14:34:49 BST 2017 armv6l GNU/Linux

$ mpd -V
Music Player Daemon 0.19.1

楽曲の再生

本機をミュージック・サーバーとして利用するためには、LAN環境とmpdクライアントが必要となる。
筆者はmpdクライアントとしてWindowsPCではGMPC、スマホやタブレットではDoroidMPDを使用している。

左側写真は、本機のセットアップ状況で、オーディオ・ケーブルはアンプへ接続されている。
電源はモバイル・バッテリーである。

右側写真は、スマホのDoroidMPDの画面でmusicホルダーはNASに、music-subホルダーは マイクロSDカードのホルダーへリンクしている。
music-subを選択して、マイクロSDカード内のホルダーに格納している楽曲ファイルを再生することができた。

特性

PCにインストールしたefu氏のテスト信号発生ソフト WaveGeneでいろいろな周波数、いろいろなレベルの192kHz24BITの サイン波を発生させ、waveファイルとしてNASに格納してある。
それを再生しDACのアナログ出力電圧を計測してみた。
1kHz0dBFSを再生すると出力電圧は2.10Vとなり、残留ノイズは1.15mVで、かなり高めであが、これは金属製のケースに入っておらず、むき出しのままであることが影響していると思われる。

周波数特性の傾向は、同じDAC-IC TI PCM5102Aを使用したRaspberry Pi+PCM5102A DACと同じである。
歪率特性もRaspberry Pi+PCM5102Aと同様な傾向を示している。

まとめ

左の写真は、本機と Raspberry Piに同じDAC-ICを組み合わせたRaspberry Pi+PCM5102A DACであるが、違いはその大きさだけである。
両者を比較試聴してみたが、同じ傾向の音であり、違いはよく分からなかった。

Raspberry Pi Zero WはWiFi機能が付いており、技適もクリアーできたので、WiFiの設定にトライしているが、残念ながら出来ていない。
写真でも判ると思うが、USB-LAN変換アダプターがかなり邪魔な存在であり、 WiFiが機能すれば、これが不要となり、アンプ内蔵も容易になるのに本当に残念である。

追補その1 ケース

本機を既存のアンプに組み入れることを検討したが、やはり、スペースが足りなかったり、5V電源供給の問題があり、実現が困難である。
そのような訳でジャンク品を使いケースに入れてみることにした。
インター・フェース部分を他に転用したHDDケースがあったので、これにサブ・シャーシーを組み合わせてみることにした。
このサブ・シャーシーも、半世紀以上も前の軍用受信機のアルミ製シャーシーを切り出したものである。
HDDケースとサブ・シャーシーの固定であるが、サブ・シャーシーにダッビングでネジ穴を設け、ケース底面側からネジ止めしている。

ケースに入れたことにより、むき出しの時、1.15mVもあった残留ノイズが0.18mVに激減した。
さらに、LANケーブルを外すと残留ノイズが0.12mVに低減しているので、WIFIが設定できれば、残留ノイズの更なる低減化が期待できるのであるか・・・。

追補その2 Volumio

Raspbian Jessie LiteではWiFiが設定できなかったので、Volumioでトライしてみる。
サイトからRaspberry Pi用のvolumio-2.246-2017-07-31-pi.imgをダウンロードし、マイクロSDカードにddでコピーした。
Raspberry Pi Zero WにはUSB-LAN変換アダプターを接続し、Win7PCのブラウザーからDHCPサーバーから割り振られるIPでアクセスすると、問題なくWeb画面が表示された。

先ずはNetwork Settings画面から以下のとおり有線LANの設定を行った。

次に懸案であるWiFiの設定であるが、自宅で使用しているルーターのSSIDが表示されていたので、以下のように設定した。

以上を設定し、リブートさせると以下のように有線LANとWiFiが認識され、有線LANのケーブルを外した後、タブレットからWiFi経由で、無事アクセスすることができた。

DAC関連の設定は以下のとおりである。

下記はWin7PCからWiFiでアクセスしたストレージの状態であり、これらに楽曲ファイルを格納することができる。
nasは外部のNASであるが、現状では設定しておらず、usbはUSBポートであるが、WiFiが動作しているので、USB-LAN変換アダプターの代わりに楽曲を格納したUSBメモリー等を接続することができる。
Internal StorageはRaspbian Jessie Liteでも設定したが、マイクロSDカードを楽曲ファイル格納場所にすることができる。
WiFi経由でも70M程度のアクセス・スピードが得られているので、Win7PCから行うInternal Storageへの楽曲ファイルの入れ替えもストレスなく可能である。
ただし、Win7PCからInternal Storageへアクセスしようとするとroot権限を要求されてしまう。
筆者はSSH access on volumioを参照してSSHでアクセスして、Intenal Storageの所有者等を変更した。
なお、SSHでは、id volumio、pass volumio でアクセスする。

当たり前であるが、楽曲の再生は全く問題なく、WiFiのみの場合、残留雑音は0.05mVまで低減した。

VolumioのOSとMPDのバージョンは以下のとおりである。
$ uname -a
Linux volumio 4.9.36+ #1015 Thu Jul 6 16:07:57 BST 2017 armv6l GNU/Linux

$ mpd -V
Music Player Daemon 0.20.6 (4e23dd2-dirty)

WiFiが使えるようになったので、USBポートにUSBメモリーを装着してみた。
USBメモリーへのアクセスは、マイクロSDカードのInternal Storageへのアクセスとは違って、root権限を要求されることもなく、普通に出来る。
また、VolumioではRaspbian Jessie Liteとパーテーション構成が違っており、Internal Storageの容量がかなり少ないようである。
ちなみに4GBのマイクロSDカードでVolumioを設定したが、Internal Storageは数百MBで容量制限がかかってしまう。
例えば、16GBとか32GBのマイクロSDカードに代えた場合、Internal Storageにどのくらいの容量が割り当てられるのか不明なので躊躇している。
USBメモリーでは、その容量がフルに使用できそうなので、とりあえずはこの方法で行くことにする。

追補その3 MPDディストリビューション

VolumioでとりあえずWiFiが使えるようになったが、Internal Storageは数百MBで容量制限がかかってしまうので、仕方なくRaspbian Jessie Liteに戻した。
そのような折、ネットで「SabreberryDAC ZERO用に手軽で軽量なMPDディストリビューションを作りました。」に行き当たった。
この作者はRaspberry Pi+IrBerryDACでお世話になったnew_western_elecのたかじんさんである。
このディストリビューションは「 最新版の2017-06-21-raspbian-jessie-liteをベースに使用して10秒ちょっとで起動します。 SDカードに楽曲データを置いてスタンドアローンで動作します。  追記:APモード対応版も追加しました(7/3)」 とのことであり、筆者の要求にぴったりと合致する。

早速、APモード機能を有するSDカードイメージ 2017-06-21-raspbian-mpdplay_AP をダウンロードしマイクロSDカードにコピーし、Raspberry Pi Zero Wを立ち上げた。
最初に音響関係を確認してみた。
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
Subdevices: 0/1
Subdevice #0: subdevice #0
オリジナルのままでpHAT DACが認識されていた。
このディストリビューションでは、楽曲ファイルを/mnt/sd/musicに置くので、作者お奨めのWinSCPを使ってFLACファイルを格納し、再生すると問題なく音出しができた。

WifiはAP(アクセスポイント)として動作するので、アンドロイド系スマホの設定画面でWiFiを確認すると「アクセスポイント名:MpdPlay」が存在し、「パスワード:123456789」で接続できた。
スマホではMPDクライアントとしてDroidMPDを使っているが、「Server adress 172.24.1.1」で接続でき、MPDをコントロールできた。
WiFiはAPとして動作しているので、WiFiルーターは不要であり、スマホだけで本機をコントロールできるので、自宅以外で使用する場合には非常に便利である。

MPDとOSのバージョンは以下のとおりである。
$ mpd -V
Music Player Daemon 0.19.1
$ uname -a
Linux raspberrypi 4.9.28+ #998 Mon May 15 16:50:35 BST 2017 armv6l GNU/Linux

Raspbian Stretch Liteのヘッドレス・インストール(WiFI編) + PCM5102A DAC

RaspbianがJessieからStrechにバージョンアップしたので、2017-09-07-raspbian-stretch-liteをヘッドレス・インストールしWiFiがすぐに使えるようにしてみた。
さらに、既存のPCM5102A DACと組み合わせてみた。
詳細はこちらからどうぞ。

HOME BACK

Last Update 5/Dec/2017 by mac