Conrad 10215 Operation Manual [de]

Internet of Things
10215-5 HB_Titelei_Layout 1 19.04.16 09:42 Seite 1
Pro
Lernpaket
Internet of Things
Verbinden Sie die reale Welt mit der digitalen Welt
10215-5 HB_Titelei_Layout 1 19.04.16 09:42 Seite 2
INHALT
Bevor es losgeht
.....................................................................................................................
4
.
5
Bauteile im Lernpaket
.
9
0
hle
0
.
17
23
..............................................................
32
....................................................................................
342.4 Netzwerkschalter
.....................................................................................................
36
2.5 Analoger Sensor
.......................................................................................................
39
3 TCP-Client
..............................................................................................................................
4
3.1 Ein Browser
...............................................................................................................
4
3.2 Eine Internetuhr
.......................................................................................................
6
.................................................................................................
9
4 TCP-Server
.............................................................................................................................
2
4.1 TCP-Webserver
.........................................................................................................
2
.............................................................................................
..............................................................................................
6
....................................................................................
8
....................................................................................
...............................................................................................................
.............................................................................................................
.......................................
............................................................................................................................
8
...............................................................................................................
8
.........................................................................................................
...............................................................................................
ack
....................................................................................................................
................................................................................................................
euermelde
.......................................................
...................................................................................................................................
dos
....................................................................................................................
....................................................................................................................................
Das IoT-WiFi-Board (NanoESP) ............................................................................................
...........................................................................................................
1 Das Modul kennenlernen ..................................................................................................... 1
1.1 Grundlegende AT-Befe
1.2 Automatische Konfi guration .................................................................................
1.3 Erkennung eines Netzwerks ..................................................................................
2 UDP und IP ............................................................................................................................. 26
2.1 Daten zwischen Board und PC mit UDP austauschen ......................................28
2.2 Daten senden und empfangen mit UDP
2.3 Eine LED mit UDP schalten
3.3 Temperaturanzeige
4.2 Autonomer Webserver
4.3 Webseite mit Buttons
4.4 Einschub: HTML-Crashkurs
4.5 RGB-LED über TCP steuern
....................................................................................... 1
4 4
5 5 54 5 5
4 4
4.7 GPIO-Control
4.8 Einschub: Vom Internet aus auf das Board zugreifen
ThingSpeak
.1 ThingSpeak .2 Twitch-Anzeige .3 Twitter-Alarmanlage
4 TalkB
.5 Cheerlights
Twitter-F
A Anhang
AT-Komman Pinout
10215-5 Lernpaket Internet of Things_02.indd 310215-5 Lernpaket Internet of Things_02.indd 3 19.04.2016 12:17:1219.04.2016 12:17:12
r mit TalkBack-Funktion
7 7
2 4
1
4
BEVOR ES LOSGEHT
Beim ersten Anschließen des IoT-WiFi-Boards (im Folgenden auch NanoESP genannt) kann es vorkommen, dass der Computer den erforder­lichen Treiber für den USB-to-Serial-Wandler nicht automatisch fi ndet. Ist dies der Fall, sollten Sie den Treiber von der Seite www.iot.fkainka.de/driver herunterladen und manuell installieren. In der Arduino-Software können Sie dann den Port und als Board Arduino Nano (Prozessor: Atmega328) auswählen. Danach sollte der Controller voll einsatzbereit sein.
Für die Arbeit mit dem seriellen Monitor müssen Sie ebenfalls Einstel­lungen vornehmen. Als Baudrate wird hier 19200Baud verwendet. Zum Senden von Befehlen müssen Sie außerdem die Option CRundNL neben dem Menü für die Baudrate auswählen.
10215-5 Lernpaket Internet of Things_02.indd 410215-5 Lernpaket Internet of Things_02.indd 4 19.04.2016 12:17:1719.04.2016 12:17:17
Die richtigen Einstellungen in der Arduino-Umgebung
Ich habe mit den Arduino-IDE-Versionen 1.6.5 und 1.6.6 gearbeitet. Ältere
ese
odu
.buch.cd
usa
.
Versionen können Probleme verursachen. Die aktuelle Arduino-IDE-Ver­sion fi nden Sie auf der Internetseite www.arduino.cc.
Bei allen Schwierigkeiten oder Problemen mit dem Board oder dem Lern­paket können Sie jederzeit auf der Interseite www.iot.fkainka.de Hilfe fi n- den. Auf dieser Seite fi nden Sie außerdem ein Forum, neue Nutzerprojek­te und auch alle hier vorgestellten Programme in der neuesten Version.
In dem Lernpaket befi ndet sich ein Steckboard, auf dem Sie den NanoESP, wie auf dem Bild unten gezeigt, stecken können. Dadurch bleibt der meiste Platz für Experimente, während das WLAN-Modul hin­ten über das Steckboard hinausragt. Das Micro-USB-Kabel kann dann, wie auf dem Bild im folgenden Abschnitt gezeigt, eingesteckt werden und stört nur minimal. Detailliertere Aufbaubilder fi nden Sie im jeweili­gen Kapitel.
Das IoT-WiFi-Board (NanoESP)
Das Hauptelement dieses Lernpakets ist das IoT-WiFi-Board (NanoESP). Wie man an der Platine recht gut erkennen kann, besteht das Board aus zwei Komponenten. Bei der linken Hälfte handelt es sich um ein Ardui­no-kompatibles Mikrocontrollersystem, das mit dem Arduino Nano ver­gleichbar ist. Der rechte Teil ist das WLAN-Modul mit der Bezeichnung ESP8266.
5
Zu di
m Pr
kt finden Sie unter
ww
Z
tzmaterial zum Download. Tragen Sie für dieses Produkt im Eingabefeld den Code 10215-5 ein
10215-5 Lernpaket Internet of Things_02.indd 510215-5 Lernpaket Internet of Things_02.indd 5 19.04.2016 12:17:1719.04.2016 12:17:17
6 | Bevor es losgeht
.
g
g
Diese beiden Komponenten kommunizieren über eine per Software gene-
ierte serielle Schnittstelle miteinander
Der NanoESP auf dem Steckboard
Das Pinlayout des Boards
uf dem Board gibt es viele verschiedene Elemente, wie z.B. die Pins, von
denen eini
e eine besondere Funktion haben, oder auch die LEDs, deren
Funktionen nicht immer auf den ersten Blick ersichtlich sind. Damit Sie
icht den Überblick verlieren, sind im folgenden Bild die wichtigsten
Funktionen und Bezeichnun
10215-5 Lernpaket Internet of Things_02.indd 610215-5 Lernpaket Internet of Things_02.indd 6 19.04.2016 12:17:1719.04.2016 12:17:17
en der einzelnen Elemente aufgeführt.
| Das IoT-WiFi-Board (NanoESP) 7
-
-
c
.
.
Die wichtigsten Pins
Das WLAN-Modul wird über sogenannte AT-Kommandos gesteuert. Dazu ist der Arduino-Teil des Boards über die Pins 11 und 12 mit dem WLAN-Mo
und Bezeichnungen des Boards
dul verbunden. Eine kleine Schaltung wandelt die 5-V-Pegel in kompatib le 3,3-V-Pegel um. Die Pins 11 und 12 sollten Sie also in eigenen Projekten
ht benutzen
ni
Weitere wichtige Hardwareeigenschaften des Boards fi nden Sie in der
nteren Tabelle kurz aufgelistet
10215-5 Lernpaket Internet of Things_02.indd 710215-5 Lernpaket Internet of Things_02.indd 7 19.04.2016 12:17:1719.04.2016 12:17:17
8 | Bevor es losgeht
-
)
B
B
)
davo
6
g
g
V
V
A
A
t
/g/n
P
22
k
s
U
ommu
über U
Technische Daten
Mikrocontroller: ATmega328 Flash-Speicher: 32 kB (davon 0,5 kB für den Bootloa
SRAM: 2 k EEPROM: 1 k
aktrate: 16 MHz
I/O-Pins: 20 (davon 2 für die Kommunikation
USB-to-Serial-Chip: CH340G
der
it dem WLAN-Modul
n PWM:
davon analo
e Eingänge: 6
Betriebsspannun
: 5
Empfohlene Eingangsspannung: 7 – 12
Maximaler Strom pro I/O-Pin: 40 m
Belastbarkeit des 3,3-V-Ausgangs: 50 m
WLAN-Modul: ESP8266 SPI-Flash 4 Mbi Betriebsspannung: 3,3 V WLAN-Standards: 802.11 b WLAN-Modi: Wi-Fi Direct (P2P), Soft-A Firmware: AT-Firmware Version 0. Sonstiges: Integrierter TCP/IP-Stac +19,5 dBm Ausgangsleistung im
02.11b-Modu Integrierte Low-Power-32-bit-CP K
nikation
ART
10215-5 Lernpaket Internet of Things_02.indd 810215-5 Lernpaket Internet of Things_02.indd 8 19.04.2016 12:17:1819.04.2016 12:17:18
| Das IoT-WiFi-Board (NanoESP) 9
-
e.
(
)
(
)
(
)
(
)
(
)
m
BAUTEILE IM LERNPAKET
Nachfolgend fi nden Sie eine Übersicht über die im Lernpaket enthalte nen Bauteil
1 IoT-WiFi-Board
1 Steckplatine
1m Schaltdraht
2 Taster
1 9-V-Clip
1 LED
1 RGB-LED
1 Widerstand 10 kOhm (Braun-Schwarz-Orange)
1 Widerstand 1 kOhm
1 Fototransistor
1 NTC 10 kOh
1 Piezo-Lautsprecher
1 Potenziometer 10 kOhm mit rotem Drehknopf
rot
NanoESP
4 Anschlussbeine
Braun-Schwarz-Rot
2 Anschlussbeine
10215-5 Lernpaket Internet of Things_02.indd 910215-5 Lernpaket Internet of Things_02.indd 9 19.04.2016 12:17:1819.04.2016 12:17:18
10
DAS MODUL
1
Programm­datei:
P01_ SoftwareSerial.ino
KENNENLERNEN
In diesem ersten Kapitel geht es um die grundsätzlichen Funktionen des WLAN-Moduls. Das Modul wird über sogenannte AT-Kommandos gesteu­ert. Alle hier verwendeten Beispielprogramme sowie Hilfe und weitere In­formationen fi nden Sie übrigens unter www.iot.fkainka.de
Am einfachsten ist es, Sie laden sich das komplette Zip-Verzeichnis her­unter und kopieren den entpackten Ordner komplett in Ihren Sketchord­ner. Dann können Sie aus der Arduino-Oberfl äche heraus alle Program­me nacheinander komfortabel öffnen.
1.1 | Grundlegende AT-Befehle
Einen ersten Eindruck von der Verwendung der AT-Befehle bekommt man am besten, indem man sie einfach ausprobiert. Deswegen werden Sie in diesem Abschnitt einige der grundlegenden Befehle des Moduls kennenlernen.
Öffnen Sie hierfür das Programm P01_SoftwareSerial in der Arduino-IDE. Es handelt sich um ein sehr simples Programm, das nichts weiter tut, als alle Daten, die über die serielle Hardwareschnittstelle des Mikrocontrol­lers empfangen werden, über die selbst defi nierte Softwareschnittstel­le an den ESP-Controller durchzureichen. Das Ganze funktioniert auch in umgekehrter Richtung. Wie man im Quelltext sehen kann, sind die beiden Anschlüsse der Softwareschnittstelle die Pins 11 und 12. Diese sollten in eigenen Projekten nicht als GPIO-Pins verwendet werden. Sie benötigen außerdem die SoftwareSerial-Library, die bei den meisten Ar­duino-Versionen schon vorinstalliert ist – falls nicht, sollten Sie die Li­brary über den Manager herunterladen.
10215-5 Lernpaket Internet of Things_02.indd 1010215-5 Lernpaket Internet of Things_02.indd 10 19.04.2016 12:17:1819.04.2016 12:17:18
Nachdem das Programm hochgeladen wurde, können Sie den seriellen Monitor der Arduino-Oberfl äche starten. Bevor es losgehen kann, müs­sen Sie noch zwei wichtige Einstellungen am Serial Monitor vornehmen, nämlich unten rechts in der Ecke die Baudrate auf 19200 stellen und in der Box links daneben die Einstellung CR und NL vornehmen.
Jetzt können Sie schon eine Meldung sehen, nämlich AT und ein paar
R
ST
Zeilen darunter OK. Das Kommando AT wurde vom Mikrocontroller an das ESP-Modul gesendet und das Modul hat mit OK geantwortet. Hieran kön­nen Sie erkennen, dass das WLAN-Modul funktioniert und einsatzbereit ist.
11
Terminal-Einstel­lungen: CR und NL und eine Baudrate von 19200
1.1.1 | Basis-Befehle
Einige grundlegende Befehle des Moduls können Sie nun testen, indem Sie einfach das Kommando eintippen und mit
[Enter] an das Modul sen-
den. Die Großschreibung des Befehls ist dabei von Bedeutung. Sie kön­nen Ihren ersten eigenen Befehl übermitteln, indem Sie
AT
in den seriellen Monitor eintippen und [Enter] drücken. Das hochgela­dene Programm reicht den Befehl an das ESP-Modul durch, das wieder­um mit AT und danach OK antwortet. Der nächste Befehl, den Sie testen können, lautet:
AT+GM
Mit diesem Befehl werden die aktuelle Firmware und die Versionsnum­mer ausgegeben.
Mit dem Befehl
AT+R
10215-5 Lernpaket Internet of Things_02.indd 1110215-5 Lernpaket Internet of Things_02.indd 11 19.04.2016 12:17:1819.04.2016 12:17:18
12 1 | Das Modul kennenlernen
das Modu
,
:
0
g
AT
senden,
AT
und dann
,
.
1
nnen Sie
unächst ein paar unleserliche Zeichen und am Ende
ass das Modul nun bereit ist. Ein weiterer Befehl lautet
TE
Mit ihm ist es möglich, das sogenannte Echo des Moduls zu deaktivieren. Das bedeutet, dass Sie das
ekommen, sondern nur die Antwort. Wenn Sie beispielsweise
mmt nicht erst
Gehversuche ist es aber ratsam
TE1
wieder zu aktivieren
l zurücksetzen. Sie sehen dann im Terminal
eady als Zeichen
esendete Kommando nicht zurückgesendet
K
sondern nur
das Echo mit
K zurück. Für Ihre ersten
Erste Versuche mit den AT-Befehlen
10215-5 Lernpaket Internet of Things_02.indd 1210215-5 Lernpaket Internet of Things_02.indd 12 19.04.2016 12:17:1819.04.2016 12:17:18
1.1 | Grundlegende AT-Befehle 13
-
g
-
?
?
E
handelt es sich übrigens um den
-
.
)
g
g
P
g
,
g
g
g
P
g
g
g
1.1.2 | WLAN-Befehle
it den folgenden WLAN-Kommandos können Sie die WLAN-Eigenschaf ten des Moduls verändern. Bei manchen Befehlen können Sie nicht nur einen Zustand festle
en, sondern auch den aktuellen Zustand erfragen.
ies geschieht, indem Sie direkt hinter dem Befehl ein Fragezeichen ein
ügen, z.B.
AT+CWMODE
Als Rückgabewert kommt im Regelfall
+CWMODE=2
efolgt von OK. Wenn Sie
AT+CWMODE=
eintippen, antwortet das Modul Ihnen mit den möglichen Parametern des
efehls, hier nämlich 1-3. Bei CWMOD efehl, mit dem Sie den WLAN-Modus festlegen können.
s gibt also drei Betriebsarten, die ich im Folgenden nacheinander erläu
ere
AT+CWMODE=2 – das Modul als Access Point (AP-Modus
m Auslieferzustand ist das Modul ein Access Point. Das bedeutet, dass Sie mit einem WLAN-fähi eine direkte Verbindun Sie einfach das offene WLAN mit dem Namen NanoES damit. Im Werkszustand ist kein Passwort ver kein Problem darstellt. Wenn Sie mit dem Modul verbunden sind Sie keine Verbindun einer ei
enen Verbindung zum Telefonnetz. Dieser WLAN-Modus ist aber
dennoch sinnvoll, wenn Sie beispielsweise ein sicheres, ab
etzwerk benötigen. Apropos Sicherheit: Es gibt auch die Möglichkeit, dem etzwerk ein Passwort zuzuteilen, und zwar über den Befehl:
AT+CWSA
s müssen hier noch Parameter angegeben werden, und zwar der Rei-
e nach und mit Komma getrennt:
henfol
der Name des Netzwerks in Anführun
das Passwort in Anführun
10215-5 Lernpaket Internet of Things_02.indd 1310215-5 Lernpaket Internet of Things_02.indd 13 19.04.2016 12:17:1919.04.2016 12:17:19
en Gerät, wie einem Smartphone oder einem PC,
mit dem Modul aufnehmen können. Dazu suchen
und verbinden sich
eben, sodass das Verbinden
haben
zum Internet, denn das Modul ist kein Router mit
eschlossenes
szeichen,
szeichen,
14 1 | Das Modul kennenlernen
(
g
g
3
als Bestätigung. Sollte ein
g
.
odu
.
1
die Channel ID
und der Verschlüsselun
Eine mö
Nach einer kurzen Zeit erscheint erscheinen, prüfen Sie noch einmal Ihre Ein
ungszeichen. Sollte dennoch ein ERROR erscheinen, prüfen Sie, ob der
Wenn alles funktioniert hat, können Sie sich mit einem WLAN-fähigen
önnen Sie mit IP- und MAC-Adresse über den Befehl
anzeigen lassen
liche Einstellung wäre:
T+CWSAP="MyNanoESP","MyPassword",5,
WMODE wirklich
rät mit dem Board verbinden. Alle mit dem M
T+CWLIF
beliebiger Wert zwischen 1 und 13),
smodus (Wert von 0-4).
ERROR
aben, vor allem die Anfüh-
ist
l verbundenen Geräte
Das Modul im Sta­tionsmodus. Die IP des verbundenen Rechners ist mar­kiert.
10215-5 Lernpaket Internet of Things_02.indd 1410215-5 Lernpaket Internet of Things_02.indd 14 19.04.2016 12:17:1919.04.2016 12:17:19
1.1 | Grundlegende AT-Befehle 15
das Modu
odus
g
-
.
abe
g
g
g
g
g
:
"
zurückgeben. Sie können übrigens die vom Router vergebene IP des
SR
AT+CWMODE=1 –
l im Stationsm
it dem Befehl
AT+CWMODE=1
setzen Sie das Modul in den Stationsmodus. Dieser Modus ermöglicht es
hnen, eine Verbindung zu Ihrem WLAN-Router aufzubauen. Dadurch ist das Modul auch mit dem Internet verbunden und hat viel mehr Mö
lich
keiten
Zuvor können Sie
AT+CWLAP
r mit dem Befehl
alle Netzwerke in Reichweite aufl isten lassen und somit überprüfen, ob
hr Netzwerk im Empfangsradius ist. Um eine Verbindung zu Ihrem Router aufbauen zu können, benöti
AT+CWJAP
en Sie den Befehl
ieser hat, ähnlich wie der CWSAP-Befehl, wichtige Parameter, nämlich den Namen des WLAN-Netzwerks (auch SSID beides erneut in Anführun Verbindun
saufbau zu einem zweiten Modul, das mit den im vorherigen
Abschnitt erläuterten Daten ein
AT+CWJAP="MyNanoESP","MyPassword
szeichen und durch ein Komma getrennt. Ein
estellt ist, sähe also so aus
enannt) und das Passwort,
er Verbindungsaufbau kann ein paar Sekunden dauern und sollte dann
oduls mit dem Befehl
AT+CIF
abrufen. Dies wird später wichtig sein, wenn Sie eine Verbindung zu dem TCP-Server des Moduls herstellen wollen. Mit dem Befehl
AT+CWQAP
können Sie die Verbindung zu Ihrem Router auch wieder trennen.
10215-5 Lernpaket Internet of Things_02.indd 1510215-5 Lernpaket Internet of Things_02.indd 15 19.04.2016 12:17:1919.04.2016 12:17:19
16 1 | Das Modul kennenlernen
g
g
,
ebseite
a.de
-
.
1
Das Board baut eine Verbindung zu einem zweiten NanoESP auf.
AT+CWMODE=3 – der duale Modus
Der dritte mö Er ermö Moduls sowohl im Stations- als auch im AP-Modus. Das bedeutet
en Geräte sowohl eine direkte WLAN-Verbindung mit dem Modul auf­auen oder das Modul über den Router als Zwischenstation erreichen. Ein raktischer Modus, z.B. wenn man ein internes Netz mit mehreren Modu-
en plant und dennoch ein Modul als Server dienen soll, der die Daten ins
Netz liefert. Aber dazu später mehr.
Befehlsübersicht im Anhang und auf der Webseite
Alle wichtigen Befehle fi nden Sie übrigens auch im Anhang und auf
r bereits erwähnten W
e, wie das Einstellen der Baudrate, wurden bewusst nicht aufgelis
et, da Sie damit das Modul unbrauchbar machen könnten
liche Modus der WLAN-Einstellung ist der duale Modus.
licht, wie der Name bereits vermuten lässt, das Betreiben des
es kön-
www.iot.fkaink
Manche Befeh-
10215-5 Lernpaket Internet of Things_02.indd 1610215-5 Lernpaket Internet of Things_02.indd 16 19.04.2016 12:17:1919.04.2016 12:17:19
1.2 | Automatische Konfi guration 17
-
-
,
g
g
g
acheinande
das ES
odul und ste
-
g
g
G
g
g
g
3
-
geg
g
m
-
.
n
geg
s
.
>
;
1.2 | Automatische Konfi guration
ie grundlegenden Befehle konnten Sie bereits manuell testen. In die sem Kapitel soll nun die Frage geklärt werden, wie diese Befehle auto matisch über den Controller bedient werden können. Außerdem lernen Sie einen weiteren Befehl kennen
mit dem Sie testen können, ob ein PC im Netzwerk oder ein Server im Internet erreichbar ist. In diesem Beispiel wird nämlich der Goo
P02_Goo
ein n
lePing werden die Vorgänge, die Sie im ersten Beispiel manuell
etippt haben, nun größtenteils automatisiert. Der Controller schickt
r Befehle an
le-Server angepingt. In dem Beispielprogramm
P-M
llt so u. a. die Verbin
ung zum WLAN her. Die verschieden langen Timeout-Zeiten geben dem
odul genügend Zeit zum Antworten.
evor das Programm aber richtig funktionieren kann, müssen Sie Ihre WLAN-Daten hinter #defi ne SSID des Pro
ramm-Quellcodes eintragen. Das Modul benötigt nämlich Zugan
nd #defi ne PASSWORD
leich zu Beginn
zum Internet, um seinen letzten Befehl ausführen zu können. Mit dem Befehl
AT+PIN
können andere Geräte im Netzwerk angepingt werden. Pingen bedeutet, dass man anfra der Goo
le-Server mit AT+PING="www.google.de" angepingt. Wenn eine Antwort zurückkommt, erscheint eine Erfol und die mit D
t, ob ein Rechner grundsätzlich erreichbar ist. Hier wird
smeldung im Serial Monitor
beschriftete LED, die am Pin D13es Boards angeschlos sen ist, wird aktiviert. Die erste Kommunikation mit dem Internet wäre dann
lückt.
Programm­datei:
P02_GooglePing.ino
Das Pro
ram
Im Folgenden werden wir die Funktionen des Programms schrittweise ana lysieren. Zu Beginn wird die Kommunikation mit dem Modul besprochen
Serielle Kommunikatio
Das Ganze funktioniert über die serielle Software-Schnittstelle, die mit
SoftwareSerial-Librarybereitgestellt wird. Beim Initialisieren müssen
außerdem die verwendeten Pins an
11 und 12
Pin
001include <SoftwareSerial.h 002oftwareSerial esp8266(11, 12)
10215-5 Lernpaket Internet of Things_02.indd 1710215-5 Lernpaket Internet of Things_02.indd 17 19.04.2016 12:17:1919.04.2016 12:17:19
eben werden, in diesem Fall die
Die Bezeichnung für die Instanz der Klasse Software­Serial heißt ab jetzt esp8266, genau wie das WLAN-Modul.
18 1 | Das Modul kennenlernen
g
oder
.
g
g
g
aber auch eine
g
()
e:
-
)
;
)
{
;
se
{
;
;
g
AT
und den
-
O
e
()-
-tion ei
c
g
r
Genau wie bei der normalen seriellen Schnittstelle können dann Bytes
anze Zeilen mit den Befehlen
oder
ertragen werden. Besonders praktisch sind auch die Befehle esp8266
1
Überprüfung, ob in der Antwort ERROR enthalten ist
fi nd und
estimmte Zeichenketten überprüft werden kann. Dadurch ist es recht einfach, die passende Antwort des Moduls abzufan eine erwartete Zeichenkette nicht auftaucht, kann es eine dauern, bis das Pro
sp8266.setTimeout
te Zeichenkette defi nieren werden, bei der die Suchfunktion ausstei
nd false als Rückgabewert liefert. Dies machen wir uns in der Funktion
sendCom
003 boolean sendCom(String command, char respond[] 004 005 esp8266.println(command) 006 if (esp8266.findUntil(respond, "ERROR")
008 return true 009 }
10 el
011
12 debug("ESP SEND ERROR: " + command) 013 return false 014 } 015 }
sp8266.fi ndUntil mit denen ein ankommender Stream auf
ramm weitergeht. Die Wartezeit (Timeout) wird durch
fi niert. Mit
zunutz
-------Controll ESP-------
ndUntil()nn
esp8266.println
en. Wenn allerdings
anze Weile
zwei-
t
Wenn Sie die Funktion aufrufen, müssen Sie also den Befehl und den erwarteten Rück erwarteten Rückgabewert tragen und schließlich gewartet, bis der erwartete Rückgabewert oder ein
R
ERR
W
Ni
vorher bekannten Wert. Deswe tion, die nur den Paramete
10215-5 Lernpaket Internet of Things_02.indd 1810215-5 Lernpaket Internet of Things_02.indd 18 19.04.2016 12:17:1919.04.2016 12:17:19
mpfangen wird. Ist die Erwartung erfüllt, gibt die Funktion den
rt
rueurück. Falls nicht, sendet das Modul über die
n ESP SEND ERROR
an leicht überprüfen kann, welcher Befehl die Probleme verursacht.
ht alle AT-Befehle haben einen eindeutigen oder einzeiligen Rückga-
ewert. Wird z.B. die IP-Adresse abgefragt, gibt es in der Regel keinen
abewert an die Funktion übergeben, z.B.
. Über println()ird das Kommando über
nd das gesendete Kommando zurück, sodass
en gibt es eine zweite
mmandenötigt und dann den gesamten
ebug
endCom()-Funk-
nk
1.2 | Automatische Konfi guration 19
eSeria
überlaufen.
)
2
;
();
5
suche
-
-
e
gesen-
)
2003
)
{
;
}
g
-
g
u-
.
1
-
{
)
{
empfangenen String zurückgibt. Der String sollte aber nicht zu lang sein,
nn der Buffer von
String sendCom(String command
00
esp8266.println(command) return esp8266.readString
00
ftwar
l
nn
Fehler
Beim Entwickeln von Programmen kommt es oft zu Fehlern und Kom plikationen. Damit man überhaupt eine Chance hat, gibt es zwei
ebug-Funktionen, die über einen Parameter ganz zu Beginn des Pro
ramms aktiviert oder deaktiviert werden.
#define DEBUG tru
Die erste Funktion bewirkt nichts weiter als eine vereinfachte Ausgabe von Text über die als Standard defi nierte serielle Schnittstelle. Wenn die
onstante
EBUG wahr ist, wird der Inhalt der Zeichenkette
sg
det.
001void debug(String Msg 00
if (DEBUG
004
Serial.println(Msg)
006
Die zweite Funktion ist ebenfalls schnell erklärt. Wird die Funktion
serialDebu
aufgerufen, geht das Programm in eine Dauerschleife über nd verhält sich von da ab wie das erste getestete SoftwareSerial-Pro ramm. Das heißt, dass alle Daten, die über den seriellen Monitor an den
Controller
esendet werden, direkt an das Modul weitergereicht werden nd andersherum. In einem Fehlerfall kann man also die Funktion aufr
fen und manuell Befehle senden, um zu testen, wo der Fehler ist
00
---Debug Functions--
002void serialDebug()
while (true
004
10215-5 Lernpaket Internet of Things_02.indd 1910215-5 Lernpaket Internet of Things_02.indd 19 19.04.2016 12:17:1919.04.2016 12:17:19
20 1 | Das Modul kennenlernen
)
;
())
;
g
oran die Fu
j
-
()
;
;
;
;
{
;
;
);
;
;
9
;
;
2
;
auf
ue
p
ebenfalls sofo
e
5 if (esp8266.available() 006 Serial.write(esp8266.read()) 007 if (Serial.available
1
008 esp8266.write(Serial.read())
}
10}
Konfi guration
Um die Pro
ramme allgemein übersichtlicher zu gestalten, wurden die
eisten Einstellungen ebenfalls in eigene Funktionen ausgelagert, allen
v
nktion
spConfi g in der die wichtigsten Parameter für das
eweilige Programm gesetzt werden.
---Config ESP8266--
oolean espConfig
003 004 boolean success = true 005 esp8266.setTimeout(5000) 006 success &= sendCom("AT+RST", "ready")
esp8266.setTimeout(1000)
008 009 if (configStation(SSID, PASSWORD))
10 success &= true 011 debug("WLAN Connected") 012 debug("My IP is:" 013 debug(sendCom("AT+CIFSR")) 014 } 015 else
16 {
17 success &= false 018 }
1
success &= sendCom("AT+CIPMODE=0", "OK")
021 success &= sendCom("AT+CIPMUX=0", "OK") 02 023 return success 024 }
10215-5 Lernpaket Internet of Things_02.indd 2010215-5 Lernpaket Internet of Things_02.indd 20 19.04.2016 12:17:1919.04.2016 12:17:19
Zu Beginn der Funktion wird zunächst die Variable
tr
esetzt, denn diese Variable wird nun mit verschiedenen Funktionen
Und-verknü
rt false zurückliefert, wird
ft. Das bedeutet, wenn auch nur eine der Funktionen den
rt false und di
1.2 | Automatische Konfi guration 21
g
g
-
g
g
8266.
g
.
ame
,
-
g
g-
-
g
-
ccess
-
)
;
;
;
;
;
;
E
und schließlich das Verbinden mit dem Netzwerk
g
-
g
eine
esamte Konfi guration ist gescheitert. Der erste AT-Befehl, der so auf
überprüft wird, ist der
Erfol
ramms ausgeführt wird, um sicherzugehen, dass vorherige Versu
Pro
t-Befehl, der fast immer zu Beginn des
he nicht noch das Modul beanspruchen. Es kann allerdings bis zu fünf
Sekunden dauern, bis das Modul die Meldun
en wird kurz vor der
we
endCom()-Funktion der Timeout für
eady zurücksendet. Des-
sp
ndUtil hochgesetzt. Nach dem Reset wird der Timeout wieder auf den
Standardwert von einer Sekunde
estellt
Was danach folgt, ist der Aufruf einer selbst defi nierten Funktion mit dem
n confi gStation(), die im nächsten Abschnitt besprochen wird. Sie
N dient dazu
n die Parameter
des Pro
das Modul mit Ihrem Heimnetzwerk zu verbinden. Dazu wer
ID und PASSWORD übergeben, die Sie zu Beginn
ramms eingetragen haben. War der Verbindungsaufbau erfol reich, werden erst die Erfolgsmeldung und schließlich auch die aktuel le IP des Moduls an den seriellen Monitor übertragen. Zum Schluss der Funktion werden noch Parameter hen werde. Zuletzt wird die Variable lich den Wert
rue behalten hat.
esetzt, auf die ich erst später einge
u
zurückgegeben, die hoffent
boolean configStation(String vSSID, String vPASSWORT
boolean success = true
004 success &= (sendCom("AT+CWMODE=1", "OK"))
esp8266.setTimeout(20000)
006 success &= (sendCom("AT+CWJAP=\"" + String(vSSID) +
"\",\"" + String(vPASSWORT) + "\"", "OK"))
007 esp8266.setTimeout(1000) 008 return success
Die Funktion confi gStation() wurde in der
spConfi g()-Funktion aufge-
rufen. Hier wird das Einstellen des WLAN-Modus auf Stationsmodus mit dem Befehl CWMOD
r den
bis die Verbindun
WJAP
Befehl vorgenommen. Es kann recht lange dauern,
aufgebaut wird, weswegen der Timeout hier kurzzei tig auf 20 Sekunden angehoben wird. Sollten Sie übrigens den dualen WLAN-Modus bevorzu
en, können Sie hier für
eintragen.
10215-5 Lernpaket Internet of Things_02.indd 2110215-5 Lernpaket Internet of Things_02.indd 21 19.04.2016 12:17:1919.04.2016 12:17:19
22 1 | Das Modul kennenlernen
)
2
;
;
,
;
7
;
g
g
g()
g
.
)
:
);
t
;
7
;
;
0
)
{
);
;
{
;
}
0021
r
boolean configAP(
00 003 boolean success = true
1
004
5 success &= (sendCom("AT+CWMODE=2", "OK"))
success &= (sendCom("AT+CWSAP=\"NanoESP\",\"\",5,0"
"OK"))
00 008 return success 009}
Die Funktion confi gAP() wird in diesem Beispiel nicht aufgerufen, soll aber dennoch kurz behandelt werden. Sie stellt sozusa
tück zu der
als Access Point ein
onfi gStation()-Funktion dar, denn hier wird das Modul
estellt. Ein langer Timeout ist hier nicht nötig, da das Modul den CWSAP-Befehl deutlich schneller verarbeiten kann. In späteren Versuchen wird dann in der espConfi
confi
Station() die
void setup(
onfi gAP()-Funktion aufgerufen
en das Gegen-
-Funktion statt
003 // Open serial communications and wait for port to
open
Serial.begin(19200
005 // set the data rate for the SoftwareSerial por 006 esp8266.begin(19200) 00 008 if (!espConfig()) serialDebug()
else debug("Config OK")
1 011 if (sendCom("AT+PING=\"www.google.de\"", "OK") 012 013 Serial.println("Ping OK" 014 digitalWrite(13, HIGH)
15 }
16 else
17 018 Serial.println("Ping Error")
19
2
22void loop() // run over and ove
10215-5 Lernpaket Internet of Things_02.indd 2210215-5 Lernpaket Internet of Things_02.indd 22 19.04.2016 12:17:1919.04.2016 12:17:19
1.3 | Erkennung eines Netzwerks 23
tor
;
-
()
g
st da
g
,
g
g
-
g
-
g
g
g
g
-
-
ingen.
-
g
g
.
ufbau können Sie de
baubilde
.
e
23{
024 //Start serial Debug Mode - Type Commandos over
rial Moni
025 serialDebug()
Die wichtigsten Funktionen, die Sie in fast jedem Programm fi nden wer den, sind damit behandelt. In den bekannten Arduino-Funktionen
etup
und loop() werden diese Funktionen nun verwendet. Zunächst werden allerdin Er
s die beiden seriellen Schnittstellen mit 19200 Baud initialisiert.
nn wird die Funktion espConfi g() aufgerufen. Im Fehlerfall wird
fort dieserialDebug()-Funktion gestartet. War alles in Ordnung, wird eine Erfol an Pin 13 Konfi wenn das Modul nicht an einem PC mit seriellem Monitor an
smeldung gesendet. In späteren Programmen wird die LED
die auf dem Board mit
3
arkiert ist, bei einer erfolgreichen
uration zusätzlich leuchten. Damit haben Sie auch ein Feedback,
eschlos sen ist. In diesem Versuch wird die LED allerdings für die Rückmeldun des Ping-Status benötigt. Die Abfrage erfolgt auch gleich in der nächs ten Zeile nach der Konfi guration. Es wird das AT+PING-Kommando mit der Goo Adresse auch eine IP-Adresse in ihrem lokalen Netzwerk abfra Erfol Als letzte Aktion sprin
le-Adresse als Parameter gesendet. Sie könnten anstelle dieser
sfall erscheint eine Meldung und die besagte LED
t das Programm in die
oop-Funktion, die ihrer
wird aktiviert.
en. Im
seits die serialDebug()-Funktion aufruft. Sie können also nach dem Pro
ramm weitere Befehle testen und so beispielsweise weitere Adressen
anp
1.3 | Erkennung eines Netzwerks
In diesem Kapitel geht es unter anderem zum ersten Mal um einen klei neren Hardwareaufbau. Ziel des Projekts ist eine Art Alarmanlage, die
iert, wenn ein bestimmtes Netzwerk in Reichweite kommt oder
rea
eschaltet wird
an
Es werden nur zwei Bauteile und etwas Draht verwendet. Den genauen A
n Auf
Benötigte Bauteil
x Steckplatine, 1 x NanoESP, 1 x Piezo, Schaltdraht
10215-5 Lernpaket Internet of Things_02.indd 2310215-5 Lernpaket Internet of Things_02.indd 23 19.04.2016 12:17:2019.04.2016 12:17:20
rn entnehmen
24 1 | Das Modul kennenlernen
-
:
()
2
;
;
()
9
;
11012
;
)
;
;
);
1
Anschluss des Pie­zo-Lautsprechers
Programm­datei:
P03_SSIDalarm.ino
Der Quelltext zu diesem Projekt unterscheidet sich vom vorherigen Ver
uch hauptsächlich in folgenden Funktionen
001void findSSID 00
3 esp8266.println("AT+CWLAP")
004 if (esp8266.findUntil(ToFindSSID,"OK")) alarm();
5 else debug("SSID not found!")
006 }
008 void alarm 00 010 debug("alarm!") 0
digitalWrite(LED_ALARM, HIGH)
013 014 for (int i; i <=30; i++ 015 { 016 tone(PIEZO, 400, 500) 017 delay(500) 018 tone(PIEZO, 800, 500
10215-5 Lernpaket Internet of Things_02.indd 2410215-5 Lernpaket Internet of Things_02.indd 24 19.04.2016 12:17:2019.04.2016 12:17:20
1.3 | Erkennung eines Netzwerks 25
;
}
1
;
g
g
-
anoESP
eichweite. Sie können aber e
dSS
g
-
19 delay(500) 020 02 022 digitalWrite(LED_ALARM, LOW)
Die Funktion fi ndSSID() wird ca. alle 30 Sekunden in der
erufen und sucht dann nach allen Netzwerken in der Umgebung.
auf Wenn das
esuchte Netzwerk gefunden wurde, wird die Funktion
oop-Routine
ausgelöst, die die LED D3einschaltet und einen Signalton am Piezo aus
ibt. In dem Beispielprogramm wird nach einem Netzwerk mit der SSID
N
in R des Pro
esucht, also im Grunde nach anderen NanoESP-Netzwerken
infach bei #defi ne ToFin
ID zu Beginn
ramms eine andere SSID eintragen. Dadurch können Sie bei
spielsweise überprüfen, wie weit Ihr WLAN-Netzwerk reicht.
10215-5 Lernpaket Internet of Things_02.indd 2510215-5 Lernpaket Internet of Things_02.indd 25 19.04.2016 12:17:2019.04.2016 12:17:20
26
UDP UND IP
2
In diesem Kapitel geht es um den grundsätzlichen Datenaustausch zwi­schen zwei Systemen über ein WLAN-Netzwerk. Dabei werden wir uns mit Themen wie IP, Ports und dem Protokoll UDP beschäftigen. Dazu müssen diese grundlegenden Begriffe zunächst erläutert werden.
Was ist eine IP-Adresse?
Eine IP-Adresse funktioniert wie eine Postadresse. Über sie kann ein Rechner im Netzwerk eindeutig identifi ziert und adressiert werden. Eine IP-Adresse nach dem noch geläufi gen IPv4-Standard sieht zum Beispiel folgendermaßen aus:
92.168.4.1
Es handelt sich um vier Zahlen oder genauer gesagt um vier Bytes. Das heißt also, dass der Wert einer Zahl maximal 255 sein kann. Grundsätz­lich gibt es lokale IP-Adressen, also IPs, die z.B. an die Rechner und Geräte in Ihrem Heimnetzwerk verteilt werden, und globale IPs.
10215-5 Lernpaket Internet of Things_02.indd 2610215-5 Lernpaket Internet of Things_02.indd 26 19.04.2016 12:17:2019.04.2016 12:17:20
Lokale IPs werden in der Regel von Ihrem Router verteilt. Sie fangen meist mit 192.168 an. Die danach folgende Zahl ist von Router zu Router unterschiedlich. Wenn der NanoESP als Access Point fungiert und sich Rechner in sein Netzwerk einklinken, bekommen die PCs eine Adresse, die mit 192.168.4. beginnt. Damit ist zugleich ein Subnetzwerk aufge­spannt. Fritz!Box-Router verteilen in der Regel lokale IP-Adressen nach dem Schema 192.168.178.X. Sie können Ihre IP herausfi nden, indem Sie beispielsweise in Windows in der Eingabeaufforderung (unter Start -> Programme -> Zubehör -> Eingabeaufforderung) den Befehl ipconfi g ein- geben. Es erscheint eine längere Liste, die auch den Punkt IPv4-Adresse mit Ihrer lokalen IP im Netzwerk enthält.
Globale IPs werden in der Regel vom Internetprovider vergeben. Da­bei handelt es sich beispielsweise um die Adresse, über die Ihr Router im weltweiten Netzwerk zu erreichen ist. Der Router spannt das lokale Netzwerk auf und verteilt die Daten an die Clients. Eine Möglichkeit, Ihre globale IP herauszufi nden, ist beispielsweise, die Internetseite http:// www.meine-aktuelle-ip.de/ aufzurufen. Auf der Seite werden zusätzlich
weitere von einem Webserver einsehbare Daten dargestellt. Sie sind also nicht so anonym im Internet wie Sie eventuell glauben.
Was ist ein Port?
In Analogie zur Postadresse könnte ein Port so etwas wie die Haustür in einem Mehrfamilienhaus sein. Ein Rechner mit einer eindeutigen IP kann über verschiedene Ports verschiedene Dienste zur Verfügung stellen. Sie können über die IP den Server erreichen, aber über den Port müssen Sie auch den zu verwendenden Dienst wählen. Dies kann z.B. der Port 20 für die FTP-Datenübertragung sein oder der Port 23 für eine Telnet-Ver­bindung. Sie können den Port in der Regel frei wählen, allerdings gibt es standardisierte Ports, die den Umgang mit Webanwendungen leichter machen. Eine Liste der standardisierten Ports fi nden Sie unter
https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports
Was ist UDP?
UDP ist die Kurzform von User Datagram Protocol. Es handelt sich um ein minimales, verbindungsloses Netzwerkprotokoll. Das heißt, im Grun­de ist es minimalistischer und einfacher als andere Internetprotokolle, wie z.B. TCP, mit dem wir uns später beschäftigen werden. Der Vergleich ist zu diesem Zeitpunkt noch nicht besonders einfach, aber Sie können sich Folgendes über die Eigenschaften des Protokolls merken:
27
UDP ist broadcastfähig.
Es fi ndet keine Überprüfung der Daten auf Richtigkeit und auch keine
Fehlerkorrektur statt.
Es gibt also auch keine Garantie, dass Daten erfolgreich übermittelt
wurden.
Es gibt außerdem keine Garantie dafür, dass Daten nicht unterwegs
verfälscht oder durch Dritte abgehört werden.
Es muss nicht erst eine Verbindung aufgebaut werden, sondern es ist
ein schneller Datenaustausch möglich.
Es gibt kaum Übertragungsverzögerungsschwankungen.
Das Format eignet sich z.B. für VoIP (Voice over IP – also Telefonieren
über das Internet).
10215-5 Lernpaket Internet of Things_02.indd 2710215-5 Lernpaket Internet of Things_02.indd 27 19.04.2016 12:17:2019.04.2016 12:17:20
28 2 | UDP und IP
g
-
g
m
,
-
g
von Dan Nagle verwendet, das Sie unter dem
:
/
,
g
F
ccess Po
esse an.
Sie
der
Das sind erstmal die wichtigsten Grundlagen zu den Begriffen der fol-
enden Projekte. Man könnte das Thema noch um einiges tiefer behan­eln und an geeigneter Stelle werden noch weitere Informationen folgen.
2
Doch zunächst zum praktischen Teil.
2.1 | Daten zwischen Board und PC mit UDP austauschen
In diesem ersten Projekt zum Thema UDP werden Daten zwischen Board
nd PC über das WLAN ausgetauscht. Voraussetzung dafür ist, dass Ihr Rechner über einen WLAN-Adapter verfü te sorgt für das erfolgreiche Empfangen der Nachrichten. Ein besonderer Hardwareaufbau ist in diesem Versuch nicht nöti
t. Ein Programm auf der PC-Sei
.
Programm­datei:
P04_UDPBasics.ino
as Program
Wenn Sie das Programm wird der Controller als Access Point konfi guriert und Sie können ein offe
es Netzwerk mit dem Namen NanoESP fi nden. Bevor Sie sich allerdings
it dem Netzwerk verbinden, sollten Sie zunächst ein Programm für den
PC aus dem Internet downloaden. Bei meinen Versuchen habe ich das
ramm
Pro folgenden Link downloaden können
ttps://packetsender.com
Nach dem Laden und Installieren des Programms können Sie Ihren PC
it dem offenen Netzwerk des NanoESP verbinden. Achten Sie darauf
dass die Firewall das Netzwerk als Heimnetzwerk erkennt, damit keine
eblockt werden. Ihr Rechner sollte nun die IP 192.168.4.2 bekom-
Daten
en haben. Sie können dies überprüfen, indem Sie den AT-Befehl
T+CWLI
ber den seriellen Monitor an das Modul senden. Dieser Befehl zeigt alle
it dem A
Nun starten
rver Port
int verbundenen Rechner mit IP und MAC-Adr
ket Sen
nd klicken die Checkbox Enable UDP Server
4_UDPBasics.ino auf den Controller laden
stellen unter
ettings -> Network
UDP
n. In der
10215-5 Lernpaket Internet of Things_02.indd 2810215-5 Lernpaket Internet of Things_02.indd 28 19.04.2016 12:17:2019.04.2016 12:17:20
2.1 | Daten zwischen Board und PC mit UDP austauschen 29
:90
.
g
-
,
Regel sollte unten links dann
DP
tehen. Falls nicht, müssen Sie die
ftware einmal neu starten
Das Programm auf dem Rechner dient nun als UDP-Server, während der Controller als UDP-Client ein
estellt ist. Im UDP-Protokoll ist die Unter
scheidung Client/Server nicht eindeutig, aber in diesem Fall bedeutet
dass Sie mit dem Controller Daten an Ihren Rechner schicken.
dies
Die richtigen Ein­stellungen im Programm Packet Sender
10215-5 Lernpaket Internet of Things_02.indd 2910215-5 Lernpaket Internet of Things_02.indd 29 19.04.2016 12:17:2019.04.2016 12:17:20
30 2 | UDP und IP
7
für die Anzahl der zu sendenden Zeichen. Es erscheint
-
]
geg
g
.
wechseln und dort unter
llo
2
e
Die Nachricht wurde erfolgreich übertragen.
Um Daten zu senden, verwenden Sie den Befehl:
T+CIPSEND=
Dabei steht die das Zeichen > als Rückgabewert. Dies bedeutet, dass Sie nun Ihre Nach
icht übermitteln können. Tippen Sie Hello ein und bestätigen Sie wie­der mit obwohl Sie nur fünf Zeichen ein
den, also zwei Zeichen mehr, die Sie in Ihre Nachrichtenlän
ieren müssen
Enter
ach Ihrer Eingabe noch
Als Rückgabewert sendet das Modul
eben haben. Das liegt daran, dass
arriage Return und
ew Line mitgesendet wer-
END OK
und das
e einkalku-
Wenn Sie wieder zum
chauen, können Sie den Eingang der Nachricht sehen. In der ASCII-An­icht sehen Sie sogar die beiden mitgesendeten Zeichen, repräsentiert
und
durch
10215-5 Lernpaket Internet of Things_02.indd 3010215-5 Lernpaket Internet of Things_02.indd 30 19.04.2016 12:17:2019.04.2016 12:17:20
n
Traffi c Log
Loading...
+ 70 hidden pages