Suche
Lesesoftware
Specials
Info / Kontakt
Heimautomation mit Arduino, ESP8266 und Raspberry Pi - Das eigene Heim als Smart Home für Heimwerker, Bastler und Maker
von: Thomas Brühlmann
mitp Verlags GmbH & Co. KG, 2021
ISBN: 9783958456730 , 368 Seiten
Format: ePUB
Kopierschutz: Wasserzeichen
Preis: 29,99 EUR
eBook anfordern
Mehr zum Inhalt
Heimautomation mit Arduino, ESP8266 und Raspberry Pi - Das eigene Heim als Smart Home für Heimwerker, Bastler und Maker
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...