Lektion III

Vorbereitung und was wird benötigt

  • Der Raspberry Pi aus Lektion I und Lektion II inkl. Steckbrett
  • ein paar elektronische Bauelemente (Widerstände (4k7, 100R, 150R), Potentiometer, LEDs (verschiedene Farben)), Drathsteckbrücken
  • etwas Werkzeug
  • Sensor DHT-11/ DHT-22

Wer hat ein Multimeter (Analog oder digital), das kann eventuell hilfreich sein.

Lernziel dieser Lektion

  • Eingabe (Ein/Aus) verarbeiten
  • Hinzufügen eines Sensors und auslesen der Messdaten
  • Aufbereitung und Verarbeitung der Messdaten mit JavaScript
  • Anzeige der Temperatur im Dashboard (auf dem Display)
  • Anpassung der Node-RED Umgebung, hinzufügen von Modulen
  • Node function, debug, inject

Entwicklungssystem vorbereiten

Hardware

Das Entwicklungssystem ist grundlegend installiert und mit dem Steckbrett verbunden. Hier können neben der Relaisplatine jetzt weitere Sensoren und Aktoren angeschlossen werden.

Entwicklungsumgebung mit Relaisplatine, Sensor DHT22 und einem OLED Display

Modul DHT-22 anbinden

Um den Temperatursensor DHT11 auslesen zu können wird ein weiteres Modul in Node-RED benötigt. Das Modul heisst „nnode-red-contrib-dht-sensor und wird über die Palette hinzugefügt. Nach der Installation gibt es einen neuen Node mit dem Namen rpi-DHT22. Der DHT22 ist ein 1-Wire Sensor, das bedeutet er überträgt die seine Daten seriell an einen dafür vorbereiteten Port. Der Sensor hat 4 Anschlüsse. Pin 1 = +3-5V, Pin 2 = Data out, Pin 3 = n.c., Pin 4 = GND. Zwischen Pin 1 und Pin 2 sollte ein Widerstand mit 5k geschaltet werden.


Auslesen des DHT-22

Nachdem der DHT-22 angeschlossen ist kann ein erster Flow erstellt werden, um die generelle Funktion zu prüfen. Der DHT-22 liefert 2 Werte. Die Temperatur und die Luftfeuchtigkeit (HUMIDITY). Dieses kann mit einem DEBUG Node geprüft werden.

Test Flow

Der Testflow hat ein Trigger (Inject-Node) um die Messung zustarten. Das Ergebnis der Messung wird in ein Debug Node gegeben, um zu sehen welche Informationen der Sensor überträgt.

Testflow mit entsprechender DEBUG Ausgabe

Auslesen der Werte

Sehr gut zu erkennen ist das msg-Objekt enthällt 8 Parameter. Diese Parameter können einzeln verarbeitet werden durch ein einfaches Java Scrip snipplet (function 1 und function 2). Mit diesem Stück Code wird die Luftfeuchtigkeit in der Variablen „Feuchtigkeit“ und die Temperatur in der Variablen „Temperatur“ gespeichert. Danach wird ein neues leeres msg.payload Objekt erzeugt. Dem neu erzeugten Objekt wird jetzt die Variable Temperatur und Feuchtigkeit übergeben.

# function1
Feuchtigkeit = msg.humidity
Temperatur = msg.payload

msg.payload = {}
msg.payload.Temperatur = Temperatur
msg.payload.Luftfeuchtigkeit = Feuchtigkeit

return msg;
#function2
Feuchtigkeit = msg.humidity
Temperatur = msg.payload

msg.payload = {}
msg.payload = Temperatur

return msg;

In der function2 wird nur die Temperatur übernommen und in das neu erzeugte msg.payload Objekt übergeben. Die Temperatur wird danach über ein „GAUGE Node“ im Dashboard angezeigt.

GAUGE Element mit der Temperatur

Hilfreiche Informationen

rpi-dht22 Node angeschlossen an GPIO5
BCM GPIO Pin Layout
DHT-22 Specifications

Aufgaben

Aufgabe 4

Der Sensor DHT11/22 wird an das Testsystem angeschlossen. Alle 15 Sekunden wird der Wert von Temperatur und Luftfeuchtigkeit abgefragt und im Dashboard angezeigt. Falls vorhanden können auch beide Sensoren angeschlossen werden und danach die Messergebnisse vergleichen. Wenn es Unterschiede gibt, woher kommen die?

Aufgabe 5

Im Dashboard soll eine LED den Alarmzustand der Temperatur als grün oder rot Anzeigen. Der Schwellwert liegt bei 22 Grad.
Hinweis: Dieses kann über das function Node realisiert werden. Die 2 Zustände werden über eine IF else Abfrage abgebildet,

Temperatur = msg.payload

msg.payload = {}

if (Temperatur <=22) 
    msg.payload = false 
else 
    msg.payload = true


return msg;