takahiro.today

とりあえずやってみたことを掲載

DIY IT Raspberry Pi 電子工作

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

投稿日:2014年12月04日 更新日:

以前設置した『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センサーのオンオフに、物理的なボタンをつける

PIRセンサーとタクトスイッチ、LEDの配線

文頭でも書いたように、シェルにつないでプログラムを走らせたり殺したり・・・あぁ・・・面倒臭すぎるから、タクトスイッチをつけてセンサーのオンオフを制御することにした。
そしてスイッチが入っているかどうかを確認するために、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 内の画像を消去することで容量を確保しているから、ここもオートメーションしたいなぁ。ってか問題なくできるな・・・まぁそのうちやろう。

-DIY, IT, Raspberry Pi, 電子工作
-, ,

執筆者:

関連記事

出退勤の仕組みを作ってみた

SONY の RC-S380 を使って出退勤システムを設置した。 まずはNFCを使った単純なタイムカードみたいなもんで、Webのシステムと連動する程度。とりあえず今のところ Raspberry Pi …

Windows XP で Samba にアクセス出来なくなった

僕らが作業させていただいたものじゃないが、お付き合いのあるお客さんから「社内のSambaサーバのアクセスできなくなった」と相談を受けた。 プライベートでも可愛がってもらっているから、ちょっと拝見させて …

TOTO TMG40CRX の水をしっかり止める

自宅で利用しているTOTOの「TMG40CRX」が、ダラダラと水を流していることに気がついた。 少量ではあるけど水の流れるあとが付いてしまうし、そもそも水がもったいない気がするし・・・。 プロにお願い …

コーヒー焙煎時のチャフと煙の軽減枠 試作1号

コーヒーを焙煎していて、「チャフの掃除が面倒だなぁ」とか「煙で目が痛い」という悩みがあった。 チャフの飛び散り後の掃除が楽になるように、周囲2~3mに何も置かないようにしたり、煙が充満しないように窓を …

Rasbperry PiをVNCで遠隔操作

カメラモジュールとかを設置すると、やっぱり遠隔でその画面が見たかったりするのだ。 監視カメラとして撮影したたくさんのファイルは、もう保存しているからどうにでも確認できるけど、「今まさに見たい」ってタイ …