Dies ist eine alte Version des Dokuments!
Um mit dem Arduino ins WLAN zu kommen, brauchen wir zusätzliche Hardware. Die WLAN-Module, die wir im Kurs haben, basieren auf der Roving Networks Wifly. Die Module enthalten einen eigenen Prozessor, der sich um die Netzwerkkommunikation kümmert, und kommunizieren eine Serielle Schnittstelle mit dem Arduino.
Grob verkürzt:
Im Netzwerk werden Daten in Pakete verpackt, die eine Absender- und Zieladresse haben. Die Zieladresse muss stimmen, damit die Pakete auch ankommen.
Diese IP-Adressen in einem Heimnetzwerk/WLAN werden meist automatisch vom WLAN-Router an die darin vorhandenen Geräte vergeben (DHCP) und können sich ändern, wenn sie nicht fest eingestellt wurden.
Eine typische IP-Adresse in unserem Kurs-WLAN „wally“ ist z.B. 192.168.0.104
.
Damit Daten, die ihr von eurem PC aus an den Arduino (oder umgekehrt) schickt, auch ankommen, müsst ihr daher im Programm des Absenders die Adresse des Empfängers ('target', 'outgoing', oder ähnlich) eintragen.
Wie die aktuelle IP-Adresse eurer WiFly lautet, seht ihr in de Ausgabe des Konfigurationsprogramms aus dem vorherigen Abschnitt. Wie die IP eures Laptops lautet, findet ihr je nach Betriebsystem unterschiedlich heraus. Bemüht dazu eine Suchmaschine eurer Wahl…
Damit mehrere Anwendungen, die auf einem Netzwerkgerät (mit einer IP-Adresse) laufen, nur die jeweils für sie bestimmten Daten bekommen, verwendet jede Anwendung eine eigene „Untermieteradresse, die Port genannt wird. Eine Anwendung kann ihren Port prinzipiell frei wählen, es gibt jedoch einige „standard“-Ports, die üblicherweise für bestimmt Zwecke verwendet werden.
Der „incoming“ Port des Empfängers muss als „outgoing“ Port des Absenders eingetragen werden, damit eine Verbindung zu Stande kommt.
Ganz kurz:
TCP stellt zunächst Verbindung zwischen zwei Endpunkten einer Netzverbindung, über die danach Daten ausgetauscht werden können. Dabei vermeidet es im Hintergrund automatisch Datenverluste und Netzwerküberlastungen.
Im Gegensatz dazu ist UDP verbindungslos und ohne Fehlerkorrekturmechanismen, d.h. Daten werden an eine Adresse geschickt, ohne dass vorher eine Verbindung aufgebaut werden muss, und nichts verhindert, dass etwas verloren geht.
Die WiFly unterstützt beide Protokolle, OSC (siehe unten) läuft üblicherweise über UDP.
Der Funktionsumfang der Wifly-Module ist leider recht beschränkt, aber für für viele Anwendungen ausreichend.
Die WiFly lauscht auf einem vorgegebenen Port auf Pakete und gibt deren Inhalt unverzüglich über ihre serielle Schnittstelle aus.
Das bedeutet:
Das bedeutet:
Da eine einfache Serielle Verbindung im Grunde die gleichen Einschränkungen hat, ist es trotzdem sehr gut möglich (auf der Arduino Seite nach der ersten Konfiguration der Wifly sogar ohne irgendwelche Anpassungen des Programms), eine direkte Kommunikation über eine Serielle Schnittstelle durch eine WLAN-Verbindung zu ersetzen.
Eine sehr bequeme Möglichkeit, Daten mit dem Arduino auszutauschen ist das OSC-Protokoll, welches ursprünglich für die Steuerung von elektronischen Musikinstrumenten entwickelt wurde.
Eine Library zum verschicken von OSC-Nachrichten (über WLAN oder Netzwerk) unter Processing gibt es hier: http://www.sojamo.de/libraries/oscP5/
Damit der Code aus den Beispielen funktioniert, müssend dort noch die IP Adresse und der Port der Wifly eingetragen werden, damit die Nachrichten auch an den richtigen Empfänger kommen…