1
Help us understand the problem. What are the problem?

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の実行により,人を検知した日時と何回目のカウントなのかを表示することができました.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?