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

ラズパイ(Raspberry Pi) 3 Model b+で人感センサーでPython3.6でプログラムし監視カメラを作成します。動画や写真両方とも対応可能です
事前にラズパイへPythonのダウンロードが必要です
今回利用するラズパイとカメラのモデル
Raspberry Pi 3 Model b+ ラズベリーパイ 3 b
raspberry pi カメラモジュール 5MP Raspberry
カメラモジュール は組み立てが必要になりますが、カバーを作成する場合は5分程度で作成が可能です。
カメラのみの場合は、特に組み立てが必要なく利用できます。
ここでも作成方法が公開されています。
KKHMF HC-SR501 人体赤外線感応モジュール
Amazonで買うなら以下のが配送が早い
到着が遅くてもいいなら以下
ジャンパーワイヤー(メス-メス)×3
ジャンパーワイヤー(メス-メス)が3つ必要です
ブレッドボードとか含めるなら以下
リアルタイムでプレビューしたいならモニター
pythonのコードで、リアルタイムでモニターへカメラで撮影した映像(動画、写真問わず)を表示可能です。
プログラムにあまり慣れていない方はモニターに繋いで、プレビューが表示されるかを確認する事をお勧めします
以下はRaspberry Pi 4Bも対応
人感センサーを設定する
ジャンパーワイヤー(メス-メス)を3つをつなげる
赤外線センサーの一番右側の白ワイヤが、ラズパイの 4番ピン(ラズパイ側のPin上段左から2番目)
赤外線センサーの中央の灰色ワイヤが、ラズパイの 12番ピンの GPIOの18(ラズパイ側のPin上段左から6番目)
赤外線センサーの一番左の黒色のワイヤが、 6番ピン(ラズパイ側のPin上段左から3番目)
ラズパイとカメラの設定
ラズパイ側でカメラの設定を許可する必要があります。
カメラ設定はラズパイ(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(SLEEPTIME) 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(SLEEPTIME) except KeyboardInterrupt: print("全処理終了") finally: GPIO.cleanup()
コードの説明はコメントに記載していますので、御覧ください。
Pythonのコードが理解できない場合は、基本からの機械学習までも勉強でき、直接エンジニアに質問できる オンラインPython学習サービス「PyQ™(パイキュー)」をお勧めします。
感度を調整するには写真の下側の、黄色いネジを右に回せば調整できます。 また上部のネジは検知時間ですがプログラムで制御する場合は特段不要です。
なおラズパイのカメラで動画を撮影する場合は
h264というファイル拡張子になりますが、こちらはAWSのS3にはアップできません。
以下のようなシェルスクリプトで、mp4形式の変更が必要になりますのでご注意ください。
file_name=`sudo find /home/pi/pic -name \*.h264` for i in ${file_name}; do echo $(MP4Box -fps 30 -add ${i} /home/pi/pic/`date +%Y%m%d_%H-%M-%S`.mp4) done
撮影した画像へ処理を加えたい場合は以下
画像をAWSにアップロードする際は以下
ラズパイ(Raspberry Pi) +Python3でS3のバケットへファイルを一括アップロードする
グーグルドライブにアップするのは以下
その他関連記事
Python3でDjangoをインストールし、HellowWoldを表示する
BeautifulSoupとpython3を利用し、画像をスクレイピングしてローカルに保存する
Djangoでページを追加し表示する|初心者・独学者向け入門コンテンツ