Bluetooth(BLE)の機器のhackのために、BLED112というドングル型開発キットを手に入れた。
Silicon Labs BLED112-V1 (Amazon)
この間、BLE hackのためにBluetooth 4.0用ドングルを買ったのだが、WindowsのBLE関係のAPIがいまいち使えない。
Windows上で、C/C++でBLEのAPIを使おうというのはあきらめて、Windows上でPythonを使ってBLEをいじってみようと思った。
Python用のBluetooth/BLEのライブラリはいくつかあるようだが、Windowsで動くのはpygattというのがあるようだ。
だだ、pygattというライブラリは、上記のBLED112というドングル型の開発キットのみをサポートしていて、このデバイスでのみ動作するという。
なので、BLED112を手に入れたのだった。
—
BLEDをWindows 10のPCのUSBポートに挿すと、シリアルポートとして認識される。Bluetoothドングルっぽい見た目なのだが、OSからはBluetoothデバイスとして認識されない機器である。
Windows上のPython環境はAnacondaを自分は使っている。
Anacondaのコマンドラインから、pipを使ってpygattをインストールした。
そして、pythonのコードをちょっと書いて、BLEの周りのデバイスをスキャンするコードを書いてみた。
import pygatt
adapter = pygatt.BGAPIBackend()
try:
adapter.start()
devices = adapter.scan(run_as_root=True, timeout=8)
for device in devices:
rssi = device['rssi']
address = device['address']
name = device['name']
print(rssi,address,name)
finally:
adapter.stop()
無事、動くことが確認できた。
—
GUIのサポートツールがあり、これを弄りながらlogの表示を眺めると、いろいろと参考になる感じだ。
→ https://www.silabs.com/wireless/bluetooth/bluegiga-low-energy-legacy-modules/device.bled112
公式サイトからダウンロードのページに行き、SDK一式をダウンロードすると、GUIツールも入手できる。(Bluegiga_ble-1.8.0-143.exe)
—
C/C++でBLEDを使うためのbglibというライブラリがあるようなので、Visual Studio 2019でビルドして使ってみようとしたのだが、うまくいかなかった。
cmakeを入れてなかったので、代わりに自分でMakefileをでっちあげてビルドして、コンパイルエラーが出ないように多少修正して動かしたのだが、pygattみたいなscanが動作しないようだった。
—
bglibのソースコードとかを横目で見ながら、BLEDを直接シリアル通信で叩いて回りのBLEデバイスをスキャンするプログラムを作り始めた。