以前からエアコンの自動化に取り組んでいます。
この時は一旦完成したのですが、不満だったのが赤外線の送信をM5Stack社の製品でないものを使っていたことでした。M5StackのIRユニットなどは飛距離が短く1〜2mぐらいしか飛ばないのでobnizのものを使っていたのでした。それでもいいのですが、他の部屋にも展開しようとした時にはケースに入っていた方がいいのでM5Stack製品で完成させようと今しており、そのための工夫としてM5Atomをもうエアコンの近くにくっつけることにしました。電源はエアコンのコンセントから取ろうとしています。
問題はエアコン付近と私が体感する床付近では少し温度差があることがわかっていることです。温度センサは床付近にある必要があります。
ですので、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のライブラリを使うことで送信する赤外線信号は調べる必要がありません。
#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(); }
またできたら書きます。