Der Raspberry Pi ist ein populärer, vollwertiger und kostengünstiger Einplatinencomputer. Durch seine Vielfalt an Schnittstellen (IO, SPI, PWM, I2C) bietet dieses Gerät umfangreiche Möglichkeiten Werte von Sensoren zu erfassen, mit Aktoren Geräte zu steuern und zu schalten. Durch das Linux Betriebssystem, LAN, WLAN und Bluetooth kann er in das heimische Netzwerk und in das Internet integriert werden. Mit fast beliebigen Programmiersprachen lassen sich einfache und komplexe Anforderungen umsetzen. Die in diesem Kurs eingesetzte Software ist enthalten.
Um Automation, allgemein die Steuerung von Systemen mit dem Gerät durchführen zu können, ist es wichtig zu wissen welche Daten der Raspberry Pi auf welche Art erfassen kann und wie er mit der Außenwelt kommuniziert
Raspberry Pi Zero im Gehäuse
Kursinhalt in der Übersicht
Tag 1
Vorbereiten der SD Card (Optional: Wer hat sollte ein Notebook mitbringen)
Installation des Raspberry Pi
Grundkonfiguration des Betriebssystems
Anmelden am Netzwerk
Update des Betriebssystems
wichtige Linux Befehle und grundlegende Administration des Systems
Tag 2
kurze Wiederholung/ Zusammenfassung vom Vortag
Installation von Node Red
Installation der Nodes und Module/ Paletten
Navigation in Node RED
Erstes einfaches Programm
Installation weitere Services
weitere Linux Befehle und Systemadministration
Tag 3
Durchsprache der unterschiedlichen BUS- und IO- Systeme
Verbindung mit Aktoren und Sensoren
Verknüpfung von Sensoren und Aktoren
Programmierung
weitere Linux Befehle und Systemadministration
Tag 4
Vertiefung der Programmierung
Was ist MQTT und Einbindung von MQTT (MQTT = MQ Telemetry Transport)
Dashboard im Internet auf dem Handy
allgemeine Fragen
WLAN Infrastruktur
Anforderungen
Die WLAN Infrastruktur in der VHS hat ein offenes WLAN, es müssen hier vor der Verwendung die Nutzungsbedingungen akzeptiert werden. Für den Kurs ist das hinderlich. Für die Einrichtung der Raspi´s ist es notwendig Zugriff auf den Router und die Liste der Geräte mit den zugehörigen IP Adressen zu haben. Des weiteren ist es notwendig, das die am WLAN angeschlossenen Geräte untereinander kommunizieren können. Nur so kann mit einem anderen Gerät eine Anmeldung auf den Raspberry Pi erfolgen.
Die Verwendung eines Mobiltelefons mit HotSpot Funktion wäre eine denkbare Alternative, jedoch ist diese Funktion bei vielen Telefonen und/ oder Tarifen begrenzt. Durch die nachfolgende Lösung wird dieses Problem ebenfalls gelöst.
Lösung
Eine Fritz Box 7390 wird als WLAN Access Point und Router mit DHCP Service verwendet. Die Fritz Box stellt die Internetverbindung über eine bestehende WLAN Verbindung her. Der Internetanbieter kann dabei ein Handy mit Hotspot Funktion oder ein anderes WLAN sein. Als Ergebnis sind alle im Kurs eingesetzten Geräte im selbst verwalteten Netzwerk und können in der Fritz Box administriert werden. Diese Umgebung simuliert ist eine typische Installation zu Hause.
Netzwerkinfrastruktur
Internetzugang in Fritz Box
Fritz Box Zugang zum InternetWLAN QR Code
Design Thinking Prozess
In diesem Kurs werden wir mit einem Raspberry Pi exemplarisch eine Steuerung aufbauen, welche die verschiedenen IO Ports und BUS Systeme verwendet. Dabei werden wir mit Sensoren Daten erfassen und auf Basis der Messergebnisse Relais, allgemein Aktivitäten, ansteuern.
Die fünf Phasen sind: Verstehen, Definieren, Ideation, Bauen, Testen
Design Thinking beschreibt eine Entwicklungsmethode mit der in 5 Phasen von der Idee bis zum fertigen Produkt geleitet wird.
Um möglichst flexibel zu sein, bauen wir die Steuerung auf einem Entwicklungsboard/ einem Steckbrett zusammen. Die entsprechenden elektrischen Module und Verbindungen werden wir besprechen. Die Spannungsversorgung erfolgt über das Raspberry Pi Netzteil.
Verstehen was das Problem und die Wünsche, Ziele sind
Definieren des Standpunktes
Ideation, Ideen entwickeln wie eine Umsetzung zur Lösung des Problems führen kann
Bauen, Umsetzen der Idee und aufbauen eines Prototypen
Testen, Inbetriebnahme und verproben der aufgebauten Lösung
Die Loop als Treiber
Beobachten Die reale Welt beobachten und aufnehmen
Reflektieren Beobachtungen Zusammenfassen und auf die eigene Situation abbilden
Machen Der eigenen Idee eine Form und Gestalt verpassen
MQTT (Message Queue Telemetry Transport)
Den Status von einem Sensor abfragen oder ein Relais etc. schalten sollte verlässlich und mit geringem Aufwand erfolgen. Gleichzeitig ist es wichtig die Kommunikation standardisiert zu führen. MQTT ist ein schlankes Protokoll und konsolidiert die Werte von Sensoren in einem Broker.
Was macht MQTT so interessant?
MQTT standardisiert die Kommunikation von IoT Geräten untereinander, hilft einfache Applikationen auf Endgeräten zu erstellen und vereinfacht die Interoperabilität. MQTT ist auf vielen IoT Geräten, Microcontrollern, etc. etabliert.
Begriffe und wesentliche Bestandteile
Begriff
Beschreibung
Broker
Der Broker ist das Herzstück von MQTT. Hier laufen die Informationen zusammen, der Broker enthält alle Informationen und sorgt für die Verteilung der Informationen an die Clients.
Client
Ein Client kommuniziert mit dem Broker. Der Client kann Informationen an den Broker senden oder Daten empfangen. Ein Client kann jedes beliebige Endgerät sein, welches mit dem Broker kommunizieren kann. Beispiele sind: Mobiltelefone, Microcontroller, IoT Geräte. Clients kommunizieren niemals mit anderen Clients, sondern immer nur mit dem Broker.
MQTT Protokoll
Das MQTT Protokoll basiert auf dem TCP/IP Framework, Layer 5-7.
ClientID
Jeder Client erhält vom Broker eine eindeutige ClientID. Zu diesem Client speichert der Broker unter anderen auch den Status
Will Message
Ein Client kann dem Broker eine spezielle Message mit dem „letzten Willen“, Testament senden. Diese Message dient dazu anderen Clients (über den Broker) mitzuteilen wie das Verhalten des Clients ist, falls dieser ungeplant ausfällt. Der Broker sendet dann diese Nachricht stellvertretend für den Client
Keep Alive
Keep Alive dient dazu die Kommunikation mit dem Broker aufrecht zu erhalten. Der Broker erkennt unter anderem daran, ob der Client noch aktiv (am Leben) ist.
QoS
Das QoS Flag bestimmt die Qualität einer Verbindung zwischen Client und Broker. Es gibt die Zustände 0,1,2. 0 = „at most once„; enspricht „fire and forget“ 1 = „at least once„; Nachricht wird min. 1x gesendet und kann mehrfach beim Empfänger ankommen 2 = „exactly once„; Nachricht kommt garantiert nur einmal beim Empfänger an. Die Nachricht kann sich verzögern und muss bestätigt werden, aufwendigere Kommunikation
Topic
Topics definieren den Pfad zur Abspeicherung der Daten, quasi die Datenstruktur. Topics können frei gewählt werden. Es gibt allerdings Ausnahmen: – $ : Beginnt ein Topic mit einen $ Zeichen, so handelt es sich um interne Statistiken des Brokers. Diese Topics können Nicht beschrieben werden Grundsätzliche Regeln zur Namensregelung eines Topics: – Kein / am Anfang verwenden – Kurz wie möglich halten – keine Leerzeichen verwenden – keine Sonderzeichen verwenden, nur ASCII Zeichen und Zahlen 0-9
MQTT Begriffe und Grundlagen
MQTT Server Mosquitto
Auf dem Raspberry Pi kann der Server „Mosquitto“ verwendet werden. Die Installation ist einfach und wenn keine speziellen Konfigurationen gewünscht sind, erfolgt die Inbetriebnahme in wenigen Schritten. Nachfolgende Schritte einfach komplett oder einzeln kopieren und auf dem Raspberry Pi ausführen:
Der Einfachheit halber aktivieren wir den Zugriff auf allen IP-Interfaces und geben auch den „nicht angemeldeten“ Zugang (Anonymous) frei. Die folgenden Zeilen werden dazu der Konfigurationsdatei /etc/mosquitto/mosquitto.conf angehängt. Wie die Konfiguration im Detail angepasst werden kann, ist in der Dokumentation des Projektes enthalten.
#Hier startet die Anpassung
#
allow_anonymous true
bind_address 0.0.0.0
Danach am besten den Raspberry Pi neu starten und mit dem MQTT Explorer den Zugriff testen.
Der Anschluss eines LCD Displays ist ebenfalls möglich. Wie dieses angeschlossen und in Node-RED eingebunden wird ist in folgendem Blogartikel zu lesen.
falls vorhanden: Notebook mit WLAN, SD Karten Lese/ Schreibadapter
Übersicht Steckbrett
Labor Aufbau mit Steckbrett (Auf das Bild klicken für größere Ansicht)
Verkabelung des Streckbrettes
Verkabelung der Module und Komponenten (Auf das Bild klicken für größere Ansicht)
Die Leuchtdioden können grün, gelb oder rot sein. Der lange Pin ist die Anode (+Pol). Die Widerstande sollten nicht zu niedrig gewählt werden. Die GPIOs gilt es so wenig wie möglich zu belasten. Ein Strom von 5mA ist ein guter Wert. Damit ergibt sich als Vorwiderstand für die LED nach folgender Formel R = U/I = (3.3V – 2VLED) / 0.005A = 1.3V / 0.005A = 260Ohm. Der nächste Normwert ist 270Ohm. Werte bis zu 1.5kOhm sind ebenfalls in Ordnung.
Der Wert für den Widerstand R2 kann ebenfalls 270 Ohm aufwärts sein. Hierbei handelt es sich um einen PULL UP Widerstand, es kommt nicht auf den Strom an, sondern nur das der Port ein definiertes Potenzial hat.
Als Sensoren verwenden wir Schalter, Spannungswandler, Temperatur, Luftfeuchtigkeit, LCD Displays, etc. (Siehe Stückliste unten)
Steckbrett mit Verbindungskabel
Als Aktoren verwenden wir eine Relais Karte zur Ansteuerung von kleinen und großen Lasten.
LCD Anzeige 128×64 Pixel
Zur Visualisierung wird eine Oberfläche im Webbrowser erstellt, diese kann auf dem Handy im hauseigenen WLAN oder auch über das Internet erreicht werden. Die Anzeige auf einem LCD Display direkt am Raspberry Pi angeschlossen ist ebenfalls möglich.
Für den Aufbau der Testumgebung wird folgendes Material benötigt. Dazu habe ich eine Liste vorbereitet. Einige der Komponenten lassen sich deutlich günstiger Beschaffen, wenn anstatt einem mehrere gekauft werden. So lassen sich auch durch eine Sammelbestellung Einsparungen vornehmen und auch Versandkosten sparen.
Stückliste | Bauteileliste
Anzahl
Artikel
Beschreibung
Lieferant
Preis ca.
1
Raspberry Pi Zero WH
Einplatinencomputer, Alternativ geht auch ein Raspberry Pi 3B+, 4
IO-PORT Expander I2C (Optional für den Raspi Kurs nicht zwingend notwendig)
Entweder als Modul oder als IC, eventuell Lieferengpass beachten Microchip Technology MCP23017-E/SP Schnittstellen-IC – E-A-Erweiterungen POR I²C 1.7 MHz SPDIP-28. Wenn als IC-Version, dann bitte unbedingt ALS DIP Package und kein SMD!!!
Diverse
ab 2,80€
1
DHT22 AM2302 Temperatursensor und Luftfeuchtigkeitssensor
Sensor mit 1-Port Anschluss für Temperatur und Luftfeuchtigkeit (Link)
0,96 Zoll OLED SSD1306 Display I2C 128 x 64 Pixel kompatibel mit Arduino und Raspberry Pi, es geht auch ein anderes Display, sollte jedoch I2C Bus haben (Link)
USB, HDMI Adapter (Zum Anschluss von Tastatur, Maus, Monitor wird abhängig vom verwendeten Raspberry Pi ein Adapter benötigt. Im Schulungsraum werden wir USB Tastatur, Maus und Standard HDMI am Monitor haben)
Diverse
1
Netzteil
Raspberry Pi – offizielles Netzteil für Raspberry Pi 4 Model B, USB-C, 5.1V, 3A weiß (Link)
Die beiden Dateien „package.json“ und „flows.json“ beinhalten die Informationen welche Module zur Palette hinzugefügt wurden und sind eine Kopie der flows. Sind die Module alle hinzugefügt, kann die Datei flows.json