Contents
R-MSMのBluetooth信号のスキャンと接続
1.概要
センサモジュールR-MSMのCPUであるESP32は、BluetoothのBLEおよびClassicに対応しています。R-MSMでは、”BluetoothSerial”のライブラリを読み込み、シリアル通信でPDHとやり取りを行います。
ここでは、PDH であるRaspberry PiとR-MSMの接続を、Raspberry Piの端末画面からコマンドを入力して行います。使うコマンドは、Raspberry Piに搭載されている”bluetoothctl”と”rfcomm”の2つです。
2. 事前準備:R-MSMとPDHのBluetooth接続の切断
R-MSM とPDH をBluetoothで既に接続している場合には、以下の処理を実施して接続を切ってください。
① PDHで端末画面を表示します。
② ディレクトリ~/preMSMに移動します。
③ ファイル blth_start.shの名称を変更します。
④ リブートする。
3. R-MSMのスキャン実施
それでは、”bluetoothctl”コマンドを使って、R-MSM をスキャンします。R-MSM に忘れずに電源を入れておいてください。
①PDHで端末画面を表示する。
②”bluetoothctl”コマンドを起動します。
③”power on”と入力し、Bluetoothを起動します。
④”scan on”と入力し、スキャンを実行します。
R-MSM_4C8Aが見つかりました。”44:17:93:60:4C:8A”がBluetoothのMACアドレスです。このアドレスを使って、PDH と接続します。
⑤ 目的のデバイスが見つかったら、”scan off”と入力し、スキャンを止めます。
⑥ その後、”exit”と入力し、”bluetoothctl”コマンドを終了します。
以上で、R-MSMのスキャンは終了です。BluetoothのMACアドレスを使用して、接続を行います。
4. R-MSMをPDHに接続
スキャンで見つかったMACアドレスを使用してPDHに接続します。
すでに記載しましたようにR-MSMとPDHの接続はシリアル通信(SPP:Serial Port Profile)で行います。SPP はrfcomm 上に実装されています。そこで、ここでは”rfcomm”コマンドを使用して接続を行います。以下の手順で接続してください。
① PDHの端末画面で、”rfcomm show 0″ と入力しポート0が使用されていないか確認します。
”No such device”と返され、使用されていないことが分かりました。
② そこで、rfcommのポート0に接続します。”sudo rfcomm bind 0 44:17:93:60:4C:8A”と入力し、bluetoothのMACアドレス”44:17:93:60:4C:8A”をrfcomm0にバインド(接続)します。
③ 上記のコマンドを再度打ってポート0が使用されていることを確認します。
5. blth_start.shの中身確認
「2. 事前準備:R-MSMとPDHのBluetooth接続の切断」でblth_start.shの名称変更を行いました。
まず、そのファイル名を戻しておきます。
$ mv blth_start.sh.org blth_start.sh
そして、そのファイルの中身を見てみてください。
上記で行った内容がshell スクリプトになっています。
Node-REDの起動時に、このスクリプトを実行することで毎回R-MSMとPDHを接続しています。
Appendix. rfcommコマンドの紹介
図A-1に、rfcommのヘルプ画面を示します。上記では、bindとshowコマンドを紹介しましたが、bindを解除するreleaseコマンドがありますので紹介しておきます。
図A-1 rfcomm –help
図A-2に示すように、releaseコマンドを使うことで、bindを解除することができます。別のR-MSMを繋げたい場合などに、いったんreleaseして別のアドレスをbindすることができます。
図A-2 releaseコマンド
connectとbindの違いですが、図A-3に示すように、connectは相手がいないとエラーになり接続できませんが、bindは相手がいなくても接続ができます。
そして相手の電源が入って、接続できるようになったら接続されます。ということで、bindを使って接続予約をするという使い方が便利ですので、もっぱらbindを使用します。
図A-3 connetコマンドとbindコマンド