スマートソケットREDMOND SkyPort 100S

これは、レドモンドスマートキャップに関する私の最初の記事の続きです。 この記事では、別のレドモンドデバイス-スマートソケットREDMOND SkyPort 100Sについて説明します。 このデバイスもnRF51822チップに基づいおり、彼らがここで言うように、神ご自身が試してみることを命じました。 そこで、このソケットを購入しました。 ケースはベースと同じくらい簡単に分解でき、プログラミングポートへのアクセスはさらに便利です。 しかし、先を見据えて、私はすべてが最初に思ったよりも少し複雑であると言います。 私はこのコンセントの回路を鳴らしませんでした、なぜなら これらのアウトレットのアップグレードと変更については、すでに多くのレビューがあります









レビューの1つで回路を見つけましたが、これは限られていました。 図から、nRF51822モジュールの4つのピンのみがスマートベースと同じ方法で関与していることが明らかです。 デバイスには、ピンp0.00に接続されたクロックボタン、2つのLED、赤がピンp0.01に接続され、緑がピンp0.02に接続されています。 10A電磁リレーはピンp0.03に接続されています。 そこで、Arduino IDEを起動し、インスタンスをスローし始めます。







#define BUTTON_PIN 0 #define RED_LED_PIN 1 #define GREEN_LED_PIN 2 #define RELAY_PIN 3 boolean iswitch = 0; boolean flag_button = 0; static uint32_t previousMillis; //#define MY_DEBUG #define MY_DISABLED_SERIAL #define MY_RADIO_NRF5_ESB //#define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_LOW) #define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_MAX) //#define MY_PASSIVE_NODE #define MY_NODE_ID 201 #define MY_PARENT_NODE_ID 0 #define MY_PARENT_NODE_IS_STATIC #define MY_TRANSPORT_UPLINK_CHECK_DISABLED #define RELAY_ID 1 #include <MySensors.h> MyMessage lMsg(RELAY_ID, V_STATUS); void preHwInit() { pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(RED_LED_PIN, OUTPUT); pinMode(GREEN_LED_PIN, OUTPUT); pinMode(RELAY_PIN, OUTPUT); } void before() { digitalWrite(RED_LED_PIN, HIGH); } void presentation() { sendSketchInfo("REDMOND R nRF51", "1.0"); wait(300); present(RELAY_ID, S_BINARY, "RELAY SWITCH"); wait(300); } void setup() { digitalWrite(RED_LED_PIN, LOW); wait(300); digitalWrite(GREEN_LED_PIN, HIGH); wait(200); digitalWrite(GREEN_LED_PIN, LOW); wait(200); digitalWrite(GREEN_LED_PIN, HIGH); wait(200); digitalWrite(GREEN_LED_PIN, LOW); wait(200); digitalWrite(GREEN_LED_PIN, HIGH); wait(200); digitalWrite(GREEN_LED_PIN, LOW); wait(500); send(lMsg.set(iswitch)); wait(500); } void loop() { if (digitalRead(BUTTON_PIN) == LOW && flag_button == 0) { flag_button = 1; previousMillis = millis(); wait(20); } if (digitalRead(BUTTON_PIN) == LOW && flag_button == 1) { //   ,   } if (digitalRead(BUTTON_PIN) == HIGH && flag_button == 1) { if ((millis() - previousMillis > 0) && (millis() - previousMillis <= 3000)) { if (iswitch == 0) { digitalWrite(GREEN_LED_PIN, HIGH); wait(10); } else if (iswitch == 1) { digitalWrite(GREEN_LED_PIN, LOW); wait(10); } flag_button = 0; iswitch = !iswitch; digitalWrite(RELAY_PIN, iswitch); wait(1500); send(lMsg.set(iswitch)); } if (millis() - previousMillis > 3000) { flag_button = 0; } } } void receive(const MyMessage & message) { if (message.type == V_STATUS) { if (message.sensor == RELAY_ID) { if (mGetCommand(message) == 1) { if (message.isAck()) { //AckG = 1; } else { wait(50); if (iswitch == 0) { digitalWrite(GREEN_LED_PIN, HIGH); }else if (iswitch == 1) { digitalWrite(GREEN_LED_PIN, LOW); } iswitch = !iswitch; wait(10); digitalWrite(RELAY_PIN, iswitch); wait(1500); send(lMsg.set(iswitch)); } } if (mGetCommand(message) == 2) { } } } }
      
      





ご覧のとおり、コードは小さくシンプルです。Mysensorsコミュニティのおかげです。







コードが完成したら、プログラマーをデバイスに接続し、再フラッシュしました。 プログラマーをコンセントに接続するのは非常に簡単です。私の場合、2つの通常の出力抵抗器を取り、ワイヤーカッターでワイヤーを削り、ワイヤーからフックを作り、曲げ、これらのフックをプログラマーワイヤーに挿入し、コンセントに「フック」しました。 。何が起こったかをテストする時です。 私はスマートソケットをソケットに挿入しました:)、 Majordomoを開き、すべてが正常であり、ソケットは既にMaysensorsネットワークに存在していました。 電源を入れる最初のコマンドを送信して...リブートします:) ...予期しないターン。 最初に思いついたのは、リレーがオンになったときの電力の低下でした。 彼はプログラムを変更し、消費電力を削減するために、リレーがオンになったときにLEDを含めないようにしました。 そして、それは動作し、リレーがオフになったときにソケットが再起動を停止しました。 そのため、モジュールに電力が不足していることが明らかになりました。 トランスレス電源の回路は、BLEモードでのみ動作するように設計されています。 Mysensorsは、2.4 GHz無線モジュールの異なるモード(RF24との互換性-ANT)も使用します。 したがって、約10mAの赤字があります。 私たちのチャットで問題を議論した後、Mysensorsはバラストコンデンサを追加する決定に落ち着きました。 起こったことは次のとおりです。







画像







画像







コンセントを組み立て直すと、彼は少し興奮してテストを始めました。 現在、開発は素晴らしいものでした。 プログラムロジックを書き直し、別の#define MY_NRF5_ESB_PA_LEVEL(NRF5_PA_MAX)を追加しました。つまり、ラジオを全容量にカットしました(そう、 Mysensors使えば非常に簡単です )... 間違いなし。 再起動しません。 これは勝利です:)







画像









しかし、このメーカーはnRF51822に他のデバイスも持っています-煙センサー、モーションセンサー、ガスセンサー、熱コンバーター、ファン、加湿器、クリーナー、ケトル...;)







ライブラリのインストール、ボードのサポート、頭痛のないアルデュインでのセンサーのネットワークの構築方法を30分で説明するコミュニティの電報チャット-https://t.me/mysensors_rus








All Articles