- Voraussetzungen
- Erforderliche Komponenten
- Installieren von Node-RED auf Raspberry Pi
- Starten von Node-RED in Raspberry Pi
- Grundlegendes zur Node-RED-Schnittstelle
- Schema
- Erstellen eines Flusses in Node-RED
- Hinzufügen eines Druckknopfs / Schalters in der Node-RED-Schnittstelle mit Raspberry Pi
Überhaupt gefragt, ob es eine Möglichkeit gibt, einfache Prototypen von IoT-Lösungen zu erstellen, ohne Tage damit verbringen zu müssen, Codes zu schreiben oder praktische fortgeschrittene Projekte ohne Codierung zu erstellen. Ja, dies ist mit der Node-Red-Plattform möglich. Node-RED wurde von IBM entwickelt und ist ein Open-Source-Programmiertool, mit dem Hardwaregeräte, APIs und Onlinedienste auf neue und interessante Weise miteinander verbunden werden können. Es bietet einen browserbasierten Editor, der es einfach macht, " Flows" mithilfe der Vielzahl von Knoten in der Palette miteinander zu verbinden, die mit einem einzigen Klick zur Laufzeit bereitgestellt werden können.
Node-RED ist ein leistungsstarkes Tool zum Erstellen von Internet of Things (IoT) -Anwendungen mit dem Ziel, die Programmierkomponente zu vereinfachen.
Es verwendet eine visuelle Programmierung, mit der Sie Codeblöcke, sogenannte Knoten, miteinander verbinden können, um eine Aufgabe auszuführen. Im heutigen Tutorial werden wir untersuchen, wie Sie mit Node-RED einfache Projekte auf dem Himbeer-Pi bereitstellen können. Das Tutorial zu Himbeer-Pi-Knoten wird behandelt.
- Installation von Node-RED auf dem Raspberry Pi.
- Einführung in die Node-RED-Benutzeroberfläche
- So richten Sie Node-RED-Flows ein
- So steuern Sie Raspberry Pi GPIO-Pins mit Node-RED
- Verwendung von Node-RED-Eingängen, -Ausgängen und If-else-ähnlichen Entscheidungen mithilfe von Schaltern
Voraussetzungen
Dieses Tutorial basiert auf dem Raspbian Stretch OS und ich gehe davon aus, dass Sie mit dem Einrichten des Raspberry Pi vertraut sind und wissen, wie Sie mit einer Terminalsoftware wie Putty SSH in den Pi einbauen. Wenn Sie Probleme damit haben, finden Sie auf dieser Website unzählige Raspberry Pi-Tutorials, die Ihnen helfen können.
Um das Tutorial einfach abzuschließen, empfehle ich Ihnen, einen an den Himbeer-Pi angeschlossenen Monitor zu verwenden oder die VNC Viewer-Software zu verwenden. Wenn Sie keinen Monitor haben und neu mit Pi beginnen, können Sie dieses Headless Raspberry Pi-Setup lesen, um mit diesem Tutorial fortzufahren. Während Node-Red über einen Webbrowser ausgeführt wird und auf Ihrem PC, mit dem der Pi verbunden ist, über die IP-Adresse des Pi zugegriffen werden kann, bietet Ihnen die VNC / Monitor-Erfahrung meiner Meinung nach einen besseren Überblick.
Als Demo, um zu zeigen, wie Node-Red funktioniert, werden wir Node-RED verwenden, um den Raspberry Pi so zu programmieren, dass eine an den GPIO angeschlossene LED gesteuert wird, und später das Programm so zu ändern, dass die LED über einen taktilen Druckknopf gesteuert werden kann, der an die Pi angeschlossen ist GPIO.
Erforderliche Komponenten
Die folgenden Komponenten sind erforderlich, um dieses Projekt zu erstellen.
- Raspberry Pi 3 mit SD-Karte vorinstalliert mit Raspbian Stretch Preloaded
- 100 Ohm Widerstand (1)
- LED (1)
- Steckbrett (1)
- Überbrückungsdrähte von Stecker zu Buchse
- Taktiler Druckknopf (1)
Installieren von Node-RED auf Raspberry Pi
Während Node-Red auf dem Raspbian Stretch-Betriebssystem vorinstalliert ist, müssen wir es aktualisieren, bevor wir einige der neuesten Funktionen nutzen können. Aktualisieren des Node-Red- Testaments
- Aktualisieren Sie den vorhandenen Benutzer auf LTS 8.x oder 10.x Node.js und das neueste Node-RED
- Migrieren Sie vorhandene global installierte Knoten in den Bereich ~ /.node-red des Benutzers, damit sie über den Palettenmanager verwaltet werden können. Es werden KEINE vom Benutzer installierten vorhandenen Knoten aktualisiert. Dies muss vom Benutzer manuell durchgeführt werden (siehe unten).
- Optional können Sie die zusätzlichen Knoten (neu) installieren, die auf einem vollständigen Raspbian Pi-Image vorinstalliert sind.
Das Aktualisieren des Node-Red ähnelt jedoch dem Installieren eines neuen. In diesem Lernprogramm wird es daher wie eine Neuinstallation behandelt, damit Benutzer anderer Betriebssystemversionen folgen können.
Führen Sie die folgenden Schritte aus, um Node-RED auf Ihrem Raspberry Pi zu installieren / zu aktualisieren.
Wir beginnen mit dem Upgrade und der Aktualisierung des Pi, um sicherzustellen, dass alles auf dem neuesten Stand ist, und um Kompatibilitätsprobleme zu vermeiden. Öffnen Sie dazu ein Terminal oder über ssh und führen Sie es aus.
Sudo apt-get Update
gefolgt von
sudo apt-get upgrade
Mit diesem getan, das Bash - Skript unten läuft auf dem Terminal;
bash <(curl -sL
Das Bash-Skript führt die folgenden Aktionen aus
- Fragen Sie, ob Sie die zusätzlichen Pi-Knoten (neu) installieren möchten
- Speichern Sie eine Liste aller global installierten Node-Red- Nodes in / usr / lib / node_modules
- apt-get entfernt vorhandenes Node-Red entfernen
- Entfernen Sie alle knotenroten Binärdateien aus / usr / bin und / usr / local / bin
- Entfernen Sie alle knotenroten Module aus / usr / lib / node_modules und / usr / local / lib / node_modules
- Ermitteln Sie, ob Node.js aus dem Node.js-Paket oder Debian installiert wurde
- Wenn nicht Version 8 oder neuer - entfernen Sie sie entsprechend und installieren Sie die neueste Version 8 oder Version 10 LTS (ohne apt).
- Bereinigen Sie den npm-Cache und den.node-gyp-Cache, um frühere Versionen des Codes zu entfernen
- Installieren Sie die neueste Version von Node-RED
- Installieren Sie unter dem Benutzerkonto alle Knoten neu, die zuvor global installiert wurden
- Installieren Sie die zusätzlichen Pi-Knoten bei Bedarf neu
- Erstellen Sie alle Knoten neu, um alle Binärdateien neu zu kompilieren, damit sie mit der neuesten Node.js-Version übereinstimmen
- Fügen Sie / usr / bin die Befehle node-red-start, node-red-stop und node-red-log hinzu
- Menüverknüpfung und Symbol hinzufügen
- Fügen Sie ein Systemskript hinzu und legen Sie den Benutzer fest
- Wenn auf einem Pi eine CPU-Temperatur hinzugefügt wird -> IoT-Beispiel
Das obige Bash-Skript führt viele Befehle als sudo aus und löscht vorhandene Node.js und die Node-RED-Kernverzeichnisse. Sie können den Inhalt des Skripts auf dieser GitHub-Seite überprüfen, bevor Sie es ausführen, um sicherzustellen, dass es kein Projekt beeinflusst, das Sie bereits auf dem Pi haben.
Nach Abschluss der Installation sollte nun das Node-Red-Symbol unter der Liste der Programmier-Apps in Ihrem Menü angezeigt werden.
Starten von Node-RED in Raspberry Pi
Node-Red kann über den Menübereich vom Desktop Ihres Himbeer-Pi, über das Terminal oder über ssh gestartet werden.
Um auf dem Desktop des Himbeer-Pi zu starten, klicken Sie auf das Himbeer-Symbol, bewegen Sie die Maus über Programmieren und klicken Sie auf Knoten-ROT (Menü> Programmierung> NodeRed), um es zu starten.
Es kann auch von ssh oder Terminal durch Ausführen gestartet werden.
Knoten-Rot-Start
Sie sollten ein Fenster wie das folgende sehen, das den roten Start des Knotens auf dem Desktop zeigt.
Sobald Sie dies sehen, gehen Sie zu Menü-> Internet und starten Sie den Chrom-Webbrowser. Während Ihr Raspberry Pi kein Internet benötigt, um Node-Red auszuführen, verwendet er einen Browser als Schnittstelle.
Geben Sie bei gestartetem Chrom localhost: 1880 in die Adressleiste ein, gefolgt von der Eingabetaste. 1880 ist der Port auf dem Himbeer-Pi, auf dem Node-Red für die Kommunikation voreingestellt ist. Dies sollte die Node-Red-Oberfläche anzeigen , wie in der Abbildung unten gezeigt.
Grundlegendes zur Node-RED-Schnittstelle
Die Node-Red-Oberfläche besteht aus dem Flow-Panel, der Knotenpalette, der Debug-Konsole und der Info-Konsole, wie im obigen Bild hervorgehoben.
Im Flow-Panel werden die Knoten zu einem Programm zusammengefügt, das in Node-Red als Flow bezeichnet wird, während die Node-Palette Objekte enthält, die für Hardware-, Protokoll- und Softwarefunktionen von Geräten repräsentativ sind. Es enthält Protokolle wie MQTT für IoT sowie GPIO-Ausgabe- und Eingabemodi für Boards wie das Himbeer-Pi. Die Infokonsole bietet Informationen zu markierten / ausgewählten Objekten während der Debug-Konsolefunktioniert genau wie der Arduino Serial Monitor und kann Feedback geben, während der Flow läuft. Mit der Schaltfläche "Bereitstellen" wird der Flow auf die Zielhardware hochgeladen. Die Menüschaltfläche enthält verschiedene Upload-Typen, mit denen Sie Ihr Projekt optimal nutzen können. Mit Node-Red können wir nun mit dem Erstellen des Demo-Projekts fortfahren.
Schema
Wie in der Einführung erwähnt, besteht unser heutiges Demo-Projekt darin, den GPIO des Raspberry Pi mithilfe eines Node-RED-Flows zu steuern. Um die Variation des GPIO-Status anzuzeigen, schließen wir eine LED an das GPIO an, sodass beim Einschalten dieses bestimmten GPIO-Pins die LED aufleuchtet und umgekehrt.
Schließen Sie die LED wie in den folgenden Schaltplänen gezeigt an den Raspberry PI an.
Das gleiche baue ich auch auf meiner Hardware mit einem Steckbrett, einer LED, einem Widerstand und einigen Verbindungskabeln. Sobald die Verbindungen hergestellt sind, sieht mein Hardware-Setup ungefähr so aus.
Dieses Projekt kann einfach in ein Hausautomationsprojekt umgewandelt werden, indem Sie einfach die LED durch ein Relais und ein beliebiges Wechselstromgerät ersetzen. Erfahren Sie, wie dies in verschiedenen Hausautomationsprojekten durchgeführt wird.
Erstellen eines Flusses in Node-RED
Wenn die LED angeschlossen ist, können wir den Fluss entwickeln. Programme in NodeRed werden als Flows bezeichnet, genau wie die Arduino IDE sie als Skizzen bezeichnet. Flows werden mithilfe einer Kombination von Knoten erstellt. Sie können mehrere Flows erstellen, die alle gleichzeitig ausgeführt werden können. In diesem Lernprogramm erstellen wir jedoch einen einzelnen Flow, um die LED ein- und auszuschalten.
Scrollen Sie zunächst zum Ende der Knotenpalette. Gegen Ende wird der Abschnitt mit den Himbeer-Pi-Knoten mit zwei Knoten mit der Bezeichnung rpigpio angezeigt. Diese Knoten werden für die Kommunikation mit dem GPIO des Himbeer-Pi verwendet. Einer der Knoten dient zur Eingabe, während der andere zur Ausgabe dient, die sich durch die Position des Himbeer-Pi-Logos unterscheidet. Für den Eingabeknoten steht das Logo vor dem Text, während für den Ausgabeknoten das Logo nach dem Text steht, wie in der Abbildung unten gezeigt.
In diesem Tutorial verwenden wir den Ausgabeknoten und ziehen ihn in den Flow-Bereich der Schnittstelle. Dieser Schritt ähnelt dem Deklarieren eines bestimmten Pins Ihres Arduino als Ausgabe mit dem Befehl pinMode () . Doppelklicken Sie auf den Ausgabeknoten. Ein Popup-Fenster wird wie unten gezeigt geöffnet, in dem Sie die Eigenschaften des Knotens bearbeiten können.
Wählen Sie im Abschnitt Pin-Eigenschaften die Option GPIO17 (Pin 11) aus. Setzen Sie dann die type-Eigenschaft auf " Digital Output " und aktivieren Sie " Pin-Status initialisieren?" Aktivieren Sie das Kontrollkästchen, und lassen Sie die Option „ Anfangsstufe des Pins “ auf niedrig (0). Geben Sie dem Knoten einen beliebigen Namen und klicken Sie auf die Schaltfläche Fertig.
Der Name des Knotens sollte sich automatisch in den Namen ändern, den Sie unter der Eigenschafteneinstellung eingegeben haben. Zum Beispiel habe ich es als LED benannt und daher wird der Knotenname auch als LED geändert, wie unten gezeigt.
Um die LED ein- / auszuschalten, müssen wir einen Eingang verwenden, um die Aktion zu steuern. Wir könnten zwar einen Druckknopf verwenden, aber ich möchte diesen verwenden, um die Funktion in Node-RED einzuführen, die das Einfügen von Nachrichten in Flows ermöglicht. Diese Funktion wird als Injektionsknoten bezeichnet. Wir werden zwei Injektionsknoten verwenden. Eine besteht darin, die LED einzuschalten, während die andere darin besteht, sie auszuschalten.
Gehen Sie zur Knotenpalette und ziehen Sie den Injektionsknoten in den Flow. Es ist der erste Knoten in der Palette mit einem Pfeil. Der Injektionsknoten ist im Bild unten hervorgehoben.
Doppelklicken Sie darauf, um die Eigenschaften zu bearbeiten. Ändern Sie den Datentyp in Zeichenfolge, indem Sie auf die Dropdown-Liste vor der Nutzlast klicken und 1 in das Feld Nutzlast eingeben. Der Wert in der Nutzlastbox ist der Wert, der in den Fluss eingefügt wird, wenn der Knoten gedrückt wird. Setzen Sie den Namen des Knotens auf "EIN". Drücken Sie zum Speichern die Taste "Fertig".
Wiederholen Sie die obigen Schritte für den zweiten Knoten, indem Sie den Nutzlastwert auf "0" und seinen Namen wie unten gezeigt auf "Aus" setzen.
Unter der Eigenschaftenfunktion kann das Dropdown-Menü " Wiederholen " verwendet werden, um die Injektion zu automatisieren, sodass die Tasten in Intervallen gedrückt werden. Dies kann verwendet werden, um den Blinkeffekt zu erzeugen. Verbinden Sie die Knoten wie unten gezeigt, indem Sie den grauen Punkt auf einem der Knoten zum anderen ziehen, um den Fluss zu erstellen.
Damit haben wir nun unseren ersten Node-Red Flow abgeschlossen.
Der nächste Schritt besteht darin, den Flow auf dem Himbeer-Pi bereitzustellen. Klicken Sie auf die rote Schaltfläche zum Bereitstellen. Oben auf dem Bildschirm sollte "erfolgreich bereitgestellt" angezeigt werden, wie unten gezeigt.
Klicken Sie auf die graue Schaltfläche hinter den Injektionsknoten, um jeden der Knoten zu aktivieren.
Wenn Sie auf den Einspritzknoten „Ein“ klicken, sollte „Einspritzen“ erfolgreich angezeigt werden und die LED leuchtet. Die LED sollte erlöschen, wenn auf den Injektionsknoten „Aus“ geklickt wird.
Das ist es. Die vollständige Funktionsweise dieses Setups finden Sie in dem Video, das unten auf dieser Seite verlinkt ist.
Hinzufügen eines Druckknopfs / Schalters in der Node-RED-Schnittstelle mit Raspberry Pi
Um zu erklären, wie Sie ein Eingabeelement zu Ihrem Flow verbinden / hinzufügen, werden wir den obigen Flow weiter ausführen, indem wir einen Druckknopf hinzufügen, um die Injektionsknoten zu ersetzen.
Verbinden Sie den Druckknopf so mit dem Himbeer-Pi, dass ein Bein des Druckknopfs mit Masse und der andere mit dem GPIO-Pin 4 (Pin 11) des Himbeer-Pi verbunden ist, wie in den folgenden Schemata gezeigt.
Wenn dies erledigt ist, kehren Sie zu Knoten-Rot zurück und löschen Sie die beiden zuvor verwendeten Injektionsknoten, indem Sie auf die Knoten klicken und auf Ihrer Tastatur auf Löschen klicken oder auf die Knoten doppelklicken und im Popup-Fenster auf Löschen klicken. Scrollen Sie anschließend in der Knotenpalette nach unten zum Abschnitt Himbeer-Pi und wählen Sie den Eingabeknoten aus. Es ist das mit dem Himbeer-Pi-Symbol links vor dem Namen des Knotens.
Ziehen Sie den Knoten in den Flow und doppelklicken Sie darauf, um die Eigenschaften zu bearbeiten. Setzen Sie den Pin auf GPIO 4 (Pin 11) und stellen Sie die Dropdown-Liste vor dem Widerstand auf Pull-up. Dadurch wird GPIO 4 auf HIGH "hochgezogen". Klicken Sie nach dem Festlegen der Eigenschaften auf die Schaltfläche Fertig.
Damit wir logische Entscheidungen treffen können, wenn der Schalter gedrückt wird, anstatt nur GPIO4 gegen Masse kurzzuschließen, verwenden wir den Schalterknoten. Suchen Sie in der Knotenpalette unter dem Funktionsbereich danach und ziehen Sie es in den Flow.
Mit dem Switch-Knoten können Sie Entscheidungen ähnlich wie bei den if-Anweisungen treffen. Es kann so eingestellt werden, dass es je nach Eingabewert unterschiedliche Ausgänge gibt. In diesem Lernprogramm konfigurieren wir es mit zwei Ausgabepfaden. Wenn die Eigenschaft msg.payload gleich 1 ist (Schalter wird nicht gedrückt), sollte sie dem ersten Pfad folgen, und bei jeder anderen Eingabe wird ein zweiter Pfad verwendet am Eingang wird eine andere als 1 beobachtet (Schalter wird gedrückt). Pfade werden mit der Schaltfläche „+ Hinzufügen“ hinzugefügt. Doppelklicken Sie auf den Knoten und konfigurieren Sie ihn wie oben beschrieben. Klicken Sie auf Fertig, wenn Sie fertig sind.
Sobald Sie auf die Schaltfläche "Fertig" klicken, sollten sich die beiden Pfade im Ausblick des Switch-Knotens widerspiegeln, da dieser nun zwei Ausgänge am Ausgang hat.
Als nächstes müssen wir einen "Änderungs" -Knoten einfügen. Der Änderungsknoten wird verwendet, um den Status der LED basierend auf dem Ergebnis des Argumentknotens festzulegen.
Wir werden zwei der Änderungsknoten verwenden. Die Nutzlast des ersten wird auf 0 gesetzt, wie in der Abbildung unten gezeigt, und die Nutzlast des zweiten wird auf eins gesetzt. Klicken Sie nach dem Bearbeiten der Eigenschaften für beide auf Fertig.
Denken Sie zur besseren Erklärung daran, dass wir den Pull-up-Widerstand verwendet haben. Wenn also die Taste nicht gedrückt wurde, ist der Ausgang an diesem Pin HOCH (1). Wenn wir ihn also durch den Schaltknoten führen, leuchtet die LED, da dies nicht der Fall sein sollte Verwenden Sie den Knoten "Ändern", um ihn auf LOW (0) zu setzen. Der zweite "Änderungs" -Knoten wird verwendet, um den Wert so einzustellen, dass, wenn etwas anderes als der HIGH-Status von GPIO-Pin 4 erkannt wird, die LED "an" eingeschaltet werden sollte, da dies bedeutet, dass der Druckknopf gedrückt wurde. Verbinden Sie die Änderungsknoten und den Rest der Knoten wie in der Abbildung unten gezeigt miteinander.
Nachdem dies erledigt ist, können wir das Projekt jetzt bereitstellen. Gehen Sie die Verbindung durch, um sicherzustellen, dass alles so ist, wie es sein sollte, und klicken Sie dann auf die Schaltfläche Bereitstellen. Wenn dies erfolgreich ist, sollten Sie wie gewohnt das Popup für die erfolgreiche Bereitstellung sehen und nun in der Lage sein, die LED über den Schalter zu steuern.
Mit Node-Red können Sie Ihren Build einfach und schnell prototypisieren, ohne sich um den Code kümmern zu müssen. Dies ist jedoch möglicherweise nicht die beste Lösung, insbesondere für erfahrene Entwickler, die Flexibilität und Kontrolle über das Programm wünschen. Trotzdem ist es ein großartiges Tool, mit dem Sie Prototypen in wenigen Minuten erstellen können.
Bis zum nächsten Mal!