電動ハニカムシェード解析

電波式ハニカムシェードのリモコンを赤外線で制御するための記録

一条工務店ハニカムシェードリモコンのプログラム

2022年08月17日 | ハニカムシェード

ハニカムシェードリモコン解析の備忘録

 

一条工務店の電動ハニカムシェード。

無線式のため市販のスマートリモコンでは遠隔操作できませんが、

無線⇒赤外線に変換するための機器「IR-RF-converter」を作るための道のり。

 

( IR=赤外線 RF=無線 の略です)

 

送信・受信の方法が確立したので、無線⇔赤外線の変換プログラムを作成します。

無線の送受信の方は、https://github.com/sui77/rc-switch/ を参考に一条工務店用のプログラムに書き換えております。

 

プログラムの一部抜粋

 

//*********************************************************************
RCSwitch mySwitch = RCSwitch(); // RF準備
IRsend irsend(IRSendPIN);          // IR送信準備
IRrecv irrecv(IRRecvPIN);          // IR受信準備
decode_results results;         // IRデータ格納先

//*********************************************************************

void setup() {

  //無線機及び赤外線の設定開始
  mySwitch.enableReceive(RFRecvPIN); //RF受信
  mySwitch.enableTransmit(RFSendPIN);//RF送信
  mySwitch.setProtocol(1);//一条用自作プロトコル選択
//  { 206, { 4,   1 }, {  1,  2 }, {  2,  1 }, true  },    // protocol 1
  mySwitch.setRepeatTransmit(10);//RF繰り返し送信回数
  
  irsend.begin();
  irrecv.enableIRIn();
  
  mySwitch.resetAvailable();
  irrecv.resume();

}

//*********************************************************************

void loop() {
  //RF受信まち⇒受信したらIR信号として送信
  if (mySwitch.available()) {
    irsend.sendNEC(mySwitch.getReceivedValue(), 32);
    mySwitch.resetAvailable();
    irrecv.resume();
    delay(200);
  }

  //IR受信まち⇒受信したらRF信号として送信
  if ( irrecv.decode(&results) ) {
      mySwitch.send(uint64ToString(results.value, DEC).toInt(), 32);
    mySwitch.resetAvailable();
    irrecv.resume();
    delay(200);
  }
    delay(50);

}

 

プログラムは素人ですので、参考程度にお願いします。

このプログラムをベースにWiFi接続し、APモードで設定を行うようにしてあります。


一条工務店ハニカムシェードリモコンの受信方法

2022年07月29日 | ハニカムシェード

ハニカムシェードリモコン解析の備忘録

 

一条工務店の電動ハニカムシェード。

無線式のため市販のスマートリモコンでは遠隔操作できませんが、

無線⇒赤外線に変換するための機器「IR-RF-converter」を作るための道のり。

 

( IR=赤外線 RF=無線 の略です)

分解したリモコンからRF信号を取り出す事に成功しましたが、

”学習リモコン”とするには毎回分解するわけにはいきません。

 

解析した信号から逆算して受信機を絞り込んでいきます。

 

ハニカムシェード用の周波数は315Mhz(正確には314.84Mhz)ですので、315Mhz用の受信機を十数種類の受信機を購入し、それぞれテストしてみました。

 

その中で何種類かの受信機で反応がありました。

不思議なのは同じモジュールでも電源電圧が5vタイプと3.3vタイプで反応が分かれたことです。とりあえず動いたので詳しくは調べませんでしたが、一番感度が良く動いたのは「HG213A(右下)」で、次は「LR33B(右上)」が使用可能で、左の4個は使用(受信)できませんでした。(残りは捨ててしましました)

"正しく受信できる受信機”を見つけられたことで、次のステップに進めます。

 

マイコンはesp8266を利用して開発を進めたのですが、世に出回っているRF学習プログラムはすべて正しく受信できずに終わりました。

 

原因を調べるためにプログラムを読み解くと、原因が見えてきました。

