偶然、私はCh-i-Dカタログで前例のない寛大さの魅力につまずいた。 Velleman 7500-3Bキット用の追加のワイヤレスソケットは、1個あたりわずか100ルーブルです。 しかし、これはリモートコントロールのないソケットです。つまり、使用する前にやや不明確な見通しがあります。なぜなら、開く前は内部の内容があまり明確ではないからです。しかし、サンプルコントロールコードはありません。 リモコンの上に置いた場合、提案はすぐにそれほど興味深いものではなくなります。
多少のリスクにもかかわらず(100ルーブルはありますが!?)、この製品が、この特定の構成で、単一世帯規模の社会主義革命をどのように支援するかが興味深いものになりました。
買い物をする前、私は理論的に精通していた。 つまり、これらのアウトレットのトピックについて、このインターネットの内容を探しました。 そして、彼がホームコントローラーでソケットを制御し、無線リモートコントロール信号でコマンドを実行し、周辺機器とデータを交換するために長い間使用してきたRC-Switchライブラリと互換性があること (Velleman WRS3B)を知ったとき、彼は実際に落ち着きました。
これは希望を刺激しました。
。 そのような包装
簡単な紹介
通常、このタイプのソケット(およびリモート)は、2262/2272ファミリの専用のエンコードおよびデコードチップで実行されます。 さらに、数字の前に、PT、SC、HSなどの完全に異なるインデックスが存在する場合があります。 そして、数字の後のインデックスは、動作モードとアドレスとデータラインの構成を決定します。 また、ほとんどの場合、8ビットのアドレスと4ビットのデータを備えたチップが使用されますが、オプションは可能です-最大12ビットのアドレスまたは最大6ビットのデータ。
使用されるプロトコルのフレームワーク内で、ビットは次の3つの値のいずれかを取ることができます:1、0、およびF.アドレスとデータビット(合計12ビット)が一緒になってコードワードを構成し、信頼性のためにそれぞれ4回繰り返され、それぞれ1つのフレームを表します。 正直なところ、問題は、データシートを読んでも、コードワードのビットの順序と、神秘的な状態Fの意味を理解するのに私を近づけなかったことです。
そこで、2時間の読書から、次のことを思いつきました。
動作の基本原理は、送信機(エンコーダー)と受信機(デコーダー)でコマンドを送信するために、同じアドレスが設定され、制御は原則としてデータ回線を介して実行されることです。 つまり、リモートコントロールの各ボタンには、おそらく一意のアドレスが1つあります。
典型的な実装には、2ビットのデータも含まれます。これらのデータは、特定のアドレスの周辺機器で何をする必要があるかを示します-有効または無効。
。 裏返し
豊かな内なる世界
幸運なことに、2272ファミリの人気のあるチップ、より正確には、HS2272-L4( 1と2 )、つまり8アドレスビット、4データビット、および状態固定でエンコードすることを期待して、オブジェクトを開きました。 つまり アドレスごとに2つの静的状態変更コマンドがあります。 ソケットの場合、これは1つのボタンでオンにし、他のボタンでオフにすることを意味します。
私のラジオコンセントとは異なり、4つのチャネルではなく、8つのチャネルがあります。散歩する場所があります。 チャネルの変更は、いわば、10進数から2進数へのハードウェアコンバーターを使用して実装されます。
。 プラスチックは柔らかく、エンコーダは硬く、ソケットのマーカーポインターはほとんど認識できません。 フェルトペンで色を付ける必要がありました。
エンコーダは「口ひげ」接点を持つ回転スリーブであり、その対応物はトラックのパターンを持つボードです。「口ひげ」の閉鎖はアドレスの8ビットのうち3つの状態を決定します。 8つの制御チャネルを決定するのはこれらの3ビットであると推測するのは簡単です。
スラリーフラックスボードを簡単に紹介すると、次の図がわかります。
1)アドレスラインA0、A4-A7は直ちにグランドに設定されます(つまり、対応するビットは0に設定されます)。
2)一方のアドレスラインA1-A3は抵抗を介して+ 5Vにプルアップされ、他方ではエンコーダーによってグランドに接続されます(つまり、000から111の値を取ります)。
3)データラインD1〜D3もグランドに接続されており、制御ビットはD0に委ねられています。
これはおそらく最も興味深いものです。 それほど興味深いものではない-リレーのタイプは、特性で宣言されたキロワットを示し、それに耐えなければならない。
曲を推測する
うん、これらのビット! ストリートリバースエンジニアリングが必要ですか?
もちろん、ソケットは私が持っているリモートに応答しませんでした-しかし、それは良いことです。 もちろん、少なくとも1つのコードを盲目的に拾い上げても機能しませんでした。 いいえ、私は嘘をついています-その過程で、私はすでに私のために働いているコンセントのコードの1つに偶然出会いました。 それは本当に幸運です。 並行して、 RC-Switchの作成者が 3ビット状態のプロトコルについて話す理由を考えましたが、例では0とFの2つしか使用していません。
これは、ライブラリとの互換性を主張するだけでなく、やや混乱を招きました。 したがって、私は単純な方法、つまり 余分なビットと条件を取り除きます。 エンコーダロジックは、アドレスビットに3つの保証されたゼロがある位置を持っていることを明確に示唆しました。これは、制御チャネルを選択する役割を果たします。 これに、地上に設定された残りの住所行を追加し、8つのゼロを取得します。 データラインの制御ビットを計算するためだけに残ります。
おもしろいですが、エンコーダーを8番目のチャンネルに設定すると、マルチメーターに3つのゼロが表示されます。 つまり エンコーディングは「後方」になりました:
8〜000
7-100
6-010
5〜110
4-001
3〜101
2-011
1〜111
ところで、ここで、RC-Switchの実際の例にはない3番目の状態が発見されました。 つまり、アドレスは0と1で構成され、Fだけは使用されません。
データラインについては、データシートのピン配置から判断すると、同じ確率の制御ビットはD0とD3になります。 しかし、実際には、これはまだD0です(コードワードスキームによる判断)。
さらなる実験の結果、データラインではonコマンドがF000、offが0000であることが判明しました。
プロセスを示すための小さなコードを次に示します。
/* http://dzrmo.wordpress.com/2012/07/08/remote-control-pt2272-for-android/ http://sui77.wordpress.com/2011/04/12/163/ http://code.google.com/p/rc-switch/ */ #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); void setup() { // 10 mySwitch.enableTransmit(10); } // 0 // , () // 8 - 000 // 7 - 100 // 6 - 010 // 5 - 110 // 4 - 001 // 3 - 101 // 2 - 011 // 1 - 111 // 5-8 - 0000 // : F000 - // 0000 - void loop() { // #2 mySwitch.sendTriState("00110000F000"); delay(1000); mySwitch.sendTriState("001100000000"); delay(1000); }
まとめ
私が欲しかったのは私が得たものでした。 ソケットは家庭での使用に非常に適しており、コマンドシステムは英雄的な努力によって解決され(ここでも知識を得る代わりに推測した)、ArduinoのコードのRC-Switchライブラリを使用して簡単に実装できます。 リモートは必要ありません。
合計-最大8つの非常に費用対効果の高いリモートコントロールチャネルをすぐに使用でき、追加のアドレスラインを使用してチャネルを増やす可能性があります(トラックをカットしてプラスまたはグラウンドに引っ張るだけです(主なことは、アドレス空間が制御される機器と交差しないようにすることです)同じデータビット)。
明らかな欠点は、すべてのアウトレットの統一されたアドレス空間とコマンドシステム(同じボックスから)です。 つまり、隣人が同じものを購入した場合、もちろん誰かが住所を修正するために推測しない限り、あなたはお互いのアウトレットをクリックします。
一般に、使用できます。
追伸 説明された推測のための魔術は、根本的に異なるチップが見つかった場合、またはそのような明らかなアドレスとデータ行のない別のマイクロコントローラー(通常はPIC)に実装されたアルゴリズムの場合、機能しない可能性があります。 これらの場合、あなたは本当に頭を置かなければなりません。