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

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

Arduino 感染症対策のIoT技術

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

投稿日:2021年3月11日 更新日:

感染症対策のための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技術

執筆者:

関連記事

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

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

Remote.itを利用したWindows PCへのリモートアクセス

Remote.itを利用してWindows PCへのリモートアクセスを設定して実際にリモートデスクトップで接続してみました。Remote.itではいろいろなリモートアクセスのサービスが提供されています …

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

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

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

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

Arduino UnoでSPI通信(その2)温度センサADT7310

Arduino UnoでSPI通信の2回目です。前回のArduino UnoでSPI通信(その1)Arduino2台で通信ではArduino Uno2台でSPI通信を確認しました。今回は実際のデバイス …