人感センサーってどうなの?

こんにちは、呉屋です。
最近、コロナの影響でお店の入り口にアルコールが設置されており、手をかざすと自動で出てくるものがありますよね。
今回は、そちらで使用されている技術 “人感センサー" を調べてみました。
また、「本当に検知するのか?」・「性能はどうなのか?」について紹介していきます!

人感センサーとは

まずはじめに人感センサーの概要や仕組みについて、調べてみました。

人感センサーとは、人間の動きを検知する感知器のこと。
赤外線などを利用して、周囲温度と温度差のあるものが検知範囲内で動いたときに、その温度変化を検知する仕組みである。
人を検知するのではなく、人や動物から放射される熱(赤外線)の変化を検知するので、動物などが動いても点灯や動作する。

以上のことから、"人" を検知するためのものではなく、熱を発する “モノ" 全てが検知されることが分かります。そのため、 “熱検知センサー" とも呼ばれるんですね。

必要な機器

人感センサー

ネットで調べてみると、意外と安かったので、購入してみました。
価格は、3個入りで500円程度でした。

センサー

また、センサーには"感度調整"と"検知時間調整"のつまみがあります。
これを使って、"範囲"や"検知後の保持時間"を調整することができます。

センサー

ジャンパーワイヤー

ラズパイにつなげるために、必要となります。
1本だけでよいのですが、まとめての販売だったので、こちらを購入しました。

ジャンパーワイヤー

次に、ラズパイにあるGPIOと呼ばれる接続部分とワイヤーをつなぎます。

赤色:電源を供給するためのピン
黒色:マイナス極のピン
黄色:データ入出力(0 or 1)のピン

ラズパイ

完成品は、こちらです。
カメラにケースを取り付けたこともあり、見栄えがよくなりました(笑)

ラズパイ

検証してみた

プログラム

Pythonで記述しました。
GPIOを制御するためのライブラリ “RPi.GPIO" を使用します。
検知すると、入出力のピン “18" に信号が送られるので、それを起点にメッセージを表示させます。
また、検知後に〇秒間処理を待機する “time.sleep関数" を使用します。
検知されたモノが動かない場合、その期間中、ずっと反応 “1" を出力し続けます。
それを回避するために待機時間を設けました。

import RPi.GPIO as GPIO
import time

GPIO_PIN = 18

GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN, GPIO.IN)

print("センサー検証を開始します。「Ctrl + C」で終了します。")
while True:
    if(GPIO.input(GPIO_PIN) == GPIO.HIGH):
        print("検知しました!")
        # 5秒待機
        time.sleep(5)
GPIO.cleanup()

実行

センサーの前に何もない状態で実行します。

python
ラズパイ

手をかざしてみます。

ラズパイ
python

しっかり反応しました!
実際にやってみて “感度センサー" と “待機時間" が重要だと思いました。
感度調整を大きくすると、正面以外にも反応して、後々のカメラ撮影時に影響が出ます。
構築するサービスによっては待機時間を設ける必要があるかなと思います。
また、今回は調整せずに終わった “検知時間調整つまみ" も使って工夫すると面白そうです。
このあたりは結構自由に調整できるな~ってことが分かりました!

さいごに

これまで、カメラ、人感センサーといったIoT機器の検証を行いました。
次のステップは、反応後のアクションです!
まずはセンサー反応後にカメラで撮影し、AWSに連携する仕組みを構築していきます。
動画のストリーミング配信にも挑戦していきたいと思います ٩( 'ω’ )و