2024年8月25日日曜日

リコーの環境センサーD202のbluetoothプロトコルの解析

 チップワンストップ(URL)でリコーの環境センサーD202(URL)を買ってみた。初回割引1,000円で税込み22,055円。
注文して日通さんの手違いか日通サイトでは8/14納品予定と書かれていたのに結局8/19に届く。

センサーは軽くて使いやすそう。

BLE Scanner(URL)でbluetoothの値を見ると下記の模様。

LENTYPEVALUE
20x010x04
50x090x(センサに貼られているシールに記載の識別名4文字がASCIIで格納)
210xFF0x5F069122D3880100DF0D00004AB00000326B89E4

センサーの値を解析しているが現在の所の考察は下記。
番号0001020304050607080910111213141516171819
5F069122D3880100DF0D00004AB00000326B89E4
意味固定??気圧気温湿度電圧?照度?

〇判明分
気圧: 上記の場合,0x000188D3(10進数: 100563)に気圧の100倍している値が格納されている。変換して 1005.63hPaの模様。リトルエンディアンと言えば良いのかな。
気温: 上記の場合,気圧と同様で0x00000DDF(10進数: 3551)に100倍しているセ氏が格納されているので変換して35.51度。マイナスは2の歩数表現で格納。
湿度: 上記の場合、気圧と同じで0x0000B04A(10進数: 45130)で1,000倍している湿度が入っているので変換して45.130%。

〇不明分
電圧: 標準のツールで値を見ていると,2.55v, 2.56v, 2.57vしかまだ表示されたことがない。番号17は0X6A、0x6B、0x6Cしか見たことないので、「電圧値 = 1.50 + 番号17」が仮説1。
番号16は様々な値をとるが同じような時間帯は大きく値が変わらない。
番号16も含めた可能性もあり 0x6B32(10進数: 27442)と解釈して、電圧値が10,000倍してと仮定して 2.7442 として「電圧値 = 測定値 - 0.2」だと表示の値となるのが仮説2。
どちらもマジックナンバーがあるので、まだはっきりわからず。

照度: 0 lxの時、番号18,19の値がともに0x00になる。1.9 lxぐらいの時は番号18(0x00),番号19(0x57)、2991.3 lxぐらいの時は 番号18(0x77),番号19(0x6A)。
照度をゼロにすると値がゼロなので番号18,19は照度に関係あると思うが気圧などと違いビックエンディアンで格納されているように思える。製品仕様として照度は0~10000 lx(0.1 lx単位)なので16bitでは表現として足りないと思われる。番号16,番号17は隣接しているが電圧と関係しているので関係ないように思える。番号03も様々な値をとるが番号16と同じように同じ時間では大きな変動がないようにも見える。照度を0 lxにしても特にゼロにはならない。番号18,19(0x89E4), 番号18,19,03(0x89E422)と解釈してもうまくいかない。
なおサンプルに挙げているときの照度は 7318 lxぐらいの時の値。

番号01,02,03: 固定値のように見える。少なくともセンサを野外に持ち出し照度の高い状態や冷凍庫の中などに入れても変動しない。