カテゴリー
Raspberry Pi オーディオ

DAC PCM5102A で Raspberry Pi オーディオ

Raspberry Pi に 32bit 384kHz ハイレゾ対応 DAC PCM5102A を接続して オーディオ再生します。

ハイレゾ対応の TI製 32bit 384kHz オーディオ用 DAC PCM5102A をRaspberry Pi に I2S 接続し、音楽を再生する方法について説明します。

筆者は Raspberry Pi Zero を使いましたが、Raspberry Pi 2/3/4等にも対応しています。

ハイレゾ対応の TI製 32bit 384kHz オーディオ用 DAC PCM5102A をRaspberry Pi に I2S 接続し、音楽を再生する

TI製 PCM5102A

本稿では、32bit 384kHz ハイレゾ対応ステレオ・オーディオ用 DAC PCM5102A(TI製)を使用します。外付け水晶発振器なしで動作可能(PLL内蔵)なうえ、秋月電子通商から下図のようなモジュールとして販売されており、入手や取り扱いが容易です。

外付け水晶発振器なしで動作可能(PLL内蔵)なうえ、秋月電子通商からモジュールとして販売されており、入手や取り扱いが容易(ピンヘッダの半田付けは必要)

ピンヘッダ(上図の右側の部品)は、半田付けが必要です。下図は、半田付け後の様子です。

PCM5102A DIP化キット AE-PCM5102A(秋月電子通商) にピンヘッダを半田付けした

使用パーツ

  • 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個、ビニール電線
外付け水晶発振器なしで動作可能(PLL内蔵)なので、回路もシンプル

実装例

下図はブレッド・ボードへの実装例です。PCM5102Aの2番ピン-4番ピン間と、3番ピン-5番ピン間には、2.2μFのコンデンサを使用します。オーディオ出力の6番ピンと7番ピンについては、470Ωの抵抗を経由し2200pFのコンデンサを接続し、ローパス・フィルタを構成します。

PCM5102Aの2番ピン-4番ピン間と、3番ピン-5番ピン間には、2.2μFのコンデンサを使用し、オーディオ出力の6番ピンと7番ピンについては、470Ωの抵抗を経由し2200pFのコンデンサを接続する

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の配置図を以下に示します。

オーディオ用インタフェース I2S は、Raspberry Pi の40ピン拡張端子上のPCM_CLK、PCM_FS、PCM_DOUTの3つの信号線を使用する

Raspberry Pi との配線例

下図は配線例図です。Raspberry Pi の電源3.3VとGND、3本のI2S信号、タクトスイッチ接続用のGPIO27(13番ピン)をブレッド・ボード上の回路に接続しました。

Raspberry Piの3.3V出力、GND、3本のI2S信号、タクトスイッチ接続用のGPIO27をブレッド・ボード上の回路に接続した

音質改善

PCM5102A の性能を発揮するには、IC内の電源用のコンデンサ(2.2μF)を、ICピンの近くに実装します。下図は、変換基板上にチップ・コンデンサを実装した場合の製作例です。

PCM5102A の性能を発揮するには、チャージポンプ用のコンデンサ(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チャンネルを定義しています。好みに合わせて、変更、追加、削除してください。

Raspberry Pi + DAC + アンプ

下図は Raspberry Pi Zero、市販DAC、D級アンプをケースに組み込んだ製作例です。自分だけのオーディオ機器を作って楽しんでみてください。

インスタグラム

高解像度写真を公開しました。

当ブログのオーディオ関連記事は下記をご覧ください。

by bokunimo.net/blog/menu/audio/

「DAC PCM5102A で Raspberry Pi オーディオ」への1件の返信

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください