Smart Sockel REDMOND SkyPort 100S

Dies ist eine Fortsetzung meines ersten Artikels über die Redmond Smart Cap . In diesem Artikel werden wir über ein anderes Redmond-Gerät sprechen - Smart Socket REDMOND SkyPort 100S. Dieses Gerät basiert ebenfalls auf dem nRF51822-Chip, und wie hier gesagt wird, hat Gott selbst einen Versuch angeordnet. Also wurde diese Steckdose gekauft. Das Gehäuse lässt sich so einfach zerlegen wie die Basis, der Zugriff auf den Programmieranschluss ist noch bequemer. Aber mit Blick auf die Zukunft werde ich sagen, dass alles etwas komplizierter ist, als es mir zunächst schien. Ich habe den Stromkreis dieser Steckdose nicht angerufen, weil Es gibt bereits eine Reihe von Überprüfungen zum Aktualisieren und Ändern dieser Verkaufsstellen.



In einer der Bewertungen fand ich eine Schaltung, und diese war begrenzt. Aus dem Diagramm geht hervor, dass nur 4 Pins am nRF51822-Modul auf die gleiche Weise wie an der Smart Base beteiligt sind. Das Gerät verfügt über eine Uhrentaste an Pin p0.00, zwei LEDs, rot an Pin p0.01, grün an Pin p0.02. Ein elektromagnetisches Relais an 10A ist an Pin p0.03 angeschlossen. Starten Sie also die Arduino IDE und starten Sie eine Instanz:


#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) { } } } } 

Wie Sie sehen können, ist der Code klein und ziemlich einfach, danke an die Mysensors-Community.


Als der Code fertig war, habe ich den Programmierer an das Gerät angeschlossen und es erneut geflasht. Das Anschließen des Programmiergeräts an die Steckdose ist sehr einfach. In meinem Fall habe ich zwei gewöhnliche Ausgangswiderstände genommen, das Kabel mit Drahtschneidern abgebissen, Haken aus dem Kabel gezogen, es gebogen, diese Haken in die Kabel des Programmiergeräts eingeführt und an die Steckdose „angeschlossen“. Das Video zeigt, wie ich es mache Es ist Zeit zu testen, was passiert ist. Ich habe einen Smart Socket in einen Socket gesteckt :), habe den Majordomo geöffnet, alles ist in Ordnung, der Socket war bereits im Maysensors Netzwerk vorhanden. Ich sende den ersten Befehl zum Einschalten und ... Neustart :) ... unerwartetes Einschalten. Das erste, was mir in den Sinn kam, war ein Stromausfall, während das Relais eingeschaltet war. Er änderte das Programm, entfernte die LED beim Einschalten des Relais, um den Verbrauch zu senken. Und es hat funktioniert, der Sockel wurde nicht mehr neu gestartet, als das Relais ausgeschaltet wurde. ... aber nicht lange :). Und so wurde klar, dass dem Modul die Stromversorgung fehlte. Die Schaltung des transformatorlosen Netzteils ist so ausgelegt, dass es nur ausreicht, um im BLE-Modus zu arbeiten. Mysensors verwendet auch einen anderen Modus des 2,4-GHz-Funkmoduls (Kompatibilität mit RF24-ANT). Wir haben also ein Defizit von ca. 10mA. Nachdem Mysensors das Problem in unserem Chat besprochen hatte, beschlossen sie, einen Ballastkondensator hinzuzufügen, da dies eine sehr einfache Manipulation ist, die für die Wiederholung erforderlich ist. Folgendes ist passiert:


Bild


Bild


Er baute die Steckdose wieder zusammen und begann ein wenig aufgeregt zu testen. Die Entwicklung war jetzt hervorragend. Ich habe die Logik des Programms zurückgeschrieben und ein weiteres #define MY_NRF5_ESB_PA_LEVEL (NRF5_PA_MAX) hinzugefügt, dh ich habe das Radio mit voller Leistung "abgeschnitten" (ja, es ist sehr einfach mit Mysensors ). ... Es funktioniert. Keine Fehler. Keine Neustarts. Das ist ein Sieg :)


Bild



Dieser Hersteller hat aber auch andere Geräte am nRF51822 - einen Rauchsensor, einen Bewegungssensor, einen Gassensor, Wärmekonverter, Lüfter, Luftbefeuchter, Reiniger, Wasserkocher ...;)


Ein Telegramm-Chat unserer Community, in dem sie immer helfen, Bibliotheken zu installieren, Boards zu unterstützen und zu erklären, wie in einer halben Stunde ein Netzwerk von Sensoren auf Arduinen ohne Kopfschmerzen aufgebaut werden kann - https://t.me/mysensors_rus

Source: https://habr.com/ru/post/de450860/


All Articles