無線信号にも赤外線と同じように送受信のためのルールがありますが、こちらも”一条ルール”なのか独自のタイミングでプログラムされているようでした。

この”一条ルール”がRF学習プログラムのテンプレートから逸脱しているので反応しない。という結果でした。

 

テンプレートに無いならテンプレートに追加すればいいと少しプログラムを変更しましたがこれでも反応が無い。

さらにプログラムを読み解くと、主にスタートビットのタイミングに制限がかかっていました。

それ以外にもいくつかの条件に引っ掛かり、ノイズとしてはじかれている様でした。

 

おそらくRF学習プログラムは市販によくあるRF送受信機に合わせてプログラムされているが、”一条ルール”がこれから大きくかけ離れたことで受信できなくなっているようでした。

 

この後かなりの時間をかけて数種類のRF学習プログラムを読み解き、独自に一条用テンプレートに対応したプログラムを作成しました。

 

いつも便利に使わせていただいているライブラリがどれほどありがたい物かがよくわかりました。

(ライブラリ=簡単に言うとスマホのアプリ様な物で、インストールすることでいろいろな機能を簡単に使えるようになるプログラム)

 

その後、独自に組み直したプログラムと受信機「HG213A」を合わせることで、ハニカムシェード用リモコンから操作用信号の受信に成功!

これでリモコンを分解せずとも信号を受信できるようになり、ハニカム学習リモコンが作れる!という状態まで来ることができました。

 

ここまでで約2年が経過しており、ほとんど諦めかけていた頃でした。

年末年始の休みを利用してがっつりプログラムに没頭した結果です。

※プログラム・電子工作は完全に趣味で、すべて独学の為に時間がかかっただけです。


一条工務店ハニカムシェードリモコンの送信解析

2022年07月24日 | ハニカムシェード

ハニカムシェードリモコン解析の備忘録

 

一条工務店の電動ハニカムシェード。

無線式のため市販のスマートリモコンでは遠隔操作できませんが、

無線⇒赤外線に変換するための機器「IR-RF-converter」を作るための道のり。

 

他の方も試されている通り、力業(リモコンのスイッチを乗っ取るやり方)が一番簡単です。

「どうせ作るなら納得のいくものを」と解析を始めたのが2018年10月で、完成できたのが2021年9月のことです。

結果スマートな変換リモコンが完成し出来上がりにはかなり満足しています。

 

目標は「市販の学習リモコン並みの簡単さで使え、スマートシステムと連携ができる事」です。

アレクサやOKグーグル、Siriの音声アシスタントで操作できれば、スマホひとつで操作可能です。

 

開発の記録が目的です。コメントには回答できない場合があります。Instagramと内容は被ります。

当ブログはあくまで趣味の電子工作の備忘録です。素人の独学ですので、間違いなどあるかもしれません。
また、当ブログのご利用により、万が一トラブルや事故が起きたとしても、当方では一切の責任を負いません。

 

まずはリモコンの電波を”学習できる機器”が無いかと、何種類か学習RFリモコンを購入しました。

結果は惨敗で、学習どころか反応すらしませんでした。

 

次にArduinoを利用しRF学習リモコンを自作しましたが、こちらも惨敗で無反応という結果になりました。

一条工務店独自の信号が使われていると考え、細かく調査を始めました。

 

最初にテストしたことは、無線変換前の信号を解析しその信号をRFモジュールで送信してみること。

テスターと部品の仕様書を見比べながら、リモコンの回路と仕組みを理解します。

(一条工務店ハニカムシェード用リモコンの中身です)

マイコン本体からRF送信回路へつながる3本の線のうち、真ん中の線が信号線でした。

残り2本はRF送信ICの起動用信号です。

この信号線を解析するためだけに簡単なオシロスコープを買いました。

DOS150という5,000円くらいで買える1チャンネルオシロです。

 

波形を見ながら、送信されている信号の長さや特徴を解析します。

結果から言うと、タイミングが「412」と「206」の組み合わせの信号が出力されていました。

この信号を2進数(0と1の組み合わせ)に変換していきますが、

