toyoshiの日記

株式会社トクイテンを有名にするための日記です

M5Atom(ESP32)でエアコンをON/OFFする

以前からエアコンの自動化に取り組んでいます。

toyoshi.hatenablog.com

この時は一旦完成したのですが、不満だったのが赤外線の送信をM5Stack社の製品でないものを使っていたことでした。M5StackのIRユニットなどは飛距離が短く1〜2mぐらいしか飛ばないのでobnizのものを使っていたのでした。それでもいいのですが、他の部屋にも展開しようとした時にはケースに入っていた方がいいのでM5Stack製品で完成させようと今しており、そのための工夫としてM5Atomをもうエアコンの近くにくっつけることにしました。電源はエアコンのコンセントから取ろうとしています。

問題はエアコン付近と私が体感する床付近では少し温度差があることがわかっていることです。温度センサは床付近にある必要があります。

d1が床付近の温度、d4がエアコン付近の温度

ですので、M5Atomはエアコン付近につけつつGroveケーブルでつながる温度センサは2mのケーブルで床付近まで落とすことにします。

M5Stack用温湿度気圧センサユニット Ver.3(ENV Ⅲ)www.switch-science.com

M5Stack用GROVE互換ケーブル 200 cm(1本)[A034-E]www.switch-science.com

だんだんややこしくなってきましたが、これでやりたいことができるはずです。

とりあえずボタンを押すとエアコンをON/OFFをするコードを書きました。IRremoteESP8266のライブラリを使うことで送信する赤外線信号は調べる必要がありません。

github.com

#include <M5Atom.h>

#include <IRremoteESP8266.h>
#include <IRsend.h>
#include <ir_Daikin.h>

const uint16_t kIrLed = 12;  // 赤外線が出るピン
IRDaikinESP ac(kIrLed); 

uint8_t FlAG = 0;

void setup() {
  M5.begin();         
  ac.begin();
}

void loop() {

  if (M5.Btn.wasPressed()) {  // ボタンが押されたら
    Serial.printf("Pressed \n");
    
    switch (FlAG) {
      case 0:
        ac.setMode(kDaikinCool); // 冷房モードにする
        Serial.printf("On \n");
        FlAG = 1;
        break;
      case 1:
        ac.off();
        Serial.printf("Off \n");
        FlAG = 0;
        break;
      default:
        break;
    }
    
    ac.send();
  }
  
  M5.update();
}

またできたら書きます。