Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

この記事について

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

環境

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

cdsl
東京工科大学コンピュータサイエンス学部クラウド・分散システム研究室
https://www.tak-cslab.org/
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