Heimautomation mit Arduino, ESP8266 und Raspberry Pi (eBook)
370 Seiten
MITP Verlags GmbH & Co. KG
978-3-95845-672-3 (ISBN)
Einsatz von Sensoren wie Licht-, Umwelt- und Barometersensoren sowie Raspberry Pi als Schaltzentrale
Verwendung fertiger Module wie Bewegungsmelder, Kontakte und Rauchmelder
Einsatz einfacher selbst gebauter Elektronik-Module
Mit diesem umfassenden Praxis-Handbuch erfahren Sie, wie Sie Ihr Heim selbst automatisieren können.
Anhand zahlreicher Beispiele lernen Sie Schritt für Schritt die Umsetzung verschiedener Projekte wie z.B. 433-MHz-Sender und -Empfänger, IoT-Gateway mit 433 MHz, drahtlose Infrarot-Fernsteuerung für den Fernseher, Wettermodul, drahtlose Klingel, Strom- und Briefkastenwächter und Aquarium-Timer.
Der Autor zeigt Ihnen die praktischen Einsatzmöglichkeiten verschiedener Sensoren und Aktoren im Smart Home wie Licht-, Umwelt- und Barometersensor. Dabei werden zum einen selbst gebaute einfache Elektronik-Module mit Arduino, ESP8266 und Wemos-Modulen realisiert und über eine Schaltzentrale mit Raspberry Pi gesteuert. Zum anderen werden fertige Module wie Bewegungsmelder, Kontakte oder Rauchmelder über einfache Gateways ins System integriert. Dabei wird für die Zentrale Node-Red verwendet, um die Daten und Zustände zu verarbeiten und zu visualisieren.
Jedes einzelne Projekt wird mit Stückliste und Steckbrett-Aufbau ausführlich dargestellt und beschrieben.
Dieses Buch richtet sich an Bastler und Maker, die bereits etwas Erfahrung mit Arduino und Raspberry Pi gesammelt haben und nun praktische Anwendungen in ihrem Heim aufbauen möchten.
Inhalte und Projekte:
- IoT-Hardware mit Arduino, ESP8266 und Raspberry Pi
- Arduino IDE und Node-Red
- Die Protokolle HTTP und MQTT
- Arduino als Sensormodul
- Schaltmodule mit Tasmota-Firmware
- Node-Red als Schaltzentrale
- Wettermodul mit Licht-, Umwelt- und Barometersensor
- 433-MHz-Sender und -Empfänger
- IoT-Gateway mit 433 MHz
- ESP8266 als RF-Gateway
- Node-Red-Schaltzentrale mit Arduino-Interface
- Drahtlose Infrarot-Fernsteuerung für den Fernseher
- Drahtlose Klingel
- Analog-Wandler-Modul
- Homeautomation-Plattformen
- Briefkastenwächter
- Stromwächter
- Aquarium-Timer
- Leuchtstreifensteuerung
Thomas Brühlmann arbeitet als Consultant und hat langjährige Erfahrung in der Hardware- und Softwareentwicklung. Nebenbei realisiert er Projekte mit Open-Source-Hardware, hält Vorträge und führt Workshops durch. In seinem Blog unter arduino-praxis.ch publiziert er Projekte, Anwendungen, Tipps und Tricks.
Thomas Brühlmann arbeitet als Consultant und hat langjährige Erfahrung in der Hardware- und Softwareentwicklung. Nebenbei realisiert er Projekte mit Open-Source-Hardware, hält Vorträge und führt Workshops durch. In seinem Blog unter arduino-praxis.ch publiziert er Projekte, Anwendungen, Tipps und Tricks.
Cover 1
Titel 5
Impressum 6
Inhaltsverzeichnis 7
Einleitung 11
Aufbau des Buches 11
Mehr Informationen 12
Danksagung 13
Kapitel 1: Smarthome-Hardware 15
1.1 Arduino 15
1.1.1 Arduino als Sensor- und Aktormodul 16
1.1.2 Arduino-Boards 16
1.1.3 Entwicklungsumgebung IDE 22
1.1.4 Programmierung, Programmstruktur 25
1.1.5 Praxisbeispiel: Temperaturmesser mit NTC und LED 25
1.1.6 Bibliotheken 30
1.1.7 Shields 34
1.1.8 Arduino im Miniaturformat 38
1.1.9 Arduino im Batteriebetrieb 44
1.2 Raspberry Pi 45
1.2.1 Minimal-Anforderungen 45
1.2.2 Raspberry-Pi-Boards 46
1.2.3 Installation 47
1.2.4 Remote-Zugriff 55
1.2.5 Schnittstellen zur Außenwelt 61
1.3 IoT- und Smarthome-Infrastruktur 65
Kapitel 2: Internet-Connectivity 67
2.1 Ethernet-Shield 67
2.2 WiFi-Verbindung 69
2.3 Arduino als Webclient 69
2.4 Arduino als Webserver 72
Kapitel 3: ESP8266 77
3.1 ESP-Module 77
3.1.1 ESP-01 77
3.1.2 ESP-12 78
3.2 Integration in Arduino-IDE 81
3.3 ESP8266-Boards 84
3.3.1 Wemos D1 84
3.3.2 Wemos D1 Mini 85
3.3.3 NodeMCU 89
3.4 Praxisbeispiel: Blink 90
3.5 WiFi mit ESP8266 92
3.5.1 WiFi-Bibliothek für ESP8266 92
3.6 Praxisbeispiel: Wemos-Webclient 94
3.7 Praxisbeispiel: Webclient mit Sensordaten 97
3.8 Praxisbeispiel: Webclient mit HTTPS 98
3.9 Firmware Tasmota 102
3.9.1 Funktionen 104
3.9.2 Installation Tasmota 104
3.10 Praxisbeispiel: Tasmota mit Tasmotizer 106
3.11 Praxistest: Tasmota schaltet Ausgang 113
3.12 Praxisbeispiel: Sonoff-Schaltmodule 114
Kapitel 4: Protokolle 121
4.1 HTTP 121
4.2 MQTT 125
Kapitel 5: Arduino als MQTT-Client 131
5.1 PubSubClient-Bibliothek 131
5.2 MQTT Publish mit Arduino 132
5.3 MQTT Subscribe mit Arduino 139
5.4 MQTT Publish und Subscribe mit ESP8266 142
5.5 MQTT-Topics organisieren 147
5.6 Praxisbeispiel: Sensordaten senden 148
Kapitel 6: MQTT und Node-Red mit Raspberry Pi 153
6.1 Raspberry Pi als Schaltzentrale 153
6.2 Mosquitto als MQTT-Broker 154
6.3 Node-Red 155
6.4 Flows mit Node-Red 161
6.5 MQTT mit Node-Red 168
6.6 Node-Red-Dashboard 171
6.7 Praxisbeispiel: Anzeige des Node-Red-Dashboards auf mobilen Geräten 179
6.8 Praxisbeispiel: Serielle Daten von Arduino Uno empfangen 180
6.9 Praxistipp: Kompakter Arduino für Datenerfassung 191
Kapitel 7: Arduino als Sensor-Node 195
7.1 Praxisbeispiel: Aufbau Sensor-Node 195
7.2 Praxisbeispiel: Temperatursensor (NTC) 198
7.3 Praxisbeispiel: Helligkeitssensor BH1750 201
7.4 Praxisbeispiel: Umweltsensor SHT31 204
7.5 Praxisbeispiel: Barometer (BME680) 208
7.6 Praxisbeispiel: Datenübertragung mit 433-MHz-Funkmodul 217
7.7 Praxisbeispiel: RFLink-433-MHz-Gateway 228
7.8 Praxisbeispiel: ESP8266 als RF-Gateway 235
7.9 Praxisbeispiel: RF-Gateway mit Sonoff RF Bridge 238
Kapitel 8: MQTT-Anwendungen 247
8.1 Praxisbeispiel: Ausgänge von Arduino und Raspberry Pi schalten 247
8.2 Praxisbeispiel: Fernbedienung für Fernseher 255
8.3 Praxisbeispiel: Drahtlose Klingel 263
8.4 Praxisbeispiel: 8-Kanal-Analog/Digital-Wandler über MQTT 266
8.5 Praxisbeispiel: Briefkastenwächter 277
Kapitel 9: Smarthome-Plattformen 289
9.1 Home Assistant 289
9.2 openHAB 303
Kapitel 10: IoT- und Smarthome-Projekte 305
10.1 Aquarium-Timer 305
10.2 Stromwächter 310
10.2.1 Stromwächter mit Sonoff Pow 311
10.2.2 Stromwächter mit Stromsensor 318
10.3 Waschmaschinenwächter 325
10.4 Gefrierschrankwächter 330
10.5 RGB-Streifen (Neopixel) steuern 342
Stücklisten 355
Stichwortverzeichnis 363
Kapitel 2:
Internet-Connectivity
Das Internet ist heute ein Werkzeug für Millionen von Menschen. Im Alltag, im Job und im Hobby kann man auf diese Datenquelle nicht mehr verzichten.
Auch im Umfeld von Microcontrollern und Minicomputern, wie Arduino und Raspberry Pi, kommt man ohne das Internet nicht mehr aus. Die Community ist online vernetzt. Viele Bastler und Entwickler publizieren ihre Projekte und Programme online und stellen die Daten der ganzen Welt zur Verfügung.
Internet-Connectivity, also die Verbindung zum Internet, ist natürlich im IoT-Bereich ein nötiges Tool. Der Buchstabe »I« steht ja stellvertretend für den Begriff Internet.
Beim Raspberry Pi aus dem vorherigen Kapitel haben Sie bereits gesehen, dass das Board Schnittstellen zum kabelgebundenen Ethernet und mit WiFi-Dongle eine drahtlose Kommunikation zur Verfügung stellt.
Im Arduino-Umfeld muss für das Standard-Arduino-Board, den Arduino Uno, ein zusätzliches Shield eingesetzt werden, um eine Netzverbindung zum hausinternen Netzwerk oder zum Internet aufzubauen. Dieses Shield wird im nachfolgenden Abschnitt beschrieben.
Drahtlose Verbindung und die Verbindung zu einem WLAN-Router erfordert keine Kabelverbindung und in vielen Haushalten, Büros oder Bastler-Räumen steht meist ein WLAN inklusive Zugang zum Internet zur Verfügung.
In Kapitel 3 werden ausführlich die ESP8266-Module von Espressif beschrieben, die bereits ein WiFi-Modul onboard beinhalten. Mit relativ wenig Aufwand können mit den ESP-Modulen Sensor-Anwendungen über die Arduino-Entwicklungsumgebung realisiert werden.
2.1 Ethernet-Shield
Mit dem Ethernet-Shield können Sie Ihren Arduino Uno über eine kabelgebundene Ethernet-Verbindung mit dem Internet verbinden.
Das Ethernet-Shield (Abbildung 2.1) ist das dienstälteste Shield für Ethernet-Kommunikation. Die aktuelle Version ist das Ethernet-Shield 2 (https://store.arduino.cc/arduino-ethernet-shield-2), das neben dem Ethernet-Anschluss in Form eines RJ45-Steckers noch einen Adapter für eine SD-Karte enthält.
Abb. 2.1: Arduino-Ethernet-Shield (Bild: arduino.cc)
Mit dem Ethernet-Shield können 10/100-MB-Netzwerkverbindungen aufgebaut werden. Der Onboard-Ethernet-Controller wird über den SPI-Port angesteuert (Serial Peripheral Interface).
Die Software für die Ethernet-Kommunikation mit dem Ethernet-Shield erfolgt über die sogenannte Ethernet-Bibliothek:
https://www.arduino.cc/en/Reference/Ethernet
Die Ethernet-Bibliothek ist in der Arduino-Entwicklungsumgebung standardmäßig installiert und kann direkt verwendet werden.
Dank der Standard-Arduino-Bauform des Ethernet-Shields können Sie weiterhin Sensoren und externe Bauteile und Module anschließen.
Das Ethernet-Shield ist bei vielen Elektronik-Lieferanten oder direkt im Arduino-Shop verfügbar. Neben dem Original-Board von Arduino sind auch etliche Ethernet-Shields von anderen Herstellern auf dem Markt.
Bei der Shield-Auswahl ist jeweils zu beachten, dass das Ethernet-Shield mit einem Ethernet-Controller vom Typ Wiz5100 ausgerüstet ist. Die Shields mit diesem Controller-Typ können mit der oben genannten Ethernet-Bibliothek angesteuert werden.
Arduino-Shop
2.2 WiFi-Verbindung
Für die Realisierung einer drahtlosen Netzverbindung kommt man an den ESP8266-Modulen nicht vorbei. Diese kleinen und kostengünstigen Microcontroller-Module sind zum heutigen Zeitpunkt quasi die erste Wahl.
Die zentrale Hardware von Microcontroller-Modulen mit WiFi-Schnittstelle sind die ESP-Module mit integrierter Antenne. In Abbildung 2.2 ist ein Typ ESP8266-12 abgebildet, der direkt auf eine Leiterplatte gelötet werden kann.
Abb. 2.2: ESP8266-12
Für komplexere Anwendungen mit Netzzugang kann natürlich auch immer ein Raspberry Pi eingesetzt werden.
Boards mit den ESP8266-Modulen sind aber meist in kompakteren Bauformen verfügbar und eignen sich ideal als Sensor- oder Aktormodul. Sensormodule fühlen mit angeschlossenen Sensoren die Umwelt. Aktormodule sind Ausgangsmodule, die einen Relais- oder Motorausgang anbieten und für Schaltzwecke geeignet sind.
2.3 Arduino als Webclient
Ein Arduino Uno mit Ethernet-Shield wird in einer Anwendung als Webclient bezeichnet, wenn das Board Anfragen (Requests) an einen Webserver sendet.
Am Arduino ist in diesem Fall beispielsweise ein Licht- oder Temperatursensor angeschlossen. Der vom Arduino eingelesene Sensorwert wird dann an eine Webanwendung übermittelt.
Die Datenübermittlung erfolgt in Form eines URL-Requests mit Parametern an eine externe Webanwendung. Die übermittelten Parameter sind dabei die Sensorwerte vom Arduino-Board. Die externe Webanwendung selbst verarbeitet nach Aufruf des Webrequests durch den Webclient (das Arduino-Board) die gesendeten Daten. Die Daten können beispielsweise in einer Datenbank gespeichert werden.
Ein solcher Webrequest mit Parametern kann so aussehen:
http://meinwebserver.com/sensor.php?sensorid=55&light=456;
Der Parameter sensorid
identifiziert das Sensormodul oder den Sensor und der Parameter light
ist der gemessene Wert.
Die Datenverarbeitung auf dem externen Server erfolgt in diesem Beispiel in der PHP-Datei sensor.php
. Der Webclient selbst kann diese Verarbeitung nicht beeinflussen und hat auch keinen Einblick in diesen Programmcode. Falls die Webanwendung nach der Verarbeitung eine Rückmeldung sendet, weiß der Webclient, ob die Datenübertragung erfolgreich war.
Stückliste (Webclient)
-
1 Arduino Uno
-
1 Ethernet-Shield
-
1 Ethernet-Kabel
-
Drahtbrücken
Für den ersten Test des Webclients wird der Arduino mit Ethernet-Shield am Netzwerk angeschlossen. Als Testprogramm kann der Beispielcode Webclient
aus der Ethernet-Bibliothek geladen und ausgeführt werden.
Im Beispielcode wird eine Suchanfrage mit dem Suchbegriff »arduino« bei Google (www.google.com
) ausgeführt und die Antwort im seriellen Monitor dargestellt.
Die Suchanfrage hat folgende URL:
http://www.google.com/search?q=arduino
Netzwerktechnisch arbeitet der Webclient mit einer dynamischen Vergabe einer IP-Adresse durch den internen Router. Falls DHCP fehlschlägt, wird die IP-Adresse, die im Sketch eingetragen ist, verwendet.
Meine Konfiguration sieht wie folgt aus:
Im seriellen Monitor kann nun der Webrequest an die Google-Website betrachtet werden (Abbildung 2.3).
Im Beispiel ist zu sehen, dass der Router dem Webclient die IP-Adresse 10.0.1.56 zugewiesen hat.
Abb. 2.3: Ethernet-Webclient – Webrequest im seriellen Monitor
Nach Aufruf des Google-Webservers sendet dieser die Antwort:
Der Error-Code 200 sagt aus, dass die Anfrage korrekt angekommen und ausgeführt wurde.
Der einfache Webclient mit dem Ethernet-Shield war also erfolgreich.
Im Code des Webclients sind die Daten für den Zielserver in einzelnen Zeilen abgelegt. Für den Server selbst wird die Serveradresse in der Variablen char
server[]
gespeichert (smarthome_kap2_webclient.ino
).
Den Suchstring
/search?q=arduino
finden Sie nach der Initialisierung:
Für eigene Anwendungen kann dieser Teil des Webclient-Programms individuell angepasst werden. Dazu können Sie den Aufruf auch etwas aufteilen und in einzelnen Zeilen darstellen.
Für den Serveraufruf mit Parametern
http://meinwebserver.com/sensor.php?sensorid=55&light=456;
sieht der Programmteil dann so aus:
2.4 Arduino als Webserver
Ein Aufruf einer Webadresse, wie beispielsweise die Buchwebsite unter https://555circuitslab.com löst eine Antwort auf einem Webserver aus. Die Antwort ist eine Seite im HTML-Format, wird an den Anfrager zurückgesendet und kann im...
Erscheint lt. Verlag | 25.2.2021 |
---|---|
Reihe/Serie | mitp Professional |
Verlagsort | Frechen |
Sprache | deutsch |
Themenwelt | Informatik ► Weitere Themen ► Hardware |
Schlagworte | Arduino • Buch • ESP8266 • homeautomation • Internet der Dinge • internet of things • Maker • Microcontroller • Node Red • Raspberry Pi • sarduino ide • Smart Home • SmartHome • smart home systeme • tasmota |
ISBN-10 | 3-95845-672-3 / 3958456723 |
ISBN-13 | 978-3-95845-672-3 / 9783958456723 |
Haben Sie eine Frage zum Produkt? |
Größe: 25,1 MB
Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopierschutz. Eine Weitergabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persönlichen Nutzung erwerben.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich