ESP32 esp-idf Bluetooth I2s Audio Examples

ESP32 esp-idf の examples の中に、Bluetooth のA2DP(Advanced Audio Distribution Profile:高度オーディオ配信プロファイル) を
使ったサンプルがあるので、それを試してみました。

 esp-idf>examples>bluetooth>a2dp_sink
上記、意味合いは、a2dp の受信側 の意味のよう。

概要は、上記リンク先のページに説明がありますが、
Bluetooth のデバイスとして、オーディオストリームを受信して、外付けの I2sコーデック (PCM5102等) か、内臓のDACに出力するとの事です。

其処の所の設定は、make menuconfig で出来ました。
例により、下記手順で、 
1. esp-idf/examples/bluetoooth/a2dp_sink  のディレクトリーを、自分の作業ディレクトリーへコピー
2. MSYS2 MinGW 32-bit ターミナルを起動して、上記の自分の作業ディレクトリーへ移動
$make menuconfig
   Serial flasher config --> Default serial poort = COMX に変更
   A2DP Examples Configuration --> ここで、外付け I2s,内臓 DACの指定、ピンの指定をする。
   exit
$make -j4
$make flash

3. スマホのBlutooth で接続して、音楽を流す。

後は、Eclipse にインポートして、プログラムを勉強します。

I2S DAC ですが、手持ちのPCM5102が無いので、取り敢えず、
スイッチサイエンスで買った、 UDA1334A で試してみました。

Eclipse から書き込んで、ESP32 をリブートした後、 Andoriod のスマホの Bluetooth で繋げてみたら、
すんなり繋がりました。

早速、Youtube で音楽を聴いてみました。ヘッドホンですが、結構素直な音で流れてきます。
PCのヘッドホーンジャックからの音より良い気がします。
勿論、スマホの音よりは断然良い気がします。

でも、今のサンプリングは、44.1KHz のようなので、せめて、 48KHz くらいほしいです。
ですが、ここは、下記規格の様です。
(参照は、https://watako-lab.com/2018/07/25/droid_ver2_a2dp/ )
【ESPにおける対応状況】
 A2DP: Ver1.2
 AudioCodec: SBCのみ
 AVRCP: Ver1.3

なので、AudioCodecを、SBC からより良いものに対応しないと無理のようです。

プログラムは、何も修正しなくてもOKでした。

後、スマホに直接ヘッドホーンを付けた場合、音量の調整が結構荒かったのですが、
今回は、調整がしやすいような気がします。

Android スマホで、Bluetooth オーディオの設定で、LDAC を指定できるには、Androoid 8.0 以降のようです。
おんちゃんのスマホは、 Android 5.0 とまあ旧式でした。

下記、記事を読むと、LDACは、軽量に作られているとの事なので、もしかしたら、esp-idfに組み込みできるかも。
https://allabout.co.jp/gm/gc/454992/

LDACのライブラリは、androidで公開されているようです。
https://android.googlesource.com/platform/external/libldac

https://qiita.com/eggman/items/fc6ba6844c71a1df305a
上記ページに、簡単なビルド方法の説明があるので、試しに、おんちゃんの、Windows10 MinGW32 で、Gitのダウンロード、ビルドしてみましたがすんなり出来ました。
試してみましたが、encode しか無ので使えません。

このブログ記事について

このページは、おんちゃんが2018年12月 5日 18:03に書いたブログ記事です。

ひとつ前のブログ記事は「ESP32 esp-idf Eclipse でサンプルプログラムの確認。」です。

次のブログ記事は「aptx-encode aptx-decode のプログラムサンプル」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