NooLite Wireless-Geräte und Smart Home (Teil 1). Arduino

nooLite

Hallo liebe Leser von Geektimes! Dieses Mal möchte ich Sie auf eine Reihe von Artikeln zur Integration von nooLite- Funkgeräten in Hausautomationssysteme aufmerksam machen. Dieser Zyklus ähnelt der bereits veröffentlichten Artikelserie ( eins , zwei , drei ) zur Integration von Laurent-Modulen in Smart Home-Systeme. Nur wird über das nooLite-System gesprochen, und nach dem Lesen dieses Zyklus haben Sie keine Fragen zur Verwaltung von nooLite-Geräten von Ihrem Smart aus zu Hause.

Über die Artikelserie


Der Zyklus ist in drei Teile gegliedert. Im ersten Teil lernen Sie die Funktionsprinzipien der drahtlosen nooLite-Geräte und deren Verwaltung in Ihren Arduino-Projekten kennen. Der zweite Teil beschreibt ausführlich die Integration des MT1132-Steuermoduls in den Arduino Mega Server und die Möglichkeiten zur Verwaltung eines Smart Home, die sich in diesem Zusammenhang eröffnen. Der dritte Artikel der Reihe widmet sich einem sehr interessanten Thema - dem Konzept der Erstellung von 100-in-1-Geräten auf der Basis des Arduino Mega Servers. Ein Beispiel für die Erstellung einer drahtlosen Lötstation auf AMS wird im Detail untersucht, buchstäblich aus dem Nichts - basierend auf nur einem drahtlosen nooLite-Dimer. Es wird auch einen vierten Teil geben, aus dem Sie lernen, wie man einen magischen Kristall erzeugt.

Die Lötstation, auf die im dritten Artikel eingegangen wird, ist übrigens bereits in der neuesten Arduino Mega Server- Baugruppe unter der Nummer 0.14 vorhanden. Und die neugierigsten Leser können nicht auf den dritten Artikel warten, sondern sofort das Distributionskit herunterladen und selbst herausfinden, wie das alles funktioniert.

Lötstation

Und das Tolle ist, dass es in AMS Hunderte solcher Geräte gleichzeitig geben kann. Zum Beispiel eine Lötstation, eine Wetterstation, eine Sicherheitseinheit, eine Gewächshaussteuerung usw. Und all dies kann gleichzeitig funktionieren oder durch Laden einer Webseite oder sogar einer ganzen Site, die einem bestimmten Gerät gewidmet ist, „gestartet“ werden.

Aber lasst uns nicht weiterkommen, lasst uns am Ende das Interessanteste verlassen, aber jetzt werden wir die notwendigen theoretischen Vorbereitungen treffen. Ich verspreche, dass alles auf einfachste und verständlichste Weise ausgedrückt wird. Also fangen wir an.

NooLite-Ausrüstung


NooLite-Geräte sind bereits ein bekanntes und beliebtes System, und im Internet gibt es zahlreiche Informationen dazu. Ich werde versuchen, die wichtigsten Punkte hier zusammenzufassen.

Das Konzept ist sehr einfach: Es gibt Aggregate zur Steuerung von Licht und verschiedenen Lasten sowie Bedienfelder, die Befehle an diese Aggregate senden. Und das alles natürlich ohne die Teilnahme von Kabelverbindungen. Eigentlich alles. Das Schöne am System ist, dass alle Komponenten durchdacht und gut verarbeitet sind und genau das tun, was es verspricht - sie steuern die angeschlossenen Geräte zuverlässig.

Es gibt auch drahtlose Sensoren, Gerätesteuerung von einem Smartphone und vieles mehr, aber in einem Artikel ist es unmöglich, alles abzudecken. Hier konzentrieren wir uns nur auf die Integration von nooLite in die beliebte DIY-Plattform - Arduino.

Von dem gesamten breiten Spektrum an nooLite-Geräten werden wir uns für das MT1132-Steuermodul interessieren, da es für den Anschluss an Arduino- und Single-Board-Computer wie den Raspberry Pi ausgelegt ist. Und es funktioniert auf einer einfachen seriellen Schnittstelle. Mit Blick auf die Zukunft werde ich sagen, dass mir das Modul wegen seiner Einfachheit, Vorhersehbarkeit und zuverlässigen Bedienung gefallen hat. Und ich konnte diese Eigenschaften nach einem Monat erfolglosen Kampfes mit dem Netzwerkmodul auf dem W5500-Chip schätzen, das nicht normal funktionieren wollte.

MT1132-Modul

Besonders gut hat mir gefallen, dass das Modul (abgesehen von der Stromversorgung) mit nur einem (!) Wire (RX) an das Arduino angeschlossen ist. Die zweite (TX) kann ganz weggelassen werden. Das Modul ist "Einweg", dh es ist nur zum Senden von Steuersignalen vorgesehen. Die Pläne der Firma Nootehnika beinhalten die Entwicklung und Veröffentlichung einer Zwei-Wege-Version des Moduls.

SU111-300

Das zweite Element, das wir von nooLite-Geräten benötigen, ist ein Leistungssteuergerät, z. B. SU111-300. Der Anschluss des Geräts ist elementar und in der Abbildung zu sehen. Zwei Drähte sind an ein 220-Volt-Netzwerk angeschlossen, die anderen beiden an die Last. Das einzige, worauf ich achten möchte, ist, dass die Module mit einem Jumper geliefert werden, der den Dimmmodus blockiert. Wenn Sie die Leistung anpassen möchten, müssen Sie diesen Jumper abschneiden (und daran denken, die resultierenden blanken Drähte zu isolieren).

PU311-2

Ich werde nicht auf die Fernbedienungen eingehen, da dies eine "manuelle" Steuerung ist und wir im Zusammenhang mit der Automatisierung mehr an der Automatik interessiert sind. Ich kann nur sagen, dass die Experimente mit der PU311-2-Fernbedienung durchgeführt wurden, die in Form eines Wandschalters hergestellt wurde und sich am besten zeigte, dh das Licht klar und fehlerfrei ein- und ausschaltete. Was in der Tat eine gute Ausrüstung ist und sich von einer schlechten unterscheidet - man merkt einfach nichts Gutes.

Arbeitskonzept. Binden und Aufheben der Verknüpfung


Bevor Sie Elektrogeräte mit dem nooLite-System ein- und ausschalten können, müssen Sie die Steuermodule mit den entsprechenden Netzteilen „verbinden“. Dies geschieht nach dem sogenannten Verfahren. "Bindungen" und "Lösen", ausführlich beschrieben in der nooLite-Dokumentation. Kurz gesagt, es kommt alles auf das Drücken von zwei Tasten an den verknüpften Blöcken an und bereitet keine Schwierigkeiten.

Wenn anstelle der Fernbedienung das Steuermodul MT1132 verwendet wird, erfolgt die Vorgehensweise etwas anders. Das heißt, da das Modul keine Tasten hat, müssen Sie programmgesteuert einen Steuerbefehl auf dem gewünschten Kanal generieren und senden und dann die Taste am Netzteil drücken, um das "Binden" oder "Lösen" zu bestätigen.

Kanäle sind „Steuerleitungen“ und es gibt 32 davon im MT1132-Modul, wie die letzten beiden Ziffern im Namen belegen. Dies bedeutet, dass Sie mit diesem Modul 32 separate Gerätegruppen verwalten können, was für eine Wohnung oder ein kleines Haus mehr als ausreichend ist. Wenn Sie ein großes Haus haben, können die Module zusammenarbeiten und auf eine beliebige Anzahl von Kanälen skaliert werden.

Protokollbeschreibung


Auf der Website des Unternehmens Nootehnika befindet sich ein wunderbares Dokument, das die Modulverbindung und das Steuerprotokoll umfassend und detailliert beschreibt. Ich werde den Artikel nicht mit unnötigen technischen Details überladen, jeder kann dieses Dokument lesen, ich werde nur die Hauptpunkte beschreiben.

Um das Modul zu steuern, müssen wir einen Steuerbefehl bilden, der aus 12 Bytes besteht. Die Grundsätze für die Bildung dieses Teams sind im obigen Dokument beschrieben. Und wie Sie unten sehen werden, sind alle diese Regeln bereits in den Steuerfunktionen programmiert, und wir müssen sie nur verwenden, um Befehle an das Modul auszugeben.

Testteams


nooLite verfügt über ein ziemlich entwickeltes Befehlssystem, aus dem wir die einfachsten und gebräuchlichsten auswählen und das System anhand ihres Beispiels veranschaulichen.

  • Schnappen
  • Löse die Bindung
  • Einbeziehung
  • Aus
  • Leistungseinstellung (Dimmen)

Wenn Sie wissen, wie die Basisteams arbeiten, können Sie problemlos andere verwenden.

Anschließen des MT1132-Moduls


