サイトアイコン TAKAHIRO today

Raspberry Pi の監視カメラのセンサーにスイッチをつける

以前設置した『Raspberry Pi で監視カメラ』の、PIRセンサー機能オンオフが面倒くさいから、スイッチをつけてみた。

現在は、席を外す前にシェルでつないでPIRセンサーをオンにして、席に戻ったときにも、やはりシェルでつないで
PIRセンサーをオフにする(プロセスをKILL)ってしてるけど・・・とても面倒だからね。

そして前回の画像保存先についてもちょこっと調整をやっておこう。
せめて日毎のディレクトリに分けないと、とても面倒・・・。

1.画像保存先の変更

視覚的にも確認しやすくするために、保存する時点でディレクトリを分けるロジックに変更。
全然大したことない変更だけど、実用性抜群(そうか?)。

「data」ディレクトリ内に日付ディレクトリを作って、その中にその日のファイルをズラッと保存。
Pythonのソースコードは以下。

import time
import os
import os.path
import picamera
import datetime

save_dir_base = 'data/'

while True:
        d = datetime.datetime.today()
        dir_name = d.strftime("%Y%m%d")
        date = d.strftime("%Y%m%d-%H%M%S")
        with picamera.PiCamera() as camera:
                camera.resolution = (1200,900)
                camera.start_preview()
                time.sleep(10)
                if os.path.isdir(save_dir_base + dir_name) != True :
                        os.mkdir(save_dir_base + dir_name)
                camera.capture(save_dir_base + dir_name + '/' + date + '.jpg')

2.PIRセンサーのオンオフに、物理的なボタンをつける

文頭でも書いたように、シェルにつないでプログラムを走らせたり殺したり・・・あぁ・・・面倒臭すぎるから、タクトスイッチをつけてセンサーのオンオフを制御することにした。
そしてスイッチが入っているかどうかを確認するために、LEDを付けといた。

LEDは 8 pin
タクトスイッチは 22 pin

Pythonのソースコードは以下。

import RPi.GPIO as GPIO
import time
import os

INTAVAL = 300
SLEEP_TIME = 0.5

SENSOR_PIN = 21
BUTTON_PIN = 22
BUTTON_OUT_PIN = 24
LED_PIN = 8

GPIO.cleanup()

GPIO.setmode(GPIO.BOARD)
GPIO.setup(SENSOR_PIN, GPIO.IN)
GPIO.setup(BUTTON_OUT_PIN, GPIO.OUT)
GPIO.setup(BUTTON_PIN, GPIO.IN)
GPIO.setup(LED_PIN, GPIO.OUT)

GPIO.output(BUTTON_OUT_PIN, GPIO.HIGH)
GPIO.output(LED_PIN, GPIO.LOW)

st = time.time() - INTAVAL
switch_flag = 0

while True:
    if(GPIO.input(BUTTON_PIN) == 1):
        if(switch_flag == 0):
            switch_flag = 1
        else:
            switch_flag = 0

    if(switch_flag == 1):
        GPIO.output(LED_PIN, GPIO.HIGH)
        if(GPIO.input(SENSOR_PIN) == GPIO.HIGH) and (st + INTAVAL < time.time()):
            st = time.time()
            os.system('echo NAIYOU!! | mail -s TITLE!!! ●●●@gmail.com')
    else:
        GPIO.output(LED_PIN, GPIO.LOW)

    time.sleep(SLEEP_TIME)

3.次に調整が必要なのは・・・

とりあえずここまでで問題なく動いている。
あとは保存される画像の移動を調整したいな。
現在は毎朝、画像の移動を行って、Raspberry Pi 内の画像を消去することで容量を確保しているから、ここもオートメーションしたいなぁ。ってか問題なくできるな・・・まぁそのうちやろう。

モバイルバージョンを終了