Bluetooth I2Sコンバータの製作

インターフェース2024年一月号に,Raspberry pi pico wを使ったBluetoothオーディオ
対応のDACの記事がありました.これを参考に(参考というよりはトリガにして)Raspberry pi
pico wを使って,I2Sを出力させDACをつないでオーディオプレーヤ(レシーバ)を作ろうと
思います.


開発環境やプロジェクトの準備

picoの開発環境は,

https://www.raspberrypi.com/products/raspberry-pi-pico/

から情報が得られますので,使っているPC(linux)にインストールします.

pico-sdkだけではなく,pico-examplesとpico-extrasもインストールしておきます.

pico-exampleのなかに,pico_w/bt/a2dp_sink_demoというのがありますが,
buildできません..

ネットを調べると,

https://github.com/joba-1/PicoW_A2DP

というプロジェクトがあって,これを利用することにします.

Raspberry pi pico wへプログラムをダウンロードして動かしてみる.

上記のPicoW_A2DPは,すんなりとbuildでき(るわけではなくcmakeなどを最新版にして)
picow-a2dp.uf2を作ることができました.それをpico wにコピーして,動作させてみます.

PCからbluetooth経由で,PicoW-A2DBという名前のBluetoothデバイスが認識できたので,
接続し,サウンドデバイスとして認識することができました.PC側で音量調整と左右のバランス
ができるようです.



プレーヤーを動作させて,GP10,11,12に約1.6Vの電圧がきていることを確認しました.おそらく
GP10がSCK, GP11がLRCK, GP12がDataだと思います.

PICO_AUDIO_I2S_DATA_PIN=12
PICO_AUDIO_I2S_CLOCK_PIN_BASE=10

というデフォルトのピン指定ですが,ここにはLRCKの指定がありません.これでDACにつないで
見ましょう.

DACに接続してみる.

作りかけのもののなかにPCM5102を使ったDACボードがあったので利用しました.この基板には,
5Vから3.3Vに変換するICも載せてあります.Picoから5Vを供給し,3本の線をPCM5102に加えて,
出力にイヤホンをさして試聴します.

特に問題なく(このまえに,別のPCM5102を電源逆接続して飛ばしているが...)動作しました.



Bluetoothでハイレゾ転送できるか調べてみる

A2DPだと16bit48kHzが上限のようです.現在,aptX AdaptiveやLDACという規格で24bit,96kHz
のハイレゾ対応になるようです.これらは送信側はソースがオープンになっているようですが,受信側
はライセンス契約しないといけないようです.

openaptxというプロジェクトがあって, apt-X HDをリバースエンジニアリングしたdecoderの
ソースがあるようです.

https://github.com/arkq/openaptx

研究目的(for research purposes only)だそうなので,これを使って商売してはいけません.

aptX HDは24bit48kHzまで対応するようです.調べてみましょう(時間かかると思います).


kitamiti@u-aizu.ac.jp