CdS에서 방 사용 가능 상태를 Gmail로 전송

CdS(황화 카드뮴)를 사용한 광센서를 사용하여 방의 불빛의 ON, OFF를 검지.

불빛의 전환이 있으면 메일로 알려주는 시스템.

사용할 제품
· RaspberryPi
・Arduino
· CdS
・브레드보드
・10kΩ 저항기
· 점퍼 와이어

시스템 구성도



· 대략적인 시스템 구성도


구현 절차


  • Arduino 설정
  • Gmail 설정
  • RaspbeeryPi 설정

  • 1. Arduino 설정



    1.아래의 회로도를 참고로 점퍼선을 연결한다





    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이 출력되는지 확인



    2.Gamil 설정



    Gmail에서 이메일을 보낼 때 설정이 필요합니다.

    1. Gmail에 로그인 후 2단계 인증을 ON
    2. 앱 비밀번호 만들기 , 16자리 비밀번호 가져오기

    앱 비밀번호를 사용하면 2단계 인증을 지원하지 않는 기기의 앱에서 Google 계정에 로그인할 수 있습니다. 이때 작성한 패스워드는 RaspbeeryPi로 작성하는 메일 송신 python 프로그램에 입력이 필요하게 된다.



    3. RaspbeeryPi 설정



    1. 아래 파이썬 프로그램을 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 = '[email protected]' #送信先メールアドレス
        from_addr = '[email protected]' #アプリパスワードを作成したメールアドレス
        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의 사용법에 대해 모르는 분은 별도로 참조하는 것이 좋습니다.

    좋은 웹페이지 즐겨찾기