M5Stack BLE Connection

M5Stackを使ったBLE通信のテストをしてみました。

以前、ESP8266というWiFiモジュールについてテストしたことがありますが、Arduinoを使った開発ができることがとても便利に感じました。

ESP8266 WiFi


M5StackはESP32というWiFiだけでなく、Bluetoothも対応し、それにユーザインターフェイス、バッテリ駆動・・・もうこれだけで、かなり使用用途が広がることがわかります。スタックということでモジュールを積み重なることで機能を追加できます。
通信相手は、M5Stickというもっと小型化したデバイスを使います。

BLE通信については、このブログで何度か取り上げましたが、以下が最初になります。

Bluetooth LE Connection

もう一度思い出しながらテストをしているのですが、いつも混乱してしまうのは、マスタ/スレーブの関係だったので、それぞれの役割をまとめてみました。

[マスタ]
セントラル(Central)
スキャン
接続要求・切断
クライアント

[スレーブ]
ペリフェラル(Peripheral)
ペリフェラルはサービス(Service)とキャラクタリスティック(Characteristic)で定義
アドバタイズ(待ち受け)
接続要求を受けるとアドバタイズ終了・接続確率
接続切断を受けると再度アドバタイズ

どうしても慣れ親しんだWebサーバなどのクライアント/サーバの考え方でいうと、サーバが複数のクライアントを待ち受けするという構図と思ってしまうのですが、BLE では一つのクライアントが複数のサーバにリクエストするという構図になります。

ここではセントラルがM5Stick、ペリフェラルがM5Stackとしてテストします。

〇セントラル

参考) /http://keisoku-lab.mond.jp/2018/01/30/esp32%E3%81%AEarduino-ide%E3%81%A7ble%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F/

〇ペリフェラル

参考) https://qiita.com/nsawa/items/2afd4ae9c10af87d0133

テストは、ボタンを押すと文字列を相互に送信することを確認にしました。
実際に動かしてみると、この手軽さがとても魅力です。