以前の記事『
IRぴっぴちゃん、誕生 📺🐰⚡️』の通り、スタックチャンを赤外線リモコン対応に改造した。
このぴっぴちゃんは、Aruduino キットに入っていた赤外線受信センサー VS1838B を使って、IR ドライバー IRremoteESP8266 を使って、そのサンプルプログラムを改造通して、作ったもの。
残念ながら、SONY や 三菱のエアコンの信号は解析できたんだけど、
家電製品協会による家製協(AEHA)フォーマットを認識できないでいた。そのため、生の赤外線データを保存して、それを、そのまま発信してた。なので、データの Json ファイルが大きくなってしまっていた。
そんなとき、ツイッターで わしし@washishi さんに『
赤外線リモコン信号の解析アプリケーション』を教えて貰った。その中の『
M5Stack Core2とVSCode + PlatformIOとでM5Stackプログラミングを始めてみた。』と言う記事を見たら、M5Stack で PANASONIC の赤外線リモコン信号が認識されていた。
実績があれば、自分の所でも出来ると思い、ソースコードを見たけど、同じだった。どこか、パラメータがいじれないかと英文を読んでいたら、
// Note: Default is 25(%). Going to a value >= 50(%) will cause some protocols
// to no longer match correctly.
とあった、つまり、値を25〜50の範囲にすれば、信号を認識できるということ。
その kTolerancePercentage の値を色々変えて、45 がベターだった。PANASONIC はほぼ認識できて、扇風機のリモコンがまれに『RC6』と誤って、信号コードがおかしい値となるぐらいだった。
setup() 関数の中に、
irrecv.setTolerance(kTolerancePercentage); // Override the default tolerance.
を追加して、赤外線リモコンのメーカーを認識できない場合にだけ raw データを発信するようにソースを修正して、無事動かすことができた。
これで、Json のデータファイルを小さくできると喜んだんだけど、
「全てのリモコンデータの、学習し直しになった 💦 」
ま、でも、うまく動いたので 💦