1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

raspberryPiでPIRモーションセンサを使う

Posted at

概要

RaspberryPi2 と PIRモーションセンサ から動態を検知した/していないをプログラムで取得します。

前提

  • raspberryPiのモデルはraspberryPi2 modelB v1.1
  • モーションセンサーはPIRモーションセンサ
  • 使う言語はpython3
  • RaspberryOS
Raspberry Pi OS (32-bit) Lite
Minimal image based on Debian Buster  
Version:May 2020  
Release date:2020-05-27  
Kernel version:4.19
  • raspberryPiが起動する状態である。

  • 常に検知範囲に動体があるので、動体が無いことが異常とする。
    常にセンサーが動体を検知していることが前提で、
    検知しなくなった(対象物が止まっている)ことを検知するプログラムです。
    e.g. 常に動作しているファンの停止を検知する。

  • センサーは動体を検知し続ける事はできない。
    センサーの検知タイミングなのか何なのか、
    動体があっても検知しないケースがあるようです。
    なので一定回数以上動体を検知しないときに何かアクションをすることを想定しています。
    e.g. 動体が無いことを20回以上検知する。

準備

pip3のインストール

sudo apt install python3-distutils
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py

RPi.GPIOのインストール

sudo apt install python3-dev
pip3 install RPi.GPIO

センサーとraspberryPiの接続

以下の 公式から取得したGPIOのPINアサイン を参考にして
ジャンパワイヤで以下のように接続する。
スクリーンショット 2020-06-28 21.27.06.png

  • raspberryPiの2番 5V power と センサーのVCC
  • raspberryPiの6番 ground と センサーのGRD
  • raspberryPiの12番 GPIO 18 と センサーのout

センサー側
IMG_20200628_213324.jpg

rasqberryPi側
IMG_20200628_213316.jpg

センサーで値を取得する

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)

# GPIOの18を指定
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

count = 0
while True:
    sleep(1)

    # センサーが動体を検知すると1が返ってくる。
    if GPIO.input(18) == 1:
        count = 0
        print("yes")
    
    # 1が返ってこない場合が20回を超えるとyabeeeeeを出力する。
    else:
        count += 1
        print("no good")
        if count > 20:
            print("yabeeeee")
        else:
            pass
1
0
0

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
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?