LoginSignup
15
15

More than 5 years have passed since last update.

赤外線センサーで監視装置を作る

Last updated at Posted at 2016-07-09

はじめに

以下のものを用意してください
赤外線センサー
ラズベリーパイとその関連品
コードできれば安いのを自分で探してください 

接続

abc.png

sensor raspbery pi
VCC 5V
OUT GPIO25:22
GND GND:25

コマンド

pi@raspberrypi:~$ sudo su
root@raspberrypi:/home/pi# 

GPIOで25ピンを使うので、GPIO25をユーザー空間にエクスポートする。
これをしないとGPIOにアクセスすることができない。

root@raspberrypi:/home/pi# echo 25 > /sys/class/gpio/export

echoコマンドで/sys/class/gpioディレクトリにあるexportファイルへ書き込むと/sys/class/gpio/gpio25という新しいディレクトリが作成され、GPIOをコントロールするために必要な仮想ファイルが用意される。
今回はセンサーからの入力を判定するので、directionファイルにinを設定する。

root@raspberrypi:/home/pi# cd /sys/class/gpio/gpio25
root@raspberrypi:/sys/class/gpio/gpio25# echo in > direction

これで、センサーに反応があるとvalueファイルに1、反応がなくなると0が書き込まれる。
センサーを反応させて下記コマンドを実施すると、valueに1が書き込まれ動作確認ができる。

root@raspberrypi:/sys/class/gpio/gpio25# cat value
1

スクリプト作成

今回作るものは
・赤外線センサが反応したらメールを送る

sudo nano sensor_push.py
sensor_push.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-

import time
import RPi.GPIO as GPIO
import os.path
import datetime
import smtplib
from email import Encoders
from email.Utils import formatdate
from email.MIMEBase import MIMEBase
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText

INTAVAL = 3
SLEEPTIME = 5
SENSOR_PIN = 25

#Gmailアカウント
ADDRESS = "Gmailのアドレス"
PASSWARD = "Gmailのパスワード"

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)

st = time.time()-INTAVAL

while True:
  print GPIO.input(SENSOR_PIN)
  if(GPIO.input(SENSOR_PIN) == GPIO.HIGH) and (st + INTAVAL < time.time()):
    st = time.time()
    print("人を感知しました")

    def create_message(from_addr, to_addr, subject, body, mime=None, attach_file=None):

        msg = MIMEMultipart()
        msg["From"] = from_addr
        msg["To"] = to_addr
        msg["Date"] = formatdate()
        msg["Subject"] = subject
        body = MIMEText(body)
        msg.attach(body)

        # 添付ファイル
        if mime != None and attach_file != None:
            attachment = MIMEBase(mime['type'],mime['subtype'])
            file = open(attach_file['path'])
            attachment.set_payload(file.read())
            file.close()
            Encoders.encode_base64(attachment)
            msg.attach(attachment)
            attachment.add_header("Content-Disposition","attachment", filename=attach_file['name'])

        return msg

    def send(from_addr, to_addrs, msg):

        smtpobj = smtplib.SMTP(SMTP, PORT)
        smtpobj.ehlo()
        smtpobj.starttls()
        smtpobj.ehlo()
        smtpobj.login(ADDRESS, PASSWARD)
        smtpobj.sendmail(from_addr, to_addrs, msg.as_string())
        smtpobj.close()


   if __name__ == '__main__':

       #宛先アドレス
       to_addr = "宛先アドレス"

       #件名と本文
       subject = "Thieves!Fire!Murder!"
       body = "本文"

       #添付ファイル設定(text.txtファイルを添付)
       mime={'type':'text', 'subtype':'comma-separated-values'}
       attach_file={'name':'test.txt', 'path':'./text.txt'}

       #メッセージの作成(添付ファイルあり)
       #msg = create_message(ADDRESS, to_addr, subject, body, mime, attach_file)

       #メッセージ作成(添付ファイルなし)
       msg = create_message(ADDRESS, to_addr, subject, body)

       #送信
       send(ADDRESS, [to_addr], msg)



  time.sleep(SLEEPTIME)

後は

sudo python sensor_push.py

でメールが送られてきます(赤外線センサーが反応すれば)

~ちなみに~

件名は"Thieves!Fire!Murder!"です

追記

動作確認ができたので、もし自動実行できるようにしたいのなら

pi@raspberrypi:~$ crontab -e
#
#
@reboot python sensor_push.py
!!注意!!

"@reboot python sensor_push.py"の前に#
をつけない(="#@reboot python sensor_push.py"と書くな!)

参考

[Raspberry Pi] 夏だ!人感センサーを使って蝉を鳴かせよう
Gmailで簡単にメール送信

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15