Wie ich bereits sagte, ist das MT1132-Modul buchstäblich mit einem Draht verbunden (außer Strom). Das Modul kann sowohl mit einer Spannung von 5 Volt als auch mit einer Spannung von 3,3 Volt betrieben werden. Daher gab es keine Probleme beim Anschluss an das 5-Volt-Arduino Mega oder das 3,3-Volt-Arduino Due. Der einzige Punkt ist, dass mit reduzierter Leistung der Bereich des zuverlässigen Betriebs des Systems abnimmt. Dies muss berücksichtigt werden, wenn Sie das Modul mit einer Spannung von 3,3 Volt versorgen möchten.

Arduino

Das Modul verfügt über RX- und TX-Pins zum Empfangen und Senden von Signalen über die serielle Schnittstelle. Entscheidend für den Betrieb des Moduls ist der Anschluss von RX zum Empfang von Steuerbefehlen von der Steuerung. Dementsprechend ist der RX-Pin auf der Modulseite mit dem TX-Pin (18) auf der Arduino-Seite verbunden. Diese Pinbelegung gilt sowohl für Arduino Mega als auch für Arduino Due.

Software-Teil


Lassen Sie uns nun anhand von Skizzen auf Arduino herausfinden, wie Sie mit all dieser Wirtschaft umgehen können. Initialisieren Sie zunächst Serial1, an das wir das MT1132-Modul angeschlossen haben (dies erfolgt mit der Standardfrequenz 9600):

Serial1.begin(9600);

Nun der Code der Hauptsteuerfunktion:

void nooSendCommand(byte channel, byte command, byte data, byte format) {
  byte buf[12];

  for (byte i = 0; i < 12; i++) {
    buf[i] = 0;
  }

  buf[0] = 85;
  buf[1] = B01010000;
  buf[2] = command;
  buf[3] = format;
  buf[5] = channel;
  buf[6] = data;

  int checkSum = 0;
  for (byte i = 0; i < 10; i++) {
    checkSum += buf[i];
  }

  buf[10] = lowByte(checkSum);
  buf[11] = 170;

  for (byte i = 0; i < (12); i++) {
    Serial1.write(buf[i]);
  }
}

Im Prinzip müssen wir nicht einmal wissen, wie es funktioniert, wir können es im "Black Box" -Modus oder in einer Art API verwenden, wobei eine bestimmte Schnittstelle hervorsteht. Wir müssen nur wissen, wie man diese Schnittstelle benutzt.

Wie Sie sehen können, gibt es nur vier Parameter - Kanal, Befehl, Daten und Format. Sie können das Prinzip lesen, nach dem Anforderungen an diese API im oben genannten Dokument generiert werden können. Wir werden unsere Aufgabe jedoch noch weiter vereinfachen und diese Schnittstelle in einfache nooLite-Gerätesteuerungsbefehle einbinden.

void nooBind  (byte ch)         {nooSendCommand(ch, 15, 0, 0);}
void nooUnbind(byte ch)         {nooSendCommand(ch,  9, 0, 0);}
void nooOn    (byte ch)         {nooSendCommand(ch,  2, 0, 0);}
void nooOff   (byte ch)         {nooSendCommand(ch,  0, 0, 0);}
void nooValue (byte ch, byte v) {nooSendCommand(ch,  6, v, 1);}

Relativ komplexes Team ist nur das letzte, dort wird neben dem Kanal auch der Leistungspegel eingestellt. Es gibt auch Teams in der Skizze, auf die wir jetzt nicht näher eingehen werden, die sich aber genauso leicht bilden lassen.

Eigentlich ... das war's! Nirgendwo ist es einfacher. Im Code sehen die Steuerbefehle folgendermaßen aus:

nooBind(ch);
nooUnbind(ch);
nooOn(ch);
nooOff(ch);
nooValue(ch, v);

Lassen Sie uns nun das Üben der Verwaltung von nooLite-Leistungsmodulen üben. Also binden wir den Powerblock auf den Nullkanal:

nooBind(0);

Die LED am Netzteil beginnt zu blinken. Drücken Sie die Taste am Block - die LED hört auf zu blinken - der Netzblock ist angebracht. Anstelle des Nullkanals können Sie auch einen anderen verwenden. Und Sie können die Kanalnummer im Skizzencode ganz einfach nach Ihren Wünschen generieren.

Schalten Sie die Lampe ein (wenn wir die Lampe auf den Nullkanal gebunden haben, müssen die Befehle dafür auf diesem Kanal gesendet werden):

nooOn(0);

Stellen Sie die Leistung (Helligkeit der Lampe) ein:

