株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

Arduino 感染症対策のIoT技術

感染症対策のためのIoT技術(その6)M5StickC PIR Hat(AS312搭載)人感センサー

投稿日:

感染症対策のためのIoT技術について書いています。今回は人感センサーを使ってみました。使ったのは M5StickC に直接接続して使うタイプで比較的簡単に使うことが出来ます。スイッチサイエンスさんの販売ページによると、このセンサーは焦電型赤外線センサのAS312を搭載していて(人体から放射される)赤外線を検出するという仕様です。

このようなパッケージに入っていました。

以下のようにM5StickCと接続します。

その他の主な仕様は以下です。
センサーの反応までに約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の表示に追加されたので少し分かりやすくなったと思います。

今回は以上です。

AdSense

AdSense

-Arduino, 感染症対策のIoT技術

執筆者:

関連記事

感染症対策のためのIoT技術(その5)障害物回避センサーを利用した非接触スイッチ操作

感染症対策のためのIoT技術について書いています。今回は障害物回避センサーを利用した非接触操作です。つまり、手を触れないで何かのスイッチのオン、オフを切り替える仕組みについてです。内容的にはIoT技術 …

Arduino IDEのWindows10でのインストール(2020/05/04版)

現時点でのArduino IDEのWindows10でのインストール方法についてです。 Arduinoでの開発を始めるための最初の難関というほどでもないかもしれないですが、開発環境であるArduino …

LeafonyでRCカーを作ってみました(その1)全体概要・導入編

Leafonyとは以下の公式ページによりますと「超小型、電池で動く、組み立て簡単なオープンイノベーション・プラットフォーム」とのことです。 トリリオンノード研究会 用語の説明 Leafony(リーフォ …

Arduino Ethernetシールド(旧製品)を使ってみた

Arduino Ethernetシールド(旧製品)を使ってみました。Arduinoと接続した状態が以下です。おそらく2~3年前ぐらいに買ったものだと思います。どうも自宅以外で有線LANが気軽に使える場 …

温度管理システム的なものを作ってみる(その1)システム概要

「温度管理システム的なものを作ってみる」の1回目です。AndroidでUSBシリアル通信の記事を書きました。(1回目はこちらから。)次は、その少し応用的な内容で書きたいと思いました。そこで、温度センサ …