人感センサーってどうなの?
こんにちは、呉屋です。
最近、コロナの影響でお店の入り口にアルコールが設置されており、手をかざすと自動で出てくるものがありますよね。
今回は、そちらで使用されている技術 “人感センサー" を調べてみました。
また、「本当に検知するのか?」・「性能はどうなのか?」について紹介していきます!
人感センサーとは
まずはじめに人感センサーの概要や仕組みについて、調べてみました。
人感センサーとは、人間の動きを検知する感知器のこと。
赤外線などを利用して、周囲温度と温度差のあるものが検知範囲内で動いたときに、その温度変化を検知する仕組みである。
人を検知するのではなく、人や動物から放射される熱(赤外線)の変化を検知するので、動物などが動いても点灯や動作する。
以上のことから、"人" を検知するためのものではなく、熱を発する “モノ" 全てが検知されることが分かります。そのため、 “熱検知センサー" とも呼ばれるんですね。
必要な機器
人感センサー
ネットで調べてみると、意外と安かったので、購入してみました。
価格は、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()
実行
センサーの前に何もない状態で実行します。


手をかざしてみます。


しっかり反応しました!
実際にやってみて “感度センサー" と “待機時間" が重要だと思いました。
感度調整を大きくすると、正面以外にも反応して、後々のカメラ撮影時に影響が出ます。
構築するサービスによっては待機時間を設ける必要があるかなと思います。
また、今回は調整せずに終わった “検知時間調整つまみ" も使って工夫すると面白そうです。
このあたりは結構自由に調整できるな~ってことが分かりました!
さいごに
これまで、カメラ、人感センサーといったIoT機器の検証を行いました。
次のステップは、反応後のアクションです!
まずはセンサー反応後にカメラで撮影し、AWSに連携する仕組みを構築していきます。
動画のストリーミング配信にも挑戦していきたいと思います ٩( 'ω’ )و