このHowtoでは、Armadillo-IoT G3 を用いた Bluetooth ほこりセンサー REX-BTPM25,Bluetooth エアクオリティ モニター REX-BTPM25Vのデータ収集手順とデータ構造について紹介します。
REX-BTPM25
Bluetooth ほこりセンサー REX-BTPM25とは、ラトックシステム株式会社より販売されているセンサーデバイスです。
以下のようなセンサーを搭載しており、計測命令を受けて一斉に各情報を計測します。
- PM2.5/PM10ダストセンサー
- 温湿度センサー
- 照度センサー
- 気圧センサー
詳細な仕様につきましては、ほこりセンサー付属のマニュアルを確認してください。
GATTツールを利用した動作確認手順
はじめにGATTツールを用いてほこりセンサーにBluetoothで接続し、動作を確認する手順を記載します。
ほこりセンサーへ接続するためには、ほこりセンサーのBDアドレスを取得する必要があります。
ほこりセンサーの電源がONになっていることを確認し、Armadillo-IoT G3のコンソールからコマンドを入力します。
入力後に表示される行のうち、末尾に「PM25」と名のついたBDアドレスを確認します。
確認後、Ctrl+Cでコマンドを終了します。
[armadillo ~]# hcitool lescan
LE Scan ...
00:0C:BF:16:36:EA (unknown)
D6:25:F5:C8:D4:60 PM25 # <- この BDアドレスを確認します。
確認したBDアドレスを用いて、GATTツールでほこりセンサーへ接続します。 「Connection successful」と表示されれば接続完了です。
[armadillo ~]# gatttool -t random -b D6:25:F5:C8:D4:60 -I
[D6:25:F5:C8:D4:60][LE]> connect
Attempting to connect to D6:25:F5:C8:D4:60
Connection successful
Armadillo-IoT G3からほこりセンサーの動作を確認するため、次のコマンドを入力します。
[D6:25:F5:C8:D4:60][LE]> char-write-req 0x0023 0100000000000000000000000000000000000000
このコマンド入力後、ほこりセンサーが「正面の4つのLEDを点滅し、動作音とともに空気を吸い込む」という測定動作を開始したら動作確認は完了です。 次のコマンドを入力して接続を終了します。
[D6:25:F5:C8:D4:60][LE]> disconnect
[D6:25:F5:C8:D4:60][LE]> exit
[armadillo ~]#
Armadillo-IoT G3でデータを収集する設定手順
ほこりセンサーから計測データを収集するために、次の内容を設定します。
- 現在時刻設定
- 連続計測開始設定
- 計測結果通知設定
このHowtoでは例として、設定用に用意したshellスクリプト「rex-btpm25_sample.sh」を使用します。
下記にスクリプトを記載します。
http://download.atmark-techno.com/misc/howto_armadillo_rex-btpm25/rex-btpm25_sample.sh
スクリプトの実行に必要なパッケージをインストールします。
[armadillo ~]# apt-get update
[armadillo ~]# apt-get install bc
このスクリプトは「現在時刻の1分後から連続測定をスタート。1分毎に測定を行い、結果を標準出力に表示する設定を行う」という内容になっています。
スクリプト実行後、以下のように出力されます。
[armadillo ~]# ./rex-btpm25_sample.sh D6:25:F5:C8:D4:60
Characteristic value was written successfully
Characteristic value was written successfully
Characteristic value was written successfully
Notification handle = 0x0011 value: 3a 11 19 08 11 06 00 00 00 e8 03 1d 1e 72 01 ff ff ff ff 00
Notification handle = 0x0011 value: 3b 11 19 08 11 08 00 00 00 e8 03 1d 1e 75 01 ff ff ff ff 00
Notification handle = 0x0011 value: 00 12 19 08 11 03 00 00 00 e8 03 1c 1f 6c 01 ff ff ff ff 00
...
出力された行の「value」が、ほこりセンサーのデータになります。
上記のようにデータ収集を行った後、収集したデータを「まとめてクラウドにアップする」「見やすい形に整えてログファイルに保存する」等の運用が可能です。
詳細なGATTサービスの仕様については、ラトックシステム株式会社に問い合わせてください。
データ構造
上記で収集した計測データの構造を説明します。
今回取得したデータ構造は次の表のようになっています。
各値はリトルエンディアンで構成されています。
例:3b 11 19 08 11 08 00 00 00 e8 03 1d 1e 75 01 ff ff ff ff 00
データ値 | 内容 | 解析後の値 | 詳細 |
---|---|---|---|
3b 11 19 08 11 | 計測日時 | 2017年8月25日17時59分 | [分][時][日][月][年]の順で表示 |
08 00 | PM2.5濃度 | 8 μg/m3 | -32,768 ~ 32,767 μg/m3 |
00 00 | PM10濃度 | 0 μg/m3 | -32,768 ~ 32,767 μg/m3 |
e8 03 | 気圧 | 1000 hpa | -32,768 ~ 32,767 hpa |
1d | 温度 | 29 ℃ | -128 ~ 127 ℃ |
1e | 湿度 | 30 % | -128 ~ 127 % |
75 01 | 照度 | 373 lx | -32,768 ~ 32,767 lx |
ff ff ff ff | CO2,TVOC | AQ センサ非搭載 | AQ センサ非搭載ならばff ff ff ff |
00 | 計測モード | 連続計測モード | 00:連続計測モード |
REX-BTPM25V
Bluetooth エアクオリティ モニター REX-BTPM25Vとは、2017年9月下旬より発売されたREX-BTPM25の次世代機です。
搭載センサーはREX-BTPM25と変わりません。
詳細な仕様につきましては、付属のマニュアルを確認してください。
Armadillo-IoT G3でデータを収集する設定手順
REX-BTPM25でArmadillo-IoT G3からデータを収集した例と同様の操作をREX-BTPM25Vでも行います。
REX-BTPM25の確認動作と同様に、ほこりセンサーの電源がONになっていることを確認してArmadillo-IoT G3のコンソールからコマンドを入力します。
入力後に表示される行のうち、末尾に「PM25V」と名のついたBDアドレスを確認します。
確認後、Ctrl+Cでコマンドを終了します。
[armadillo ~]# hcitool lescan
LE Scan ...
00:0C:BF:16:36:EA (unknown)
ED:F6:ED:80:F1:C5 PM25V # <- この BDアドレスを確認します。
「REX-BTPM25V」は「REX-BTPM25」から一部仕様が変化しており、「REX-BTPM25」で使用したシェルスクリプトがそのまま使えません。
そのため、REX-BTPM25V専用に用意したshellスクリプト「rex-btpm25v_sample.sh」を使用します。
スクリプトの動作内容は「rex-btpm25_sample.sh」と同様です。
下記にスクリプトを記載します。
http://download.atmark-techno.com/misc/howto_armadillo_rex-btpm25/rex-btpm25v_sample.sh
スクリプト実行後、以下のように出力されます。
[armadillo ~]# ./rex-btpm25v_sample.sh D6:25:F5:C8:D4:60
Characteristic value was written successfully
Characteristic value was written successfully
Characteristic value was written successfully
Notification handle = 0x0011 value: e0 88 66 23 1c 74 00 00 94 72 08 56 96 27 f1 01 0f b8 0f 10
Notification handle = 0x0011 value: 00 89 66 23 1b 58 00 00 94 7a 08 56 97 27 f0 01 0f b8 0f 10
Notification handle = 0x0011 value: 20 89 66 23 13 7c 00 00 94 82 08 56 97 27 ee 01 11 10 10 10
...
出力された行の「value」が、ほこりセンサーのデータになります。
詳細なGATTサービスの仕様については、ラトックシステム株式会社に問い合わせてください。
データ構造
上記で収集した計測データの構造を説明します。
「REX-BTPM25V」の計測データは「REX-BTPM25」と異なっており、専用の分解方法を使用します。
以下に例を用いたREX-BTPM25Vの分解方法を記載します。
例:value: e0 88 66 23 1c 74 00 00 94 72 08 56 96 27 f1 01 0f b8 0f 10
1.4byteずつにグループ分けする
例:「e0 88 66 23」「1c 74 00 00」「94 72 08 56」「96 27 f1 01」「0f b8 0f 10」
2.各グループ内の16進数値を「a b c d」から「d c b a」に入れ替え、空白を削除する
例:「236688e0」「0000741c」「56087294」「01f12796」「100fb80f」
3.変換ツール等でそれぞれを2進数に変換する。変換後の値がそれぞれ32bitずつあることを確認する。
例:「00100011011001101000100011100000」「00000000000000000111010000011100」「01010110000010000111001010010100」「00000001111100010010011110010110」「00010000000011111011100000001111」
4.左端を31ビット目,右端を0ビット目として、各グループ毎に決められた分解パターンに沿って2進数値を切り分ける。
その後10進数変換して値を得る。
一部の値は数値計算を行う。
各グループの分解表を以下に記載します。
グループ1
ビット値範囲 | 文字数 | 2進数データ値 | 内容 | 変換後の値 |
---|---|---|---|---|
31~25ビット目 | 7文字 | 0010001 | 計測年 | 17年(2017年) |
24~21ビット目 | 4文字 | 1011 | 計測月 | 11月 |
20~16ビット目 | 5文字 | 00110 | 計測日 | 6日 |
15~11ビット目 | 5文字 | 10001 | 計測時 | 17時 |
10~5ビット目 | 6文字 | 000111 | 計測分 | 7分 |
4~0ビット目 | 5文字 | 00000 | ダミー | 0 |
グループ2
ビット値範囲 | 文字数 | 2進数データ値 | 内容 | 変換後の値 |
---|---|---|---|---|
31~24ビット目 | 8文字 | 00000000 | RFU | 0 |
23~20ビット目 | 4文字 | 0000 | UVI | 0 |
19~10ビット目 | 10文字 | 0000011100 | PM10濃度 | 28[μg/㎥] |
9~0ビット目 | 10文字 | 0000010111 | PM2.5濃度 | 23[μg/㎥] |
グループ3
ビット値範囲 | 文字数 | 2進数データ値 | 内容 | 変換後の値 |
---|---|---|---|---|
31~21ビット目 | 11文字 | 01010011011 | 気圧計温度 | 667/10-40 = 26.7[℃] |
20~11ビット目 | 10文字 | 0100101010 | 湿度 | 298/10 = 29.8[%/RH] |
10~0ビット目 | 11文字 | 01000010111 | 温度 | 535/10-40 = 13.5[℃] |
グループ4
ビット値範囲 | 文字数 | 2進数データ値 | 内容 | 変換後の値 |
---|---|---|---|---|
31~16ビット目 | 16文字 | 0000000111110001 | 照度 | 497[lx] |
15ビット目 | 1文字 | 0 | VOCセンサー状態:起動 | 0 |
14ビット目 | 1文字 | 0 | VOCセンサー状態:初期 | 0 |
13~0ビット目 | 14文字 | 10011110010110 | 気圧 | 10134/10 = 1013.4[hPa] |
グループ5
ビット値範囲 | 文字数 | 2進数データ値 | 内容 | 変換後の値 |
---|---|---|---|---|
31~24ビット目 | 8文字 | 00010000 | 計測データモード | 16(拡張連続計測データ) |
23~11ビット目 | 13文字 | 0000111110111 | eCO2 | 503[ppm] |
10~0ビット目 | 11文字 | 00000001111 | TVOC | 15[ppb] |