初めての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でサービスを表示します。
 画面下には、実際に流れているコードがキャプチャされています。