【Rover C ProをObnizで動かす】遠隔操作できる自宅監視カメラ(BLE)

  • 2021.05.06
  • IoT
【Rover C ProをObnizで動かす】遠隔操作できる自宅監視カメラ(BLE)

前回の続きです.

前回はRover Cをラズパイから操作しました.
今回はそのラズパイをObnizからBLE通信で接続し、RoverCを操作できるようにします.

BLEについて

「BluetoothLowEnergy」の略.
色々妥協して消費電力を節約することに特化した接続方式です.
制御する側を「セントラル」、そいて制御され情報などを発信する側を「ペリフェラル」と呼びます.

セントラルとペリフェラル

BLE接続手順

・アドバタイズ(Advertise)
 私を見つけて欲しいとペリフェラル側が電波(アドバタイズパケット)を発する行為

・スキャン(Scan)
 セントラルが周囲のペリフェラル(のアドバタイズパケット)を探す

・コネクト(Connect)
 セントラル側から要求し、ペリフェラル側から応答を返すことで接続が完了する.

・ディスコネクト(Disconnect)
 切断.

基本的には上記流れをアルゴリズムとしてプログラムに落とし込めれば接続可能です.
より詳しい部分は様々なサイトで公開されているため割愛致します.
個人的に導入として分かりやすかったサイトを以下に載せておきます.
https://jellyware.jp/kuragemd/bluejelly/ble_guide.html

ペリフェラル(Raspberry Pi)のプログラム

以下にBLE通信(ペリフェラル)の雛形を載せておきます.
onWriteRequest_cmd関数に受け取ったデータを解析し、デバイスに書き込む処理を書くことで
今回に限らず、さまざまな操作を行えるはずです.

main.py

peripheral.py

セントラル(Obniz)のプログラム

Obniz公式サイトのドキュメントを参考に作成
https://obniz.com/ja/doc/reference/common/ble/
各種IDに合わせて専用のボタンなどを作成しておいてください.

結果

ラズパイ側でmain.pyを実行.
Obnizもプログラムを実行することで簡単にラズパイへ接続することができた.

BLE接続完了

データの書き込み

Obnizドキュメントを参考:https://obniz.com/ja/doc/reference/common/ble/central-read-write
バイナリデータを文字列にして送るのが簡単そうです.
obnizコード内のサービスが取得できる位置に以下の処理を加えます.
・例:

また、ラズパイ側main.pyonWriteRequest_cmdコールバックに、取得したデータをコンソール表示する処理を追加します.

実行結果が以下.
データの受信に成功しています.

データ受信

終わりに

今回はObniz、Raspberry PiによるBLE通信についてまとめました.
これで実質ObnizからRover Cに向けてデータを書き込めるようになったので、次はObniz側の入力つまりはコントローラの作成に関してまとめようと思います.