参考にしていた赤外線信号とは異なっていたため、こちらも解析には時間がかかりました。

 

下記が生の解析信号です。

uint16_t rawData[1015] = {68, 44,  68, 22,  22, 66,  32, 22,  68, 44,  22, 4664,  804, 212,  206, 412,  204, 412,  206, 412,  204, 412,  404, 212,  404, 212,  204, 412,  204, 418,  206, 410,  404, 212,  404, 214,  206, 412,  404, 212,  206, 412,  404, 214,  204, 418,  204, 412,  404, 212,  206, 410,  404, 214,  404, 214,  204, 412,  206, 412,  204, 418,  406, 212,  404, 214,  204, 412,  404, 214,  204, 412,  406, 212,  404, 212,  404, 216,  804, 212,  206, 412,  204, 412,  206, 412,  204, 412,  404, 212,  404, 212,  206, 412,  206, 418,  204, 412,  404, 212,  404, 212,  206, 410,  406, 212,  204, 412,  404, 212,  206, 418,  204, 412,  404, 212,  206, 410,  404, 212,  406, 212,  204, 412,  204, 412,  206, 416,  404, 212,  404, 214,  206, 410,  404, 212,  206, 412,  404, 212,  404, 212,  406, 216,  804, 212,  204, 412,  206, 412,  204, 412,  206, 410,  404, 212,  404, 212,  206, 412,  204, 418,  204, 412,  404, 214,  404, 212,  206, 410,  406, 212,  204, 412,  404, 214,  204, 418,  206, 410,  404, 214,  204, 412,  404, 212,  404, 212,  206, 412,  204, 412,  206, 418,  404, 212,  404, 214,  204, 412,  404, 212,  206, 410,  406, 212,  404, 212,  406, 216,  804, 212,  204, 412,  204, 412,  204, 412,  206, 410,  404, 214,  404, 214,  204, 412,  206, 418,  206, 412,  404, 212,  406, 212,  204, 410,  404, 214,  204, 412,  404, 212,  206, 416,  206, 412,  404, 214,  204, 412,  404, 212,  404, 212,  206, 412,  204, 412,  206, 418,  404, 212,  404, 212,  206, 410,  406, 212,  204, 412,  404, 212,  404, 212,  404, 216,  804, 212,  204, 412,  206, 412,  206, 412,  204, 412,  404, 212,  406, 212,  204, 412,  206, 418,  206, 410,  404, 212,  404, 214,  204, 412,  404, 212,  206, 412,  404, 214,  206, 418,  204, 412,  404, 212,  206, 410,  404, 212,  404, 214,  204, 412,  204, 412,  206, 418,  404, 212,  404, 212,  206, 410,  408, 210,  204, 412,  404, 212,  404, 212,  404, 216,  804, 212,  206, 412,  204, 412,  206, 412,  204, 412,  404, 212,  404, 214,  204, 412,  204, 418,  204, 410,  404, 214,  404, 214,  204, 412,  404, 214,  204, 410,  406, 212,  204, 418,  204, 412,  404, 212,  206, 410,  406, 212,  404, 214,  204, 412,  206, 412,  204, 418,  404, 212,  404, 214,  204, 412,  404, 212,  206, 410,  404, 212,  404, 212,  404, 218,  804, 212,  206, 412,  206, 412,  204, 412,  204, 412,  404, 212,  404, 212,  206, 412,  204, 418,  204, 412,  404, 212,  404, 212,  206, 412,  404, 214,  204, 412,  404, 212,  206, 418,  206, 412,  404, 214,  204, 412,  404, 214,  404, 214,  204, 412,  206, 410,  204, 418,  404, 214,  404, 214,  204, 412,  404, 212,  206, 410,  404, 214,  404, 212,  406, 216,  804, 212,  204, 412,  206, 412,  204, 412,  206, 410,  406, 212,  404, 214,  204, 412,  204, 418,  204, 412,  404, 212,  404, 212,  206, 410,  406, 212,  204, 412,  404, 212,  206, 418,  206, 410,  404, 214,  204, 412,  404, 212,  404, 214,  204, 412,  204, 412,  206, 418,  404, 212,  404, 212,  206, 410,  404, 212,  206, 410,  404, 212,  404, 212,  404, 218,  804, 212,  204, 412,  206, 410,  204, 412,  204, 410,  404, 212,  404, 214,  204, 412,  206, 418,  206, 410,  406, 210,  404, 214,  204, 412,  404, 212,  206, 410,  406, 212,  206, 418,  206, 410,  406, 212,  204, 412,  404, 212,  404, 212,  206, 412,  204, 412,  206, 418,  404, 212,  404, 214,  204, 412,  404, 214,  206, 410,  404, 212,  404, 212,  404, 216,  804, 212,  204, 412,  204, 412,  206, 410,  206, 410,  406, 212,  404, 214,  206, 410,  206, 418,  206, 410,  406, 212,  404, 214,  204, 412,  404, 212,  206, 410,  406, 212,  204, 418,  206, 410,  404, 212,  206, 410,  404, 212,  404, 214,  206, 412,  204, 412,  204, 418,  404, 212,  404, 212,  206, 410,  404, 214,  204, 412,  404, 212,  404, 212,  404, 216,  804, 212,  206, 412,  204, 412,  206, 410,  204, 412,  404, 214,  404, 212,  206, 412,  204, 418,  204, 412,  404, 212,  404, 212,  206, 410,  404, 214,  204, 410,  406, 212,  204, 418,  204, 412,  404, 212,  206, 410,  404, 212,  404, 214,  204, 412,  206, 412,  204, 418,  404, 212,  404, 214,  206, 410,  404, 212,  206, 412,  404, 212,  404, 212,  406, 216,  804, 212,  206, 412,  206, 410,  206, 412,  204, 412,  404, 212,  404, 212,  206, 412,  204, 418,  204, 412,  404, 212,  404, 212,  206, 412,  404, 214,  204, 412,  404, 212,  206, 418,  204, 410,  404, 214,  204, 412,  404, 212,  404, 214,  204, 412,  204, 412,  204, 418,  404, 214,  404, 214,  204, 412,  404, 212,  206, 410,  404, 212,  404, 212,  404, 218,  804, 212,  206, 410,  206, 412,  204, 412,  206, 410,  404, 212,  404, 214,  204, 412,  206, 418,  204, 410,  404, 212,  404, 214,  204, 412,  404, 214,  206, 410,  404, 212,  206, 418,  206, 410,  404, 214,  204, 412,  404, 214,  404, 212,  206, 412,  204, 412,  206, 418,  404, 212,  404, 212,  206, 410,  404, 214,  204, 412,  404, 212,  404, 212,  406, 216,  804, 212,  204, 412,  206, 412,  204, 412,  206, 410,  404, 214,  404, 214,  204, 412,  206, 418,  206, 410,  404, 212,  406, 212,  204, 412,  404, 212,  206, 412,  404, 214,  204, 418,  204, 412,  404, 212,  206, 410,  404, 212,  404, 214,  204, 412,  204, 412,  206, 418,  404, 212,  404, 212,  206, 410,  404, 214,  204, 412,  404, 212,  404, 212,  404, 218,  802, 212,  206, 412,  204, 412,  206, 412,  206, 410,  404, 212,  404, 212,  204, 412,  204, 418,  206, 410,  404, 214,  404, 214,  204, 412,  404, 212,  206, 410,  404, 214,  204, 420,  204, 412,  404, 212,  206, 410,  406, 212,  404, 214,  204, 412,  206, 412,  204, 418,  406, 212,  404, 214,  204, 412,  404, 212,  204, 412,  404, 212,  404, 212,  404, 278,  70, 44,  68, 22,  22, 66,  32, 22,  22, 22,  24, 44,  24}; 

