2017年10月10日火曜日

人感センサー(HC-SR501)とRaspberry Piをつないでみる



人感センサーのHC-SR501がAmazonで150円以下になっており、とても安いのでRaspberry Pi 3との接続を試してみました。なお、Amazonで1つ注文したのですが、なぜか2つ送付されてきました。1個75円!と思って喜んでいたのですが、一方はまともに動作しませんでしたので、もしかしたら歩留まりが悪いのかもしれません。

仕様

なんか、仕様が記載されているドキュメントによって、まちまちなので大体こんなもんだくらいに思っていたほうが良いのかもしれません。
動作電圧範囲 DC4.5V ~ 20V
ドレイン電流 65uA (50uA)
レベル出力 ハイレベル:3.3V、ローレベル出力:0 V
トリガモード Lノンリピートモード/ Hリピートモード(デフォルト)
遅延時間 0.5-18秒
ブロッキング時間 2.5秒
外形寸法 32mm x 24mm
検出範囲 100°(120°)
作業温度 -15° ~ 70°
誘導レンズサイズ 直径:23mm
一応このサイトに記載されている情報が公式の情報に当たると思うのですが、販売店が書いてる情報とはちょっと違いますね・・・。何が正しいんだろう・・・w

外観

HC-SR501を裏から見ると下記の図のような感じです。



検知出力保持時間

検出した後、検出した状態を保持する時間を調整するための半固定抵抗がついてますので、プラスドライバーで調整できます。やってみないとわからに様な気がしますので、必要に応じて変更してください。0.5秒~8秒のようです。(ドキュメントによって異なるようですが)

感度

こちらも、半固定抵抗がついていますのでドライバー等で調整します。最大で7mの範囲まで検知できるようです。

モード

ここは、固定されているものと固定されていないものがあるようです。
リピートに設定しておくと、検知し終わってから先ほどの保持時間の間は3.5vの入力がある状態となります。リピートを選択しておけば間違いないと思います。ノンリピートを選択した場合は検知し始めてから保持時間の間3.5vからの入力があると思われます。(試験してません)

配線

配線は右からPower、Output、Groundとなりますので、下記の通り配線します。
HC-SR501 Raspberry Pi 3
Power 02 pin (5V)
Output 29 pin (GPIO5)
Ground 06 pin (GND)

下図のような感じで配線すればOKです。(*上から見ています)



*配線中はRaspberry Piは通電していない状態でやってください。

あとは、下記のようなプログラムで検知したかどうかを判定します。
人感センサーが動きを検出すると、「動いた」と表示されるだけのシンプルなプログラムですw

hc_sr501_test.py
import sys
import time
import RPi.GPIO as GPIO

SLEEP_TIME = 1
SENSOR_GPIO = 5

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_GPIO, GPIO.IN)

while True:
  if GPIO.input(SENSOR_GPIO) == GPIO.HIGH:
    sys.stdout.write("\r動いた  ")
  else:
    sys.stdout.write("\r動いてない")

  time.sleep(SLEEP_TIME)

実行は、sudoした上で実行してください。
sudo python3 hc_sr501_test.py

終了はCtrl + Cで。

実行してみた感じだと、それほど検出精度が高いようには感じられないですw
まぁ、使えなくはないかなといった感じ。

このセンサーは、動きを検知しているようですので、止まっていると検知できません。

0 件のコメント:

コメントを投稿