Raspberry Pi와 Arduino로 에어컨 IoT화

너무 춥다.mp4
돌아가면 이미 따뜻해지고 있는 방 갖고 싶다··· 원하지 않아?
그래서 IoT의 공부가 굳이 만들어 보았습니다.
처음이라고 하는 것으로 꽤 고전했습니다만 Node-RED군 덕분에 실현할 수 있었습니다. IoT 해보고 싶지만 무엇에서 손을 넣어 좋은지 모른다는 분의 참고가되면 다행입니다.

사용한 것



Raspberry Pi3
Arduino UNO
Grove의 Arduino 베이스 실드, LED, 적외선 수광기
라즈파이의 전원이나 시리얼 통신용 USB나 LAN 케이블 등

개요


  • Raspberry Pi와 Node-RED에서 트위터의 계정에 대한 특정 키워드를 읽습니다.
  • 키워드에 맞게 파이썬으로 Arduino에 지시를 보냅니다
  • Arduino에서 LED를 통해 에어컨으로 적외선을 날립니다

  • Arduino 준비



    적외선 해석은 이 사이트를 참고하십시오.
    Arduino에서 적외선 리모컨의 신호 분석
    아래 스케치
    int ir_out = 3;
    byte str=0;
    
    //暖房
    unsigned int dh[] = {/*ここに赤外線のデータ*/};
    //停止
    unsigned int ds[] = {/*ここに赤外線のデータ*/};
    
    
    void setup() { 
            pinMode(ir_out, OUTPUT); 
            Serial.begin(9600);
    }
    
    //暖房起動
    void heater() {
      int dataSize = sizeof(dh) / sizeof(dh[0]);
      for (int cnt = 0; cnt < dataSize; cnt++) {
        unsigned long len = dh[cnt]*10;
        unsigned long us = micros();
        do {
          digitalWrite(ir_out, 1 - (cnt&1));
          delayMicroseconds(8);
          digitalWrite(ir_out, 0);
          delayMicroseconds(7);
        } while (long(us + len - micros()) > 0); 
      }
    }
    
    //エアコン停止
    void stop() {
      int dataSize = sizeof(ds) / sizeof(ds[0]);
      for (int cnt = 0; cnt < dataSize; cnt++) {
        unsigned long len = ds[cnt]*10;
        unsigned long us = micros();
        do {
          digitalWrite(ir_out, 1 - (cnt&1)); 
          delayMicroseconds(8); 
          digitalWrite(ir_out, 0);
          delayMicroseconds(7);
        } while (long(us + len - micros()) > 0); 
      }
    }
    
    void loop() {
    
            if(Serial.available() > 0){
    
                    str = Serial.read();
    
                    if(str == 'h'){
                            heater();
                            str = 0;
                    }//hが送られてきたら暖房起動
    
                    else if(str == 's'){
                            stop();
                            str = 0;
                    }//sが送られてきたらエアコン停止
            }
            //delay(1000);
    }
    

    Raspberry Pi 준비



    pip 설치가 아직 있다면
    $ sudo apt-get install python-dev
    $ sudo apt-get install python-pip
    

    에서 설치
    node-red 설치에 대해서는
    Raspberry Pi에 Node-RED 설치
    참고하십시오.
    다음 프로그램

    airconheater.py
    import serial
    import time
    
    ser = serial.Serial('/dev/ttyACM0', 9600)
    time.sleep(2)
    ser.write("h")
    
    

    airconstop.py
    import serial
    import time
    
    ser = serial.Serial('/dev/ttyACM0', 9600)
    time.sleep(2)
    ser.write("s")
    
    

    Node-RED



    소셜란의 트위터(입력)와 그 외란의 exec(출력)을 사용합니다.
    (참고 : 트위터 노드를 사용하려면 Twitter 개발자 등록이 필요합니다)






    twitter 노드의 검색 조건 열에 @xxxxxx 로 사용자를 지정하고 switch 노드에서 트윗을 필터링합니다. exec 노드에는 python 프로그램을 실행하는 명령을 작성합니다. 에어컨 정지 분도 마찬가지로 설정하십시오.

    시작



    그리고는 배포 버튼을 누르면 완성입니다. Node-RED의 자동 기동을 설정하고 있으면, 라즈파이를 기동해 두는 것만으로 사용할 수 있습니다.

    끝에



    정리해 보면 단순한 것입니다만 여기에 젓갈 때까지 엄청 힘들었습니다···. 쓸데없는 부분 등 있다고는 생각합니다만 우선 움직였기 때문에 좋다고 하고 있습니다. 초보자용이라든가 말해 두면서 설명이 적은 생각도 합니다만 이제 기력이 솟지 않습니다. 조사하는 것도 힘이 될거야! (적당)
    모처럼 Arduino를 사용하고 있기 때문에 앞으로는 트위터에서 실온을 조사할 수 있도록 빗나가고 싶네요.

    참고
    Arduino와 RaspberryPi에서 스마트 폰에서 집 에어컨의 난방을 켜 보았습니다.
    Raspberry Pi와 Node-RED와 IFTTT와 Twitter로 외부에서 가전 조작

    계속 → 좋아하는 캐릭터에 에어컨을 켜자.

    좋은 웹페이지 즐겨찾기