2台のLinuxマシン間でBLE通信する実験

前回記事では、LinuxマシンにGATTサーバを立て、サーバから送信されるデータをスマホのGATTクライアントに受信させた。

BlueZのPythonテストコードでGATTサーバを動かす
「GATTサーバ」はBLE通信を用いてGATTクライアントからの接続要求に応じると共にデータをGATTクライアントに送信する。例えば、BLE対応の体温計などのセンサ類はGATTサーバの役割を担い、それらのデータを受け取るスマホはGATTクラ...

今回は、別のLinuxマシンでPythonコードによるGATTクライアントを動作させ、2台のLinuxマシン間でBLE通信を行う実験を行ったのでメモを残す。

スポンサーリンク

GATTサーバの準備

下記記事の方法に沿い、LinuxマシンでGATTサーバを動かしておく。

BlueZのPythonテストコードでGATTサーバを動かす
「GATTサーバ」はBLE通信を用いてGATTクライアントからの接続要求に応じると共にデータをGATTクライアントに送信する。例えば、BLE対応の体温計などのセンサ類はGATTサーバの役割を担い、それらのデータを受け取るスマホはGATTクラ...

bluetoothctlでGATTサーバとペアリングする

GATTサーバとは別のLinuxマシンで”sudo bluetoothctl”を実行し、まずは周辺のBLEデバイスをスキャンする。

scan on

見つかったBLEデバイスがズラズラと表示され…

Discovery started
[CHG] Controller E8:48:B8:C8:20:00 Discovering: yes
[NEW] Device 5A:5C:6F:FC:E9:88 5A-5C-6F-FC-E9-88
:
[NEW] Device E8:D0:FC:F2:72:DA myHRsensor

別のLinnuxマシンで動いているGATTサーバ”myHRsensor”が見つかるので、ペアリングを実行する。

pair E8:D0:FC:F2:72:DA

そして、以下1.2.の順番で実行するとペアリングが成功しGATTサーバとの接続が確立される。

  1. GATTサーバ側のbluetoothctlにペアリング確認メッセージが表示されるので先にyesを入力し
  2. 続いて手元(GATTクライアント側)の確認メッセージにもyesを入力

これでGATTクライアントを動かす準備は完了。

BlueZのテストコードでGATTクライアントを動かす

BlueZのテストコードはGATTサーバ側を動かした時の記事に記した通り、BlueZのGitHub test/ディレクトリ下にある。

Pythonコードexample-gatt-clientを実行しGATTクライアント開始

bluetoothctlの操作でGATTサーバとの接続が確立されていれば、以下のコマンド実行でGATTサーバから送られて来る心拍センサの信号を受信出来るようになる。

sudo python example-gatt-client

コンソール出力は以下のような感じ。受信した心拍数の値が”HR”に、時々”Energy Expended”にバッテリー残量の値が時々刻々と表示される。

Getting objects...
Heart Rate Service found: /org/bluez/hci0/dev_E8_D0_FC_F2_72_DA/service0049
HR Measurement notifications enabled
Body sensor location value: Chest
New HR Measurement
    HR: 119
    Sensor Contact status: contact detected
New HR Measurement
    HR: 111
    Sensor Contact status: contact detected
    Energy Expended: 50
New HR Measurement
    HR: 129
    Sensor Contact status: contact detected
New HR Measurement
    HR: 99
    Sensor Contact status: contact detected
:

まとめ

2台のLinuxマシン間でGATTサーバ/クライアントをそれぞれ動かし、BLE通信でデータをやりとりする実験を行った。例によってBlueZ同梱のサンプルPythonコードの中身には触れずコードをそのまま動かすのにとどめたが、いずれPythonコードを自作してのBLE通信に挑戦してみたい。

コメント