Header
2019-09-08
2019-09-19

ラズパイ(Raspberry Pi) 3 Model b+で人感センサーで監視カメラを作成する

2019 09 08 camera

ラズパイ(Raspberry Pi) 3 Model b+で人感センサーでPython3.6でプログラムし監視カメラを作成します。動画や写真両方とも対応可能です

事前にラズパイへPythonのダウンロードが必要です

ラズパイへPyenvでPython3をインスールする

今回利用するラズパイとカメラのモデル

Raspberry Pi 3 Model b+ ラズベリーパイ 3 b

raspberry pi カメラモジュール 5MP Raspberry

カメラモジュール は組み立てが必要になりますが、カバーを作成する場合は5分程度で作成が可能です。

カメラのみの場合は、特に組み立てが必要なく利用できます。

ここでも作成方法が公開されています。

KKHMF HC-SR501 人体赤外線感応モジュール

Amazonで買うなら以下のが配送が早い

到着が遅くてもいいなら以下

ジャンパーワイヤー(メス-メス)×3

ジャンパーワイヤー(メス-メス)が3つ必要です

ブレッドボードとか含めるなら以下

人感センサーを設定する

ジャンパーワイヤー(メス-メス)を3つをつなげる

sensor-setup2

赤外線センサーの一番右側の白ワイヤが、ラズパイの 4番ピン(ラズパイ側のPin上段左から2番目)

赤外線センサーの中央の灰色ワイヤが、ラズパイの 12番ピンの GPIOの18(ラズパイ側のPin上段左から6番目)

赤外線センサーの一番左の黒色のワイヤが、 6番ピン(ラズパイ側のPin上段左から3番目)

sensor-setup3

ラズパイとカメラの設定

カメラ設定はラズパイ(Raspberry Pi) 3 Model b+でカメラを操作するで写真付きで詳しく公開しているので、そちらを御覧ください

なお、ラズパイ側でカメラの設定を許可する必要があります。

ラズパイ カメラ 人感センサーで写真撮影する場合のコード

Python 3.6で設定

import time
import picamera
import RPi.GPIO as GPIO

# インターバル 5秒
INTERVAL = 5

# スリープタイム
SLEEPTIME = 1

# 使用するGPIO
GPIO_PIN = 18

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

if __name__ == '__main__':
    try:
        print ("処理キャンセルはCTRL+C")
        while True:
            # GPIO_PIN18と同値(センサーが動作を感知)
            if(GPIO.input(GPIO_PIN) == GPIO.HIGH):
                with picamera.PiCamera() as camera:
                    #解像度の調整
                    camera.resolution = (1024, 768)
                    # 明るさの調整
                    camera.brightness = 70
                    # ラズパイをモニターに接続していたらモニターに表示
                    camera.start_preview()
                    #撮影
                    camera.capture('picture.jpg')
            else:
                time.sleep(INTERVAL)
    except KeyboardInterrupt:
        print("全処理終了")
    finally:
        GPIO.cleanup()

ラズパイ カメラ 人感センサーで動画撮影する場合のコード

import time
import picamera
import RPi.GPIO as GPIO

# インターバル 5秒
INTERVAL = 5

# スリープタイム
SLEEPTIME = 1

# 使用するGPIO
GPIO_PIN = 18

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

if __name__ == '__main__':
    try:
        print ("処理キャンセルはCTRL+C")
        while True:
            # GPIO_PIN18と同値(センサーが動作を感知)
            if(GPIO.input(GPIO_PIN) == GPIO.HIGH):
                with picamera.PiCamera() as camera:
                    #解像度の調整
                    camera.resolution = (1024, 768)
                    # 明るさの調整
                    camera.brightness = 70
                    camera.start_recording('video.h264')
                    # ラズパイをモニターに接続していたらモニターに表示
                    camera.start_preview()
                    time.sleep(INTERVAL)
                    # レコーディング終了
                    camera.stop_recording()
            else:
                time.sleep(INTERVAL)
    except KeyboardInterrupt:
        print("全処理終了")
    finally:
        GPIO.cleanup()

コードの説明はコメントに記載していますので、御覧ください。

感度を調整するには写真の下側の、黄色いネジを右に回せば調整できます。 また上部のネジは検知時間ですがプログラムで制御する場合は特段不要です。

sensor-setup2

撮影した画像へ処理を加えたい場合は以下

ラズパイへOpenCVをインストールして画像解析する

その他関連記事

Python3でDjangoをインストールし、HellowWoldを表示する

BeautifulSoupとpython3を利用し、画像をスクレイピングしてローカルに保存する

Djangoでページを追加し表示する|初心者・独学者向け入門コンテンツ

Python3.7をインスールすると No module named '_ctypes' というエラーになる

【初心者・独学者向け】プログラミングに困ったらテラテイルで質問してみよう

前の記事
次の記事
人気記事
カテゴリーから記事を探す