初めてのRaspberry Pi BLEプログラミング (1) BluetoothのBLE
Bluetoothの規格は、バージョン3までがクラシックと呼ばれ、4以降はBLE(Bluetooth Low Energy )と呼ばれます。互換性はありません。名前のとおりBLEは省エネの無線規格なので、センサのデータを送るのに適しています。キーボードやワイヤレス・イヤホンのようにペアリングをしないで使います。
●サーバとクライアント
WebサーバとクライアントのWebブラウザの関係のように、
- サーバはペリフェラル
- クライアントはセントラル
という名称で呼ばれます。
2020年4月10日現在、ラズパイのRaspbian Buster with desktop(2020-02-13)でBLEは、BlueZ 5.50(5.50-1.2)が動いています。デーモンは bluetoothd で、設定や制御にはbluetoothctl、hciconfig などのユーティリティが利用できます。hcidumpは、ラズパイにインストールされていないようです。
コマンド | 概要 |
---|---|
bluez | bluetoothd Bluetoothのデーモン |
obex | obexd OBEXのデーモン。OBEXは赤外線やBluetoothを使ってモバイル機器でデバイス間のバイナリ・オブジェクトの交換を可能にする |
bluetoothctl | BlueZのコマンドライン・インターフェース |
obexctl | BlueZのファイル転送のコマンドライン・インターフェース |
hciconfig | HCIデバイスのコンフィギュレーション(構成)コマンド |
hcidump | HCI rawデータを読んで、画面に表示 |
hciattach | Attach a serial UART to the BT stack as a transport interface |
hcitool | Bluetooth接続のコンフィギュレーション(構成)ツール |
sdptool | BluetoothデバイスでSDP(Service Discovery Protocol)クエリを実行するツール |
これ以外に、gatttoolがあります。リモートのGATTサービスやキャラを知ることができます。
●テスト機材
電波は直接目で見れません。物理的な電波はスペアナで見ることができますが、どういう信号が行き来しているかはわかりません。BLEはWi-Fiと同じくネットワーク上を流れるので、解析ソフトWireSharkで捕まえれます。BLE用のハードウェアがAdafruitから出ていますが、取り込んだデータをWireSharkに渡して解析します。汎用ソフトなので、BLEだけを取り出して観測するのは熟練が必要です。
ここではオン・セミコンダクターのRSL10-USB001GEVK: RSL10 USB DongleとそのツールRSL10 Bluetooth Low Enaergy Exploerを使って情報を見ます。情報を見るだけでなく、セントラルでコネクトしたとき、書き込みもできます。ドングルは技適が取れています。
使い方は簡単で、USBドングルをUSBポートに挿し込み、インストールしたRSL10 Bluetooth Low Enaergy Exploerを立ち上げます。COMポートを聞かれるので、デフォルトで選んできたCOMポートを選択するとソフトウェアが立ち上がります。Scanをクリックすると、画面左の窓に、見つけてきたBluetooth機器を列挙します。情報を見たい機器をマウスで選択し、connectで接続し、Discover Serviceでサービスを表示します。
画面下には、実際に流れているコードがキャプチャされています。