はじめに
ESP32には、Bluetooth機能が内蔵されていますが、今回、そのBluetooth Classicを使って、WiiリモコンのBluetoothデバイスアドレスをESP32で取得してみます。Bluetoothスタックとして、BTstackを使用し、exampleに含まれている gap_inquiry をそのまま実行するだけです。
開発環境の準備
ESP32の開発環境をWindows10(64bit)のUbuntu上に準備します。
⇒ ESP32 で Hello world! - Ubuntu (Windows Subsystem for Linux)
Bluetoothスタック(BTstack)の準備
cd ~/
git clone https://github.com/bluekitchen/btstack.git
cd ~/btstack/port/esp32
./integrate_btstack.py
Wiiリモコンの認識
ビルド
シリアルポートの設定
menuconfig というプロジェクト設定ツールを起動し、シリアルポートの設定を行います。
cd ~/btstack/port/esp32/example/gap_inquiry
make menuconfig
[Serial flasher config] → [Default serial port] で、ESP32と接続しているシリアルポートを設定します(例えば、/dev/ttyS14)。通信速度やオプション指定も図のように合わせてください。
設定後、< Save >で保存し、< Exit >で終了します。
ビルドと書き込み
次のコマンドで、ビルドと書き込みを行います。
make flash
モニター
次のコマンドで、ESP32とモニター接続します。すると、Starting inquiry scan.. とスキャンが開始されます。
make monitor
Wiiリモコンの検出
WiiリモコンのAボタンとBボタンとを同時に押し、下部の4つの青色LEDを点滅状態にします。すると、ESP32(gap_inquiry)がBluetoothデバイスを検出し、そのアドレス(Device fount:)と名称(Name:)とを出力します。
Starting inquiry scan..
Device found: 00:1?:??:??:??:?2 with COD: 0x002504, pageScan 1, clock offset 0x3b63, rssi -63 dBm
Get remote name of 00:1?:??:??:??:?2...
Name: 'Nintendo RVL-CNT-01'
Starting inquiry scan..
おわりに
Wiiリモコンは、Bluetoothデバイスですので、そのアドレスと名称とをESP32で取得することができました。