LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

人感センサで動体を正確にカウントする

この記事について

人感センサーを使って検知したことをプログラムで出力しようと思います

環境

・Raspberry Pi zero
・HC-SR501

実装

センサの配置

sensor_placement2.png
小型マイコンを動かすためにAC電源が一つ必要になるため,図のようにRaspberryPiはAC電源の付近に設置します.RaspberryPiにHC-SR501を接続し,モーション検知ができる状態にします.

プログラム

sensor.py
from datetime import datetime
import time
import RPi.GPIO as GPIO

#インターバル
INTERVAL = 2
#スリープタイム
SLEEPTIME = 10
#使用するGPIO
GPIO_PIN = 18

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

if __name__ == '__main__':
    try:
        print("処理キャンセル:CTRL+C")
        cnt = 1
        while True:
            # センサー感知
            if(GPIO.input(GPIO_PIN) == GPIO.HIGH):
                print(datetime.now().strftime('%Y/%m/%d %H:%M:%S') +
                " : " + str("{0:05d}".format(cnt)) + "回目の人感知")
                cnt = cnt + 1
                time.sleep(SLEEPTIME)
            else:
                print(GPIO.input(GPIO_PIN))
                time.sleep(INTERVAL)
    except KeyboardInterrupt:
        print("終了処理中...")
    finally:
        GPIO.cleanup()
        print("GPIO clean終了")

実行結果

sensor.py 実行結果.PNG

Pythonスクリプトを実行して、モーション検知すると、上の図のように出力されます.インターバルを2秒,スリープタイムを10秒に設定することで,一人に対しての検知が重複することを防いでいます.sensor.pyの実行により,人を検知した日時と何回目のカウントなのかを表示することができました.

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1