何を思い立ったか自室のエアコンと照明器具をスマホで操作したくなり、学習リモコンIRKitを購入しました。iPhoneやAndroidのアプリからWiFi経由で操作できるリモコンです。

エアコンと照明、テレビが操作できるようになりました。空気清浄機もリモコン対応のやつ買っておけばよかったなぁ。


使い始めて快適になったものの、夜中LEDがずっと青く点灯したままで気になる...

こんな感じ。

 


...ということで待機中のLEDを消そうとチャレンジしました。

 

IRKit の LEDの光 と Cloud Serverへのアクセス をオフにしてみた。

を参考にさせて頂きました。
最新バージョンへの追従が難しくなるためカスタムファームを使いたくなかったので、
純正IRKitのソースを改造することにしました。

 

用意するもの
・IRKitデバイスとWiFiなどの動作環境

・microUSBケーブル(IRKitの電源ケーブルとして必要なのでお持ちですね)
・Windows10のPC(Linux、Macでも問題ないはず)
・開発環境 ARDUINO IDE 1.0.6
  最新でも良いのかもしれませんが、上記BLOGの方が古いのを使っていらっしゃったので、
  余計な苦労をしたくないため同じものを使いました。

・IRKitの最新ソース(2016年12月時点で3.0.0.0.g85190b1)
 

----
1. PCとIRKitをmicroUSBケーブルで接続します。
   ドライバを用意しなくても、COM5として認識されました。
----
2. ダウンロードしたソースの4つのファイルを修正します。
   変更した行は★です。
   
device-master\firmware\src\IRKit\GSwifi.cpp:
 WiFiの接続パスワードらしいのでパスワードを埋め込みます。
 買った時の初期パスワードのままです^^;
char* GSwifi::password() {
    (省略)
    //char *ret = PB("XXXX,XXXXXXXXXX", 0);
    char *ret = PB("XXXX,0123456789", 0); //★
    (省略)
}

 

device-master\firmware\src\IRKit\version.c:
 書き変わったことを分かるようにするため、バージョン情報をいじります。
//const char version[] = "3.0.0.0.g85190b1";
const char version[] = "3.0.0.0.g85190b1+"; //★

 

device-master\firmware\src\IRKit\IRKit.ino:
 待機状態のLEDを青から消灯に変更します。
void on_irkit_ready() {
    //color.setLedColor( 0, 0, 1, false ); // blue: ready
    color.setLedColor( 0, 0, 0, false ); // off: ready //★
}

device-master\firmware\src\IRKit\FullColorLed.cpp:
接続時などいろいろなLED点灯時に点滅処理をさせているようなのですが、
点滅終了後に消灯してあげないと青のまま残ってしまいました。

そのため、消灯させる処理を呼びます。同じソース内にoff()関数があったのでそれを使います。
void FullColorLed::onTimer() {
    (省略)
    TIMER_TICK(blink_timer_);
    if (TIMER_FIRED(blink_timer_)) {
        TIMER_STOP(blink_timer_);
        isBlinking_ = false;
        off(); //★
    }
}
----
3.ファームウェアのビルドと書き込みです。
  簡単でした。
  
 arduino-1.0.6\arduino.exe
を起動し、[ファイル]→[開く]から
 device-master\firmware\src\IRKit\IRKit.ino
を開きます。

[スケッチ]→[検証・コンパイル]でエラーが発生しないことを確認。

[ツール]→[マイコンボード]から"Arduino Leonardo"を選択
[ツール]→[シリアルポート]から接続されたシリアルポート"COM5"を選択

[ファイル]→[マイコンボードに書き込む]
----
以上!
待機状態でもLEDが消え、気にならなくなりました。