ハイレゾ対応の TI製 32bit 384kHz オーディオ用 DAC PCM5102A をRaspberry Pi に I2S 接続し、音楽を再生する方法について説明します。
筆者は Raspberry Pi Zero を使いましたが、Raspberry Pi 2/3/4等にも対応しています。
目次
TI製 PCM5102A
本稿では、32bit 384kHz ハイレゾ対応ステレオ・オーディオ用 DAC PCM5102A(TI製)を使用します。外付け水晶発振器なしで動作可能(PLL内蔵)なうえ、秋月電子通商から下図のようなモジュールとして販売されており、入手や取り扱いが容易です。
ピンヘッダ(上図の右側の部品)は、半田付けが必要です。下図は、半田付け後の様子です。
使用パーツ
- Raspberry Pi Zero または 2/3/4など
- PCM5102A DIP化キット AE-PCM5102A(秋月電子通商)
- 3.5mmステレオミニジャックDIP化キットAE-PHONE-JACK-DIP(秋月電子通商)
- 電解コンデンサ 10μF 16V × 4個
- チップ コンデンサ 2.2μF × 2個
(※ブレッドボードでは電解コンデンサで代用) - オーディオ用コンデンサ 2200pF × 2個
- 抵抗器 470Ω × 2個
- タクト・スイッチ × 1個
- ブレッド・ボード × 1個、ビニール電線
実装例
下図はブレッド・ボードへの実装例です。PCM5102Aの2番ピン-4番ピン間と、3番ピン-5番ピン間には、2.2μFのコンデンサを使用します。オーディオ出力の6番ピンと7番ピンについては、470Ωの抵抗を経由し2200pFのコンデンサを接続し、ローパス・フィルタを構成します。
本例では2.2μFのチップコンデンサを電解コンデンサで代用しました。3番ピン-5番ピンに接続する電解コンデンサの極性に注意してください。5番ピンには-3.3Vの負電圧が生じるので、3番ピン側のGND側を電解コンデンサのプラス(+)側にします。
Raspberry Pi と I2S 接続
Raspberry Piの40ピン拡張端子とは、以下のように接続します。
Raspberry Pi (ピン番号). ピン名 | PCM5102A (ピン番号)など |
(1). 3.3V | (1), (8), (17), (20) VDD等 |
(12). GPIO18 PCM_CLK | (13). BCK |
(13). GPIO27 | タクトスイッチ用 |
(37). GPIO19 PCM_FS | (15). LRCK |
(39). GND | (3), (9), (10), (11), (12), (16), (19) |
(40). GPIO21 PCM_DOUT | (14). DIN |
オーディオ用インタフェース I2S は、PCM_CLK→BCK、PCM_FS→LRCK、PCM_DOUT→DINの3つの信号線を使用します。Raspberry Pi の40ピン拡張端子上のI2Sの配置図を以下に示します。
Raspberry Pi との配線例
下図は配線例図です。Raspberry Pi の電源3.3VとGND、3本のI2S信号、タクトスイッチ接続用のGPIO27(13番ピン)をブレッド・ボード上の回路に接続しました。
音質改善
PCM5102A の性能を発揮するには、IC内の電源用のコンデンサ(2.2μF)を、ICピンの近くに実装します。下図は、変換基板上にチップ・コンデンサを実装した場合の製作例です。
また、電源を強化し、ユニバーサル基板に実装すれば、より安定した動作が可能になります。
ソフトウェアのセットアップ
Raspberry Pi Imager を使ってマイクロSDカードを作成します。CUI上のテキストエディタ(viやnano、emacsなど)が使える方には、軽量なLITE版がお奨めです。
CPUが32ビットの Raspberry Pi (2/Zero/ZeroW)の場合は、「(32-BIT)」表示のあ可るOSを選択してください。それ以外の場合は64-BITを選択すると良いでしょう(32-BITでも可)。
追加インストールと設定
LITE版の場合、以下の手順でソフトウェアの追加インストールと設定を行ってください($ よりも後ろのコマンドを入力)。
デスクトップ環境の場合は、「vi」の部分を「mousepad」と入力し、テキスト・エディタで編集することも出来ます。
(ffplayインストール)
$ sudo apt install alsa-utils ⏎
$ sudo apt install ffmpeg ⏎
(DACの設定ファイル確認)
$ ls /boot/overlays/*.dtbo | grep -e dac -e audio -e pcm -e hifi | cut -d'/' -f4| cut -d'.' -f1 ⏎
(DACの設定)
$ sudo vi /boot/config.txt ⏎ # 以下を追記
dtoverlay=hifiberry-dac
$ sudo vi /etc/modules ⏎ # 以下を追記(古いOS用)
snd_soc_hifiberry_dac
$ sudo reboot ⏎ # システム再起動
(テスト)
$ aplay /usr/share/sounds/alsa/Rear_Center.wav ⏎
(音が出ないときは)
$ aplay -l ⏎ # カード番号とデバイス番号を確認
(表示例)
カード 1: sndrpihifiberry [snd_rpi_hifiberry_dac], デバイス 0: HifiBerry DAC HiFi pcm5102a-hifi-0 [HifiBerry DAC HiFi pcm5102a-hifi-0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
(カード番号1、デバイス番号0のときは -D hw:1,0 を追加する)
$ aplay -D hw:1,0 /usr/share/sounds/alsa/Rear_Center.wav ⏎
(インターネット・ラジオ再生の例)
$ ffplay -nodisp http://listen.livestreamingservice.com/181-power_64k.aac ⏎
(筆者作成ソフトのインストール)
$ sudo apt install git ⏎
$ sudo apt install raspi-gpio ⏎
$ git clone https://bokunimo.net/git/audio ⏎
(実行方法) ※著作権法(後述)に注意して実行してください
$ cd audio/radio/pi ⏎
$ ./radio.sh ⏎
(音が出ないときは、下記のカード番号、デバイス番号を変更して再実行)
$ vi audio/radio/pi/radio.sh ⏎
export AUDIODEV="hw:1,0"
プログラムの内容
筆者が作成したBashスクリプトのプログラム radio.sh には以下の機能があります。
- インターネット・ラジオ再生機能
- タクトスイッチでチャンネル変更(全10チャンネル)
- タクトスイッチ長押しでシャットダウン
プログラム radio.sh:
https://bokunimo.net/git/audio/blob/master/radio/pi/radio.sh
ラジオ局は、予め変数urlsで10チャンネルを定義しています。好みに合わせて、変更、追加、削除してください。
これらのURLは、技術的な学習や検証を目的として設定しています。各サイトが配信するコンテンツの著作権については、配信サイトに確認ください。
もし日本国または米国の法律に違反していることを当方が認知した場合は、速やかにGitHub内に保存した該当URLを削除しますが、当方はそれ以上の責任を負いません。
Raspberry Pi + DAC + アンプ
下図は Raspberry Pi Zero、市販DAC、D級アンプをケースに組み込んだ製作例です。自分だけのオーディオ機器を作って楽しんでみてください。
インスタグラム
高解像度写真を公開しました。
当ブログのオーディオ関連記事は下記をご覧ください。
「DAC PCM5102A で Raspberry Pi オーディオ」への1件の返信
[…] DAC PCM5102A で Raspberry Pi オーディオ […]