人感センサを使ってみる1

はじめに

人感センサモジュールを使って、人を検知させたいと思います。検出したらコマンドに検出時間と検出回数を出します。

目次

使用部材

・ラズパイ本体
・ブレッドボード
・リード線
・焦電型赤外線センサーモジュール(人感センサモジュール)
akizukidenshi.com

ハード側

電子工作で良く使用される人感センサモジュールを使用しています。この人感センサの電源は5Vで、出力は3Vです。ラズパイのGPIOピンの入力は3Vですのでちょうど良いと思います。

f:id:KatsuyaNote:20181104124133p:plain
回路図

ソフト側

# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep
import datetime

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()
print("GPIO clean中...")
print("GPIO clean完了")
GPIO.setup(17, GPIO.IN)

def main():
        i = 1
        while True:
            i=human_senser(17,i)

###############################################
#関数:human_senser(x,y)
#引数:x(入力GPIOピン),y(数値)
#戻値:検出あり→y+1,検出なし→y
#役割:人感センサ入力GPIOピンをxで指定して、
#           引数yで検出した回数を表示させる為の初期値
#           を与えます。従って,yの数値は整数であれば問題
#           ありません。
#           関数を使用時は,戻値がありますので、適当に変数
#           に代入させてください。
#必要なimportモジュールは、
#import RPi.GPIO as GPIO
#from time import sleep
#import datetime
def human_senser(x,y):
        sleep(0.5)
        if(GPIO.input(x) == GPIO.HIGH):
                print(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S') +
                ":" + str("{0:05d}".format(y)) + "回目の人感知")
                y = y + 1
                sleep(10)
        else:
                print(GPIO.input(x))
                sleep(3)
        return y
###############################################

if __name__ == '__main__':
    try:      
        main()     
    except KeyboardInterrupt:
        print("終了処理中...")
        pass      
    finally:
        GPIO.cleanup()
        print("GPIO clean完了")

参考ウェブサイト等

https://chasuke.com/motionsensor/