感染症対策のためのIoT技術について書いています。今回は人感センサーを使ってみました。使ったのは M5StickC に直接接続して使うタイプで比較的簡単に使うことが出来ます。スイッチサイエンスさんの販売ページによると、このセンサーは焦電型赤外線センサのAS312を搭載していて(人体から放射される)赤外線を検出するという仕様です。
その他の主な仕様は以下です。
センサーの反応までに約2秒の遅延時間がある
人体を検出すると2秒間HIGHの値を出力する
検出範囲は150cm
検出角度は100℃の範囲
原理について
原理については以下のPanasonic製品についてのページですが引用させて下さい。少しだけ使ったことがありますがPanasonicからはNaPiOn(ナピオン)シリーズとして焦電型赤外線センサーが販売されています。
焦電型赤外線センサの動作原理はどうなっているのですか?
人体検出のために常時レンズから光を出力しているのですか?
焦電型赤外線センサPaPIRsは赤外線パッシブ方式とも呼ばれ、自分から検出の為の赤外線を発光するのではなく、人体から放射される赤外線を受けることによって検出をします。そのため、パッシブ(受身)タイプとも呼ばれています。
⇒入射赤外線の変化を検出することにより、人体を検出します
⇒熱源である人体と床や壁などの背景との温度差に応じて動作します
実際に使ってみる
M5StickCのスケッチは以下です。36ピンをプルアップ入力に設定してセンサーからの値を取得します。基本的にはサンプルそのままですが、少し表示を大きくして表示があまりちらつかないようにdelayを入れました。
#include <M5StickC.h> void setup() { // put your setup code here, to run once: M5.begin(); M5.Lcd.setRotation(3); M5.Lcd.fillScreen(BLACK); M5.Lcd.println("PIR TEST"); pinMode(36,INPUT_PULLUP); } void loop() { // put your main code here, to run repeatedly: M5.Lcd.setCursor(60, 20, 4); M5.Lcd.setTextSize(2); M5.Lcd.println(digitalRead(36)); delay(30); }
仕様通りの動作が以下のように確認出来ました。
センサーを自分に向けると実際に2秒程度の間があって画面に1が表示された。
そのままにすると2秒ほどで0の表示戻った。
センサーから150cm以上離れて0の表示を確認しながら近づくと150cmぐらいで反応した。
感染症対策として
それではこのセンサーをどのように感染症対策に利用するかということですが、以下で書いたソーシャルディスタンスの認識に有効かと思います。
感染症対策のためのIoT技術(その5)障害物回避センサーを利用した非接触スイッチ操作
ソーシャルディスタンスの目安が「できるだけ2メートルで最低でも1メートル」となっています。1.5メートル(150cm)で反応する今回のセンサーでは2メートルよりは少し短いですが、人感センサー(人を検知する)という意味では有効かと思います。
もちろんIoTという意味ではセンサーの検知のログを残すといった処理も出来ます。
最後に少しだけM5StickCに仕様追加
上記スケッチに少しだけ仕様を追加してみます。人を検知している間は、M5StickCの赤色LEDを点灯します。
以下がスケッチです。LEDは10ピンをoutputに設定してこの10ピンにLOWを出力すると点灯します。
#include <M5StickC.h> void setup() { // put your setup code here, to run once: M5.begin(); M5.Lcd.setRotation(3); M5.Lcd.fillScreen(BLACK); M5.Lcd.println("PIR TEST"); pinMode(36,INPUT_PULLUP); pinMode(10, OUTPUT); //LED } void loop() { // put your main code here, to run repeatedly: M5.Lcd.setCursor(60, 20, 4); M5.Lcd.setTextSize(2); boolean detected = digitalRead(36); M5.Lcd.println(detected); digitalWrite(10,!detected); //LEDはLOWで点灯する delay(30); }
画面の1か0の表示に追加されたので少し分かりやすくなったと思います。
今回は以上です。