nooValue(0, 100);

Hier müssen Sie ein wenig über die Regeln für die Bildung eines Teams sagen, das die Leistungsstufe festlegt. Der Leistungswert ändert sich nicht von 0 auf 255, wie man meinen könnte, sondern von 35 auf 155. Wenn der Wert mehr als 155 beträgt, ist die Leistung maximal. Wenn sie 0 ist, entspricht dies einem Befehl zum Herunterfahren.

Hier (nur für den Fall) eine Formel, die "Standard" -Werte von 0 bis 100 in ein Format übersetzt, das vom nooLite-Modul verstanden wird:

v = x * 1.2 + 34;

Mit dieser Formel können Sie die Helligkeit der Lampe auf den üblichen Prozentsatz der Leistung einstellen. Und wenn Sie die Leistung nichtlinear anpassen müssen, können Sie natürlich eine Variable v nach einem beliebigen Gesetz erstellen oder einfach nur feste Werte auswählen. Dies wird im dritten Teil des Zyklus besprochen, wenn wir die Heiztemperatur der Lötstation einstellen.

Schalten Sie das Gerät aus:

nooOff(0);

Löse:

nooUnbind(0);

Die LED am Netzteil beginnt zu blinken. Wir bestätigen die Entkopplung durch Drücken der Taste am Netzteil. Das war's, jetzt reagiert das Netzteil nicht mehr auf unsere Befehle und wir können es auf jedem der 32 Kanäle des nooLite MT1132-Moduls erneut „einrasten“.

Hier ist die vollständige Skizze.

Vollständiger Skizzencode
byte const PIN_TX = 18; // TX PIN (to RX noolite)
byte const PIN_RX = 19; // RX PIN (to TX noolite)

void nooSendCommand(byte channel, byte command, byte data, byte format) {
byte buf[12];

for (byte i = 0; i < 12; i++) {
buf[i] = 0;
}

buf[0] = 85;
buf[1] = B01010000;
buf[2] = command;
buf[3] = format;
buf[5] = channel;
buf[6] = data;

int checkSum = 0;
for (byte i = 0; i < 10; i++) {
checkSum += buf[i];
}

buf[10] = lowByte(checkSum);
buf[11] = 170;

for (byte i = 0; i < (12); i++) {
Serial1.write(buf[i]);
}
}

void nooBind (byte ch) {nooSendCommand(ch, 15, 0, 0);}
void nooUnbind (byte ch) {nooSendCommand(ch, 9, 0, 0);}

void nooOn (byte ch) {nooSendCommand(ch, 2, 0, 0);}
void nooOff (byte ch) {nooSendCommand(ch, 0, 0, 0);}
void nooTrigger(byte ch) {nooSendCommand(ch, 4, 0, 0);}
void nooCancel (byte ch) {nooSendCommand(ch, 10, 0, 0);}

void nooUp (byte ch) {nooSendCommand(ch, 3, 0, 0);}
void nooDown (byte ch) {nooSendCommand(ch, 1, 0, 0);}
void nooRevers (byte ch) {nooSendCommand(ch, 5, 0, 0);}

void nooValue (byte ch, byte v) {nooSendCommand(ch, 6, v, 1);}

void setup() {
Serial1.begin(9600);

/*
loop(), */

//nooBind(0);

//nooOn(0);
//nooOff(0);
//nooValue(0, 100);

//nooUnbind(0);
}

void loop(){

}

Zwischensumme


Wie Sie sehen, ist die Steuerung von nooLite- Leistungsmodulen mit Arduino nicht kompliziert, im Gegenteil, die Steuerung ist phänomenal einfach: Das Modul ist mit einem Draht verbunden, und die Befehle sind fast eine natürliche menschliche Sprache - "Kanal 0 einschalten", "Kanal 1 ausschalten", "Die Leistung von 50% auf Kanal 3 einzustellen" ist wirklich nirgendwo einfacher.

Bonus für diejenigen, die bis zum Ende gelesen haben


Erst neulich wurde eine neue Version von Arduino Mega Server mit der Nummer 0.14 veröffentlicht, in der alle Kinderkrankheiten der Technologie überwunden wurden und die schnell und stabil funktioniert. Dieselbe Version enthält den integrierten nooLite-Instrumentensteuerungskern. Wie alles funktioniert, erfahren Sie im nächsten Artikel in der Reihe „nooLite Wireless Equipment and Smart Home“ (Teil 2). Arduino Mega Server. "

Der zweite , dritte und vierte Teil des Zyklus.

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


All Articles