1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CdSで部屋空き状況をGmailで送信

Last updated at Posted at 2018-12-02

CdS(硫化カドミウム)を使用した光センサを用いて、部屋の明かりのON,OFFを検知。

明かりの切り替えがあるとメールで知らせてくれるというシステム。

使用する製品
・RaspberryPi
・Arduino
・CdS
・ブレッドボード
・10kΩ抵抗器
・ジャンパワイヤー

#システム構成図

・大まかなシステム構成図
5555.PNG

#実装手順

  1. Arduinoの設定
  2. Gmailの設定
  3. RaspbeeryPiの設定

##1. Arduinoの設定

###1.下の回路図を参考にジャンパ線をつなげる

44.PNG

###2.プログラムをArduinoに書き込む

Arduino Web Editorのページに行き、下記ファイルをArduinoに書き込む。
※Arduino Web Editorの使い方がわからない方は別途参照が必須

CdS.ino
const int led_pin = 9;
const int vol_pin = 0;

int vol_value = 0;
int temp=0;

void setup() {
  Serial.begin( 9600 );
    temp = analogRead( vol_pin );
}

void loop() {
  vol_value = analogRead( vol_pin );

  analogWrite( led_pin, vol_value );

  if(abs(temp-vol_value)>10){ //一つ前に入ったtemp変数とvol_value変数の値が10より差が開いているか確認
  Serial.println("0");
  }else{
  Serial.println("1");
  }
  temp = analogRead( vol_pin );
  delay( 2000 );
}

接触の問題かわからないが、CdSの出力する値(vol_value変数)が接続するたびに異なることが起きたので、temp変数とvol_value変数の差から明かりのON,OFFを判別

###3.Arduinoのテスト

無事に書き込みが完了後、部屋の明かりをON,OFFに切り替えた時にだけ0が出力されるか確認

7894.PNG

##2.Gamilの設定

Gmailでメールを送信するときに設定が必要になる。

1.Gmailにログイン後2段階認証プロセスをON
2.アプリパスワードを作成、16桁のパスワードを取得

アプリ パスワードを使用すると、2 段階認証プロセスに対応していない端末上のアプリから Google アカウントにログインできるようになる。このとき作成したパスワードはRaspbeeryPiで作成するメール送信pythonプログラムに入力が必要になる。

Capture.PNG

##3.RaspbeeryPiの設定

###1.下記pythonプログラムをRaspberryPi上に作成

mail_send.py
import serial
import smtplib
import time
from email.mime.text import MIMEText

ser = serial.Serial('/dev/ttyACM0',9600,timeout=None) #Arduinoとシリアル通信
while True:
 line = ser.readline()
 x = int(line) #型変換 stringからint
 if x==0:
  if __name__ == '__main__':
    to_addr = 'xxxxxxxxxxxxxxxxxxx@gmail.com' #送信先メールアドレス
    from_addr = 'yyyyyyyyyyyyyyyyyyyy@gmail.com' #アプリパスワードを作成したメールアドレス
    mail_id = from_addr

    mail_pass = 'zzzzzzzzzzzzzzzz'  #作成したアプリパスワード(16桁)に置き換える

    message = MIMEText('Hello')
    message['Subject'] = 'Hello'
    message['From'] = from_addr
    message['To'] = to_addr

    sender = smtplib.SMTP_SSL('smtp.gmail.com')
    sender.login(mail_id, mail_pass)
    sender.sendmail(from_addr, to_addr, message.as_string())
    sender.quit()
ser.close()

###2.システムが正常に動作するか確認

$python mail_send.py

エラーが検出されず部屋の照明を切り替えた時に送信先メールアドレスにメールが届いていれば完了

###3.nohupコマンドでプログラムを裏で動作させる

最後にターミナルを消しても裏でプログラムが動作しているようにするために、nohupコマンドを使用

$nohup python mail_send.py &

jobsコマンドを使用、現在実行しているジョブを確認。

$jobs

nohupの使い方についてわからない方は別途参照することをお勧めする。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?