焦電人感センサーSB612Aをラズベリーパイで使ってみた
以下の秋月で販売している焦電型赤外線センサーをラズベリーパイで使ってみました(¥600)
akizukidenshi.com
仕様
- 電源電圧:3.3V~12V(3.3VのLDOによりモジュール内部で安定化されています)
- 最大検知距離:8m(気温等の環境条件によります)
- 検知角度:120度
- 検知出力保持時間:2秒~80分
ハードウェアサイド
SB612A側
画像のようにメスメスケーブルをさしていきます。
色はあわせなくていいですが、右から赤(VCC), 緑(信号出力). 黒(GND)です
ソフトウェアサイド
確認
まずはちゃんと動いているか確認をします
## GPIO設定 sudo echo 18 > /sys/class/gpio/export sudo echo in > /sys/class/gpio/gpio18/direction ### 確認 ## 検知していない時 cat /sys/class/gpio/gpio18/value 0 ## 検知中 cat /sys/class/gpio/gpio18/value 1
LED連携
センサーが動体を検知すると31番ピン(GPIO6)にさしたLEDが光るようにします
#!/usr/bin/env python import RPi.GPIO as GPIO ### setup GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.IN) # GPIO 18 : human detect sensor GPIO.setup(6, GPIO.OUT) # GPIO 6: LED # initialize if GPIO.input(18): GPIO.output(6, 1) else: GPIO.output(6, 0) while True: GPIO.wait_for_edge(18, GPIO.BOTH) if GPIO.input(18): print "detected!" GPIO.output(6, 1) else: GPIO.output(6, 0) time.sleep(1) GPIO.cleanup()
GPIO.wait_for_edgeは電圧がLOWからHIGH、またはその逆を検知します
引数にはピン番号とGPIO.RAISING or GPIO.FALLINGを渡すことで電圧の動きをチェックします
両方取得したいときはGPIO.BOTHでとれます
単純にLoopで毎秒チェックとかにするよりは低負荷になります
その他設定
感度
SENSと書かれたつまみを右に回すほど感度が高くなります
検知出力保持時間
DELAYと書かれたつまみを左にまわすほど保持時間が長くなります
保持時間とは、一度動体を検知した際に何秒間検知状態のままにするかという設定です