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

システム開発エンジニアの西田五郎が運営しております。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カーを作ってみました(その2)RCカー編

前回の続きです。LeafonyでRCカーを作ってコントロールしてみるというテーマで書いています。前回まででLeafonyでのBluetooth Low Energy(ここからはBLEと表記します。)と …

ESP-WROOM-02でもセンサネットワーク稼働試験

ESP-WROOM-02でもセンサネットワークを稼働してみます。ESP-WROOM-02でもというのは今までRaspberry Piで稼働してきたのでESP-WROOM-02でも稼働してみようというこ …

Arduino IDEのUNOボードでの動作確認(2020/05/04版)

前回の続きです。前回はArduino IDEのWindows10での導入について書きました。今回はArduinoボードの中でも最も標準的といえる以下のArduino UNOで動作確認をしてみます。

温度管理システム的なものを作ってみる(その2)Arduinoでの温度取得からスマホへ送信

「温度管理システム的なものを作ってみる」の2回目です。前回は全体的な内容についてでした。今回はArduinoでの温度取得とスマホへの送信についてです。Arduinoは、Arduino UNOを使ってい …

Arduino UnoでSPI通信(その1)Arduino Uno2台で通信

ArduinoでのSPI通信についてです。SPI通信(Serail Peripheral Interface:SPI)はマイコン系と周辺デバイス間の短距離間で利用されている同期型のシリアル通信の一種で …