10215-5 Lernpaket Internet of Things_02.indd 310215-5 Lernpaket Internet of Things_02.indd 319.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 erforderlichen 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 Einstellungen vornehmen. Als Baudrate wird hier 19200Baud verwendet. Zum
Senden von Befehlen müssen Sie außerdem die Option CRundNL 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 419.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-Version fi nden Sie auf der Internetseite www.arduino.cc.
Bei allen Schwierigkeiten oder Problemen mit dem Board oder dem Lernpaket 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 Nutzerprojekte 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 hinten ü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 jeweiligen 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 Arduino-kompatibles Mikrocontrollersystem, das mit dem Arduino Nano vergleichbar 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 519.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 619.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 719.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 819.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
1m 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 919.04.2016 12:17:1819.04.2016 12:17:18
10
DAS MODUL
1
Programmdatei:
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 gesteuert. Alle hier verwendeten Beispielprogramme sowie Hilfe und weitere Informationen fi nden Sie übrigens unter www.iot.fkainka.de
Am einfachsten ist es, Sie laden sich das komplette Zip-Verzeichnis herunter und kopieren den entpackten Ordner komplett in Ihren Sketchordner. Dann können Sie aus der Arduino-Oberfl äche heraus alle Programme 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 Mikrocontrollers empfangen werden, über die selbst defi nierte Softwareschnittstelle 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 Arduino-Versionen schon vorinstalliert ist – falls nicht, sollten Sie die Library über den Manager herunterladen.
10215-5 Lernpaket Internet of Things_02.indd 1010215-5 Lernpaket Internet of Things_02.indd 1019.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üssen 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önnen Sie erkennen, dass das WLAN-Modul funktioniert und einsatzbereit
ist.
11
Terminal-Einstellungen: 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önnen Ihren ersten eigenen Befehl übermitteln, indem Sie
AT
in den seriellen Monitor eintippen und [Enter] drücken. Das hochgeladene Programm reicht den Befehl an das ESP-Modul durch, das wiederum 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 Versionsnummer ausgegeben.
Mit dem Befehl
AT+R
10215-5 Lernpaket Internet of Things_02.indd 1110215-5 Lernpaket Internet of Things_02.indd 1119.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 1219.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 1319.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 Stationsmodus. Die IP
des verbundenen
Rechners ist markiert.
10215-5 Lernpaket Internet of Things_02.indd 1410215-5 Lernpaket Internet of Things_02.indd 1419.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 1519.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 aufauen 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 1619.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.
Programmdatei:
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
10215-5 Lernpaket Internet of Things_02.indd 1710215-5 Lernpaket Internet of Things_02.indd 1719.04.2016 12:17:1919.04.2016 12:17:19
eben werden, in diesem Fall die
Die Bezeichnung
für die Instanz der
Klasse SoftwareSerial 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
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 1819.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,
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 1919.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
10215-5 Lernpaket Internet of Things_02.indd 2010215-5 Lernpaket Internet of Things_02.indd 2019.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
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()
10215-5 Lernpaket Internet of Things_02.indd 2210215-5 Lernpaket Internet of Things_02.indd 2219.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 2319.04.2016 12:17:2019.04.2016 12:17:20
rn entnehmen
24 1 | Das Modul kennenlernen
-
:
()
2
;
;
()
9
;
11012
;
)
;
;
);
1
Anschluss des Piezo-Lautsprechers
Programmdatei:
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 2419.04.2016 12:17:2019.04.2016 12:17:20
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 2519.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 zwischen 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ätzlich 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 2619.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 aufgespannt. 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. Dabei 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-Verbindung. 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
UDP ist die Kurzform von User Datagram Protocol. Es handelt sich um
ein minimales, verbindungsloses Netzwerkprotokoll. Das heißt, im Grunde 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 2719.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 behaneln 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
.
Programmdatei:
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 2819.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 Einstellungen im
Programm Packet
Sender
10215-5 Lernpaket Internet of Things_02.indd 2910215-5 Lernpaket Internet of Things_02.indd 2919.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 wieder 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-Anicht 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 3019.04.2016 12:17:2019.04.2016 12:17:20
n
Traffi c Log
Loading...
+ 70 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.