Benutzer-Werkzeuge

Webseiten-Werkzeuge


techniken:wifly

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
techniken:wifly [2015/02/12 14:07]
fbonowski
techniken:wifly [2016/02/03 12:27] (aktuell)
fbonowski [Direkte Datenverbindung zwischen Processing und Arduino]
Zeile 22: Zeile 22:
  
 Der "​incoming"​ Port des Empfängers muss als "​outgoing"​ Port des Absenders eingetragen werden, damit eine Verbindung zu Stande kommt. Der "​incoming"​ Port des Empfängers muss als "​outgoing"​ Port des Absenders eingetragen werden, damit eine Verbindung zu Stande kommt.
 +==== TCP vs. UDP ====
 +Ganz kurz: 
 +
 +[[http://​de.wikipedia.org/​wiki/​Transmission_Control_Protocol|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. Allerdings muss ein Programm dafür Mechanismen enthalten, mit Verbindungsabbrüchen umzugehen und diese ggf. wiederherzustellen.
 +
 +Im Gegensatz dazu ist [[http://​de.wikipedia.org/​wiki/​User_Datagram_Protocol|UDP]] //​verbindungslos//​ und ohne Fehlerkorrekturmechanismen,​ d.h. Daten werden an eine Adresse geschickt, ohne dass vorher eine Verbindung aufgebaut werden muss. Dafür gibt es auch keine Automatik, die sich darum kümmert, verlorengegangene Pakete neu zu versenden.
 +
 +Die WiFly unterstützt beide Protokolle, OSC (siehe unten) läuft üblicherweise über UDP.
 +
 ===== Die WiFly im Netzwerk ===== ===== Die WiFly im Netzwerk =====
 Der Funktionsumfang der Wifly-Module ist leider recht beschränkt,​ aber für für viele Anwendungen ausreichend. Der Funktionsumfang der Wifly-Module ist leider recht beschränkt,​ aber für für viele Anwendungen ausreichend.
  
-Im UDP-Modus - der in unserem Setup-Beispiel eingestellt ist - lauscht die WiFly auf einem vorgegebenen Port auf Paketeund gibt deren Inhalt unverzüglich über ihre serielle Schnittstelle aus.+Die WiFly lauscht ​auf einem vorgegebenen Port auf Pakete und gibt deren Inhalt unverzüglich über ihre serielle Schnittstelle aus.
  
 Das bedeutet: Das bedeutet:
Zeile 32: Zeile 41:
   * Welche Daten zu einem Paket gehören, ist (bestenfalls) dadurch erkennbar, dass davor oder danach keine Daten kamen - wenn zwei Pakete schnell hintereinander ankommen garnicht.   * Welche Daten zu einem Paket gehören, ist (bestenfalls) dadurch erkennbar, dass davor oder danach keine Daten kamen - wenn zwei Pakete schnell hintereinander ankommen garnicht.
  
-Das bedeutet+...Woraus wiederum folgt
-  * Wenn ihr mehrere Absender unterscheiden wollt, müsst ihr euch dazu etwas eigenes ​einfallen lassen +  * Wenn ihr mehrere Absender unterscheiden wollt, müsst ihr euch dazu etwas Eigenes ​einfallen lassen. 
-  * Ihr habt keine Garantie, dass keine Daten verloren gehen, während ​ihr "nicht hinhört"​. Insbesondere müsst ihr dafür sorgen, dass das sendende Programm nicht schneller sendet, als ihr abholen könnt.+  * Ihr habt keine Garantie, dass keine Daten verloren gehen, während ​euer Programm ​"nicht hinhört"​. Insbesondere müsst ihr dafür sorgen, dass das sendende Programm nicht schneller sendet, als ihr abholen könnt.
   * Protokolle, die ein UDP-paket als eine abgeschlossene Einheit verwenden (wie das gleich beschriebene OSC) funktionieren nur dann einigermaßen zuverlässig,​ wenn das sendende Programm zwischen zwei gesendeten Paketen eine Pause von einigen 10 Millisekunden einlegt.   * Protokolle, die ein UDP-paket als eine abgeschlossene Einheit verwenden (wie das gleich beschriebene OSC) funktionieren nur dann einigermaßen zuverlässig,​ wenn das sendende Programm zwischen zwei gesendeten Paketen eine Pause von einigen 10 Millisekunden einlegt.
  
 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. 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.
  
 +===== Direkte Datenverbindung zwischen Processing und Arduino =====
 +Java bringt schon alles mit, was nötig ist, um mit wenigen Zeilen Code eine TCP-Verbindung mit der WiFly/dem Arduino herzustellen.
  
-===== Daten schicken aus Processing ​===== +Beispielcode für Processing mit Kommentaren gibt es hier: [[https://​github.com/​Zapalot/​simpleTcp/​blob/​master/​simpleTcp.pde]]
-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 Netzwerkunter Processing gibt es hier: +Das passende Arduino Programm ​(für eine fertig Konfigutierte Wifly) hier: [[https://github.com/Zapalot/SoftSerialRelay]] 
-[[http://www.sojamo.de/libraries/​oscP5/]]+===== OpenSoundControl (OSC) ===== 
 +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.
  
-Damit der Code aus den Beispielen funktioniert,​ müssend dort noch die IP Adresse ​und der Port der Wifly eingetragen werdendamit die Nachrichten auch an den richtigen Empfänger kommen...+Wie ihr OSC in Processing ​und Arduino nutzen könnterfahrt ihr in einem [[techniken:​osc|separaten Artikel]]...
  
  
techniken/wifly.1423746448.txt.gz · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)