詳しくは省きますが、

最初の【68, 44,  68, 22,  22, 66,  32, 22,  68, 44,  22, 4664】はRF起動用のスタートビットと予想。

次の【804, 212】が信号のスタートビットと予想

最後の【70, 44,  68, 22,  22, 66,  32, 22,  22, 22,  24, 44,  24】はRF終了用のエンドビットと予想。

 

間になる長い数列が信号になりますが、よく見ると同じスパンで繰り返されていることに気が付きます。

信号用のスタートビットを境に

804, 212,  206, 412,  204, 412,  206, 412,  204, 412,  404, 212,  404, 212,  204, 412,  204, 418,  206, 410,  404, 212,  404, 214,  206, 412,  404, 212,  206, 412,  404, 214,  204, 418,  204, 412,  404, 212,  206, 410,  404, 214,  404, 214,  204, 412,  206, 412,  204, 418,  406, 212,  404, 214,  204, 412,  404, 214,  204, 412,  406, 212,  404, 212,  404, 216, 】

の信号が15回繰り返されています。

 

試しにこのコードをarduinoの赤外線学習リモコンにプログラムし、RF送信モジュールに入力するとハニカムシェードが動きました。

使用したRF送信モジュールは【315Mhz/ask変調】です。

 

このままでも使用可能ですが、これでは学習の度にリモコンを分解⇒解析⇒プログラムの書き換え…とあまり現実的な学習リモコンとは呼べません。

