Edited at

Raspberry Pi 防犯赤外線カメラ(Python編)

More than 1 year has passed since last update.

我が家に設置した赤外線防犯カメラを

作成した時の覚書です。

(初期導入の内容で現在とは大分異なります)


【使用する物】

Raspberry Pi 2 Model B:アマゾン 5,562円

赤外線カメラ NoIR Camera Board 790-2811:アマゾン 4,590円

焦電人感センサ:秋月電子 400円

赤色LED(3mm):秋月電子 10円

カーボン抵抗(220kΩ):千石電商 16円


【前提条件】

・「RPi.GPIO」を導入済み

・CSIカメラポートにカメラを接続済み

・「raspi-config」にてカメラを有効にしている事

・焦電人感センサのVCCおよびGND端子を接続済みで、

 OUT端子を任意のGPIOに接続されている事(ここでは5番を使用)

・センサー検知確認用のLEDが接続されている事

 (ここでは6番ポートに抵抗を挟んで接続)


【カメラ動作チェック:コマンド】

静止画

$ raspistill -o test.jpg

 

動画

$ raspivid -o test.h264


【Pythonのカメラ制御環境】

$ sudo apt-get update

$ sudo apt-get install python-picamera


【Python単体の静止画テスト】


StillTest.py

# coding: utf-8


import picamera
import time

camera = picamera.PiCamera()

camera.led = True
camera.start_preview()
time.sleep(3)

camera.capture('test.jpg')

camera.stop_preview()
camera.led = False

camera.close()



【Python単体の動画テスト】


MovieTest.py

# coding: utf-8


import picamera
import time

camera = picamera.PiCamera()

camera.led = True
camera.start_preview()

camera.start_recording('test.h264')
camera.wait_recording(5)
camera.stop_recording()

camera.stop_preview()
camera.led = False

camera.close()



【Python単体のセンサーテスト】


SensorTest.py

# coding: utf-8


import RPi.GPIO as GPIO
import time

SLEEP_TIME = 1
INTAVAL_TIME = 1

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)

SENSOR = 5
GPIO.setup(SENSOR, GPIO.IN)

LED = 6
GPIO.setup(LED, GPIO.OUT)

intaval = time.time() - INTAVAL_TIME

while True:
# print GPIO.input(SENSOR)
GPIO.output(LED, GPIO.LOW)

if( GPIO.input(SENSOR) == GPIO.HIGH ) and ( intaval + INTAVAL_TIME < time.time() ):
intaval = time.time()
# print "!! Detection !!"
GPIO.output(LED, GPIO.HIGH)

time.sleep(SLEEP_TIME)



【Pythonのセンサー&カメラ連携テスト(静止画)】


StillSensorTest.py

# coding: utf-8


import datetime

import picamera
import time

import RPi.GPIO as GPIO
import time

SLEEP_TIME = 1
INTAVAL_TIME = 1

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)

SENSOR = 5
GPIO.setup(SENSOR, GPIO.IN)

LED = 6
GPIO.setup(LED, GPIO.OUT)

intaval = time.time() - INTAVAL_TIME

camera = picamera.PiCamera()

while True:
if( GPIO.input(SENSOR) == GPIO.HIGH ) and ( intaval + INTAVAL_TIME < time.time() ):
intaval = time.time()

GPIO.output(LED, GPIO.HIGH)

camera.led = True
camera.start_preview()
time.sleep(1)

NowTime = datetime.datetime.now()
camera.capture(NowTime.strftime("%Y%m%d_%H:%M:%S") + '.jpg')

camera.stop_preview()
camera.led = False

GPIO.output(LED, GPIO.LOW)

time.sleep(SLEEP_TIME)



【残りの覚書】

・センサー検知のタイムスタンプ(Python → MySQL)

・画像の保存先を年月日フォルダに格納(Python → File)

・PHPからカメラ制御、DB&画像を参照、Python実行

 (PHP → DB or Python or Command or File)

・スマホアプリで外部から制御、参照(JavaScript → PHP)

https://github.com/Naoki-Takamatsu/Raspberry-Pi_Test