オフィスの会議室やトイレの個室などの使用状態、工場設備の稼働状態など、場所やモノの稼働状態を知りたいことがあります。現在の稼働状態に加えて、1日の中でどの時間帯にどの程度場所やモノが使われていたかを把握することで、場所やモノといった資源が有効活用されているのか、逆に資源が不足してボトルネックになっていないかを調べることができます。

Ambientには、資源の稼働状態を表す「稼働状態」というチャートがあります。IoT端末を使い、稼働状態を可視化する方法を説明します。

稼働状態の測定

稼働状態を測る方法は、測る対象物によって様々な方法があります。会議室やトイレの個室などであれば人感センサが使えそうですし、トイレの個室では磁気センサを使ったドアの開閉センサも使えそうです。また、工場の設備などでは消費電力、音、振動などを測ることで稼働状態を知ることができます。

ここでは人感センサを使い、会議室の稼働状態(会議室に人がいるかいないか)を測定し、Ambientに送信して可視化してみます。

IoT端末

ハードウェア

M5StickCに人感センサ(PIR Hat)をつなげます。人感センサは人などが発する赤外線の「変化」、つまり人の動きを感知するセンサです。M5StickCのPIR Hatは、出力がM5StickCのGPIO36につながれていて、人の動きを検知すると2秒ほど遅れて2秒間ほどGPIO36がHIGHになります。赤外線の変化が続いていればHIGHが続き、変化が止まればLOWに戻ります。

M5StickCはWi−Fi通信ができるので、これで人の動きを検知してデータをWi−Fiで送るIoT端末になります。

ソフトウェア

Arduinoでプログラミングします。
5秒ごとにGPIO36の値を調べ、前の値と違っていたら、つまり赤外線の変化がない状態(0)からある状態(1)に変わったか、逆に変化がある状態(1)からない状態(0)に変わったときだけ、その値をAmbientに送ります。

図では、太線の部分が人の動きがある、つまり赤外線の変化があり、PIRセンサの出力がHIGHになっている期間、細線の部分が人の動きがなく、PIRセンサの出力がLOWになっている期間を示しています。PIRセンサの出力がLOWからHIGH、またはHIGHからLOWに変化した時にAmbientにデータを送っています。

プログラム全体は次のようになります。

Ambientでの表示

人の動きがあったときに1、なくなった時に0を送り、Ambientで折れ線グラフで表示すると、次のようになります。これだと稼働状態は直感的には分かりにくいです。

Ambientでは「稼働状態」というチャートがあります。チャート生成時、あるいは生成後でもチャートの右肩の歯車アイコンをクリックしてチャート設定画面を表示し、グラフ種類で「稼働状態」を選択して「設定を変更」ボタンをクリックすると、チャートが稼働状態を示すようになります。

稼働状態チャートでは値1を送ってから次に値0を送るまでを「稼働状態」、値0から次の値1までを「非稼働状態」として表示します。これにより、資源、この例では会議室の稼働状態が直感的に可視化されます。

稼働状態を示す値は変化があった時だけAmbientに送信することもできますし、定期的に稼働状態を調べ、定期的に送信することもできます。このときは、稼働状態が続いていれば、連続して値1を、非稼働状態が続いていれば連続して値0を送ります。

Ambientではd1からd8まで8種類のデータを扱えます。稼働状態チャートでも8種類の資源をd1からd8に割り当てることで、8種類までの資源の稼働状態を表示することができます。