我が家に設置した赤外線防犯カメラを
作成した時の覚書です。
(初期導入の内容で現在とは大分異なります)
【使用する物】
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単体の静止画テスト】
# 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単体の動画テスト】
# 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単体のセンサーテスト】
# 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のセンサー&カメラ連携テスト(静止画)】
# 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)