今から始める電子工作 ⑳ I2Cバス その3-1 温湿度センサSHT45 BLEの概要
Arduino UNO R4 WiFi は、BLEに対応しています。BLEはBluetoothの無線通信の中で、ローパワーで通信ができる規格です。
●環境
- Arduino IDE;2.3.4
- Windows11;24H2
- Arduino UNO R4 WiFi
- ArduinoBLEライブラリ1.3.7
●BLEライブラリ
ArduinoのBLEライブラリのドキュメントは、次のWebページにあります。
https://docs.arduino.cc/libraries/arduinoble/
Arduinoマイコン・ボードの中に、ESP32を使ったものがあり、そのBLEライブラリは、上記のライブラリとは異なっています。
今回、温湿度センサSHT45から読みだした温度と湿度のデータを、どこかへBLE通信で送ります。このとき、送り手はBLEペリフェラルと呼びます。受信する側はBLEセントラルと呼ばれます。
●大雑把なBLEの構造
一番外側がGATTで、その中に複数のServiceがあります。Serviceの中に複数のCharacteristicsがあるという構造をしています。ServiceとCharacteristicsにはユニークなUUIDが振られています。バッテリ・サービスのように決まった(登録されている)UUIDもありますが、多くは、各社各自、自由に使っています。
BLEペリフェラルのスケッチでは、これらのUUIDとそのパラメタを定義していきます。
●可視化ツールにオンセミのRSL10を使う
スマホのアプリにもBLEの可視化ツールはありますが、ここでは、Windows11に、オンセミのツールをインストールします。USBにドングルRSL10-USB001GEVKを指します。
https://www.onsemi.jp/products/wireless-connectivity/bluetooth-low-energy/rsl10
上記URLからBLE Explorerをダウンロードし、Windows11にインストールします。ドングルは、CP210xのUSB-UARTが使われているので、ドライバをどこからか入手しておきます。
BLE Explorerを起動し、Scanボタンをクリックすると、近くのBLEを検出してきます。
温湿度表示器SwitchBotを近くに置いておいたので、見つけてきたので、選択します。基本的なデータを読みだしてきて、右側のエリアに表示します。
右のエリアのメニューConnectをクリックし、Discover Servicesをクリックします。Infoのタブの右にServicesのタブが出てくるので選択します。
一番下のブロックを見ます。
ServiceのUUIDがCBA20D00-224D-11E6-9FB8-0002A5D5C51Bです。
Characteristicは二つあって、送られてくるdataをリードするCBA20003-224D-11E6-9FB8-0002A5D5C51Bと、
commandを送るためのCBA20002-224D-11E6-9FB8-0002A5D5C51Bが見えています。
これらは、https://github.com/OpenWonderLabs/SwitchBotAPI-BLE?tab=readme-ov-file に解説があります。