信号をさらに解析し、信号のフォーマットを調べます。

ぱっと見の 2** = 0 , 4** = 1 と読むのが一番簡単ですが、数種類の信号を並べたときに意味を成さない数列になることがわかります。

赤外線フォーマットと見比べてみましたが一貫性がなく信号の解析はほぼ諦めていました。

 

なかなか成果が出ないので、市販のRF学習リモコンを分解・解析し、RF信号の特徴を調べる事にしました。

赤外線フォーマットとは特徴が違い、1桁の信号の中でスタートビットとエンドビットが含まれていることに今更気が付き信号を読み返しました。

一番短い2**を基準にコードを読むと、ようやくRF信号フォーマットが解けてきました。

1桁600の信号で【200のスタートビット】+【信号】+【200のエンドビット】の組み合わせで並んでおり、

 200+400 = 0 | ̄|__

 400+200 = 1 | ̄ ̄|_

と読むことで信号に意味のある数列が確認できました。

これを上のコードに当てはめ、さらにほかのボタンと比べます。※2進数です

【100001100011010100101100011010111】リモコンの「」の上げ信号
【100001100011010100101100111010001】リモコンの「」の上げ信号
【100001100011010100101101011011011】リモコンの「」の上げ信号
【100001100011010100101101111011101】リモコンの「」の上げ信号
【100001100011010100101110011011100】リモコンの「」の上げ信号

【100001100011010100101100011101011】リモコンの「」の下げ信号
【100001100011010100101100111101101】リモコンの「」の下げ信号
【100001100011010100101101011100111】リモコンの「」の下げ信号
【100001100011010100101101111100001】リモコンの「」の下げ信号
【100001100011010100101110011100000】リモコンの「」の下げ信号

黄色が選択しているリモコンの1~4or全の選択で、青(01)又は緑(10)で上げ下げ操作を制御しているようです。ちなみに停止は(00)です。

最初の12桁が固有番号、次の8桁は環境変数?、最後の4桁はチェックサムと予想しています。正確にはわかりませんので、ここでは言及しません。

 

これで送信されている信号がはっきりしました。

”送信”は問題なく制御できるようになり、我が家の初号機が生まれました。

学習機能の無いただの送信機ですが、URL(post通信)で制御できることでブラウザやRaspberrypiからの制御が可能になりました。

いまでも現役で、バックアップシステムとして稼働しています。

(WIFIが切れたときに直接制御できる仕組みがあるため)

 

次はRF信号の受信に取り掛かりましたが、こちらもかなり苦労しました。

 

にほんブログ村 住まいブログ 一戸建 一条工務店へにほんブログ村 その他趣味ブログ 電子工作へ
にほんブログ村