リモートコントロールなしでAB400Sワイヤレススイッチソケットを制御します

最近、433 MHzの無線チャネルを介して3つのAB400Sワイヤレススイッチソケットを制御しました。 リモコンはそれらから失われ、所有者はそれらを必要としませんでした。 いつものように、検査はコンポーネントの分析から始まりました。

実際、ここはこのアウトレットの内部の外観です。 青いワイヤと1.2kΩの抵抗は私がはんだ付けしましたが、後で詳しく説明します。



画像



コンデンサ電源と24Vリレーが上からすぐに見えます。オペアンプのフィルターを備えた信号受信機、および受信信号HX2272-L2のデコーダーが下部にあります。 彼の右には、コンセントの「アドレス」を設定するスイッチ(DIPスイッチ)の脚があります。



ATmega8マイクロコントローラーと接続し、リレーをオンにしようと試みました。 特にボードが鼻の前のテーブルの上に横たわる場合、私はコンデンサ電源のファンではありません。 私は自分のマイクロコントローラーが動作する電源に5Vの電源を使用し、妄想ボード(プラグインコンタクトのあるブレッドボード)に挿入しました。



別のデバイスから433MHzの送信機がありました。 データをデコーダに送信するプログラムをテストする際に無線チャネルの動作不能を解消するために、マイクロコントローラをデコーダに直接接続することにしました。 端子(VCC(18)、GND(9)およびDIN(14))にワイヤをはんだ付けします。 私はそれらを特にマイクロ回路の足にはんだ付けするのではなく、都合の良いところでこれらの線に単にはんだ付けしました。



画像



チップ説明から、デコーダに送信される情報は、12ビットで構成される1ワード(ワード)とそれに続く同期ビットで構成されていることがわかります。 特にデコーダーの場合、次のようになります。



画像



ビットの値は入力A0〜A9の電圧レベルによって設定され、ビットD0〜D1は同じ名前の出力に対応します。 受信アドレスビットがスイッチに設定された値と一致する場合、出力D0およびD1は受信ビットD0およびD1の値を取ります。 ビットは0、1、またはf(浮動)です。 「フローティング」入力の場合、接続されないままです。 回路基板では、0と「フローティング」を使用できます。 プルアップ抵抗がないため、ユニットを設定する方法はありません。 プログラムでは、3つのオプションすべてを使用したため、パフォーマンスを確認するために1.2kΩの抵抗をA0にはんだ付けしました。



ビットは次のようにエンコードされます。



画像



各ビットは2つのパルスで構成されます。 1と0の場合、最初と2番目のパルスは一致しますが、最初のサイクルの「フローティング」は2番目の「1」のシーケンス「0」を持ちます。 αはデコーダークロックの周期です。 その値は、OSC1およびOSC2のレッグに接続された抵抗器によって設定されます。 このボードのバージョンでは、値は1MΩです。



グラフに従って、デコーダーが動作する頻度を決定できます。 周波数スケールは対数で、10 kHzオフセットです。 図から、クロックジェネレータの周波数は35 kHzにほぼ等しいことがわかります。



画像



オシロスコープを確認してください。 これを行うには、OSC2脚にオシロスコーププローブを配置します。



画像



より正確な値を取ります。 デコーダの場合、αは1 / 34.26 kHz = 29.19μsです。 説明から、デコーダはDINレッグで受信した信号を生成するデバイスの2.5〜8倍の周波数で動作することがわかります。 したがって、コーディングの場合、送信機の信号αは、たとえば29.19μs/ 4 = 7.3μsに等しくなります。



私はプログラマではないことをすぐに予約します。 それを改善する方法について提案があれば、私はあなたのアドバイスを喜んでいるでしょう。



送信用のデータはベクターに保存されます。 ビットA0 ... A9は、スイッチに設定された値に対応しています。 (操作説明書からの標準的な組み合わせ)リレーは、トランジスタを介してデコーダーのD0出力に接続されます。 デコーダー入力が接続されているポートは出力用に構成されており、初期化中にすぐにオンになりますマイクロコントローラーをフラッシュする場合、リレーはベクターのデータに従ってすぐにオンになります。



short sendVector[12] = {0,2,0,2,0,0,2,2,2,2,0,1}; // A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 D1 D0 // BIT0 =0; BIT1 =1; BITf =2
      
      





同じデータの送信サイクルが3回繰り返されます。 ボタンを押すと、最後のビットが反転し(オン/オフ機能)、送信回数がリセットされます(transmitNum)。 マイクロコントローラーに接続されたボタンが押された場合、7.3μsごとに関数(rf_function)を呼び出すタイマーを使用しました。



rf_function
 void rf_function(void) { static short alphaCounter = 0; //    static short bitCounter = 0; //    static short cycle = 0; //    if (bitCounter < 12) //  12  { alphaCounter++; if (cycle == 0) { if ((alphaCounter == 4) && (sendVector[bitCounter] != 1)) // BIT0  BITf  { togglePin('C', _PIN0); //  } if ( (alphaCounter == 12) && (sendVector[bitCounter] == 1)) { togglePin('C', _PIN0); } } else { if ((alphaCounter == 4) && (sendVector[bitCounter] == 0)) // BIT1  BITf  { togglePin('C', _PIN0); //  } if ( (alphaCounter == 12) && (sendVector[bitCounter] != 0)) { togglePin('C', _PIN0); } } if (alphaCounter == 16) //    { togglePin('C', _PIN0); cycle++; alphaCounter = 0; //     } if (cycle == 2) //        2  { cycle = 0; bitCounter++; } } else //   { alphaCounter++; if (alphaCounter == 4) { togglePin('C', _PIN0); } if (alphaCounter == 128) { togglePin('C', _PIN0); bitCounter = 0; //      alphaCounter = 0; //    transmitNum++; //      } } }
      
      







関数が呼び出されるたびに、カウンターαは1ずつ増加します。 渡されたαの数が特定のビットの形成に必要なティック数に対応する場合、ピンの値は反転します。 16α(1サイクルの時間)後、カウンターαはゼロにリセットされ、サイクルカウンターは1ずつ増加します。 操作が再び繰り返されます。 2サイクル後、ベクトルから新しいビットが取得され、12ビットが送信されるまで操作が繰り返されます。 次に、クロックパルスが送信されます。 他の時間的特性があります。



画像



分解されたソケットを使用したテスト段階では、プログラムの操作性は、点灯しているLED(ソケットをオンにするインジケータ)によって判断できます。 5Vの電力が供給され、リレーの定格は24Vです。



トランスミッター(433 MHz)のテストと接続に成功すると、ソケットはすぐに無線で制御され始めました。



次の目標は、マイクロコントローラーをスマートフォンに接続し、3つのコンセントを制御することです。 しかし、それは別の話です。



All Articles