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, 電子工作
-, ,

執筆者:

関連記事

httpd で apr_sockaddr_info_get() エラー

ServersMan@VPSを仕事でもプライベートでも使うことがある。 メモリは1GB、HDDは50GBのスペックで月々467円(税抜き)。 ほぼワンコイン(惜しい)でいろいろテストしたり勉強したりで …

DCモーターの動作を覚えた

DCモーターをArduinoで動かしてみる。 を参考に、DCモーターの制御をやってみた。 電源は秋月電子通商で購入したブレッドボード用マイクロBメスUSBコネクタDIP化キットを使った。 よくギターの …

CentOSのファイルサーバが起動しない

事務所にあるファイルサーバの一つが起動しなくなっていた。 仲間から「ファイルが閲覧できないよ~」と指摘を受けて調査したところ、確かにアクセスできない状態だった。 ちなみにファイルサーバは CentOS …

モバイルバッテリーでRaspberry Piを動かす

Raspberry Pi をモバイルバッテリーでどのくらい動かせるのかテストしました。 全然厳密なものじゃなく、ざっくりと以下のような条件で計測しした。 ざっくりとイメージできれば良かったんだよー。 …

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

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