BLE接続は難しい?
BLEは「Bluetooth Low Energy」のことで、通常のBluetoothよりも省電力での接続を実現できます。最初はBLEの意味すらわからず、プログラミングを本格的に始めて1年程度の私でしたが、やってみると数日でBLEセンサーをCONEXIOBlackBearにつなげることができました!先輩方からも助言をいただきましたが、振り返ってみれば意外に簡単という印象でした。
※そもそもCONEXIOBlackBearってなに?という方は下記の記事をご確認ください!
BLE接続の構成
今回使用したセンサーは、ユニ電子の温湿度センサー (Loggta、LoggtaCable、LoggtaWR) と、CO2センサー(Logtta CO2)です。またBLE接続を実行するためには、bluepyと呼ばれるPython用ライブラリを用いると簡単です。
■ユニ電子Logttaシリーズ紹介ページ http://www.uni-elec.co.jp/logtta_page.html
BLE接続の構成としては、BLEセンサーはアドバタイズ(ブロードキャスト通信)で、親機であるCONEXIOBlackBearに対して「私はここにいるよ」と知らせます。その知らせをCONEXIOBlackBear上でbluepyによって取得し、温度(℃)・湿度(%)・バッテリー残量(%)・CO2濃度(ppm)を、CONEXIOBlackBear上で表示させました。
bluepyのインストール方法
bluepyをインストールする手順については以下のコマンドをCONEXIOBlackBear上で叩くだけなので簡単です。
# apt-get install python3-pip
# apt-get install libglib-2.0-dev
# pip3 install bluepy
センサーをアドバタイズモード(ビーコンモード)にする
ユニ電子のBLEセンサーは、初期設定のままだとiPhoneでデータを受信する設定になっています。そのためiPhone上のユニ電子アプリを使用して、BLEセンサーをビーコンモードに設定します。詳しくは上記のユニ電子URLに掲載されている資料をご覧ください。
プログラムの実行(温湿度センサーの例)
import bluepy #bluepyをimportする
scanner = bluepy.btle.Scanner(0)
devices = scanner.scan(3) #3秒間周辺をスキャンする
for device in devices:
for (adtype, description, value) in device.getScanData()
#adtypeはアドバタイズデータの種別番号
#adtypeの意味を記述するのがdescription
#データ本体がvalue
com_id=valueの頭文字
if desc=="xxxx" and com_id == "xxxx": #温湿度センサーであるかのチェック
temp=valueから計算
print('Temperature: %f'% temp) #温度の表示
humid=valueから計算
print('Humid: %f'% humid) #湿度の表示
Battery=valueから計算
print('Battery: %d'% battery) #バッテリー残量の表示
上記を読んでいただければ、何をしているかは大体わかっていただけると思います。(思ったよりもプログラム量は少ないと思いました!) CO2センサーも同じように実装することができます。
また、「valueからの計算」については、ユニ電子から情報提供していただいたアドバタイズデータの詳細から計算しました。
そして…いよいよ、このプログラム(scan3.py)の実行です!
上図のように、このプログラムを実行すると、CONEXIOBlackBearのコマンドライン上へ、温度・湿度・バッテリー残量を表示することができました!夏の暑い時期に実施した結果ですので、温度と湿度が結構暑苦しい値になっています…
知識ゼロからでも(もちろんベテランの方でも)思ったよりも簡単ですので、是非BLE接続を試してみてください!
BLEセンサーを、CONEXIOBlackBearでつなげてみませんか?