This is an old revision of the document! Table of ContentsWifi / WLan Kommunikation mit ArduinoIm folgenden zeigen wir anhand von Beispielen verschiedener Module, wie ein Arduino über ein Wireless LAN kommunizieren kann. Es existieren eine Vielzahl von Modulen, die eine WLan Anbindung für Arduino ermöglichen. RN-XV WiFly ModulAls erstes haben wir uns das RN-XV WiFly Modul von Roving Networks vorgenommen, dieses bietet einiges an Funktionalität für den Preis: Konfiguration WiFly ModulDas Modul kommt vorteilhafterweise gleich mit einer integrierten Antenne und ist in jedem XBee Sockel einsetzbar. Um das Modul zu konfigurieren wird eine serielle Verbindungen mit z.B. einem Foca oder UartSBee eingesetzt. Natürlich geht das auch mit Shields die eine direkte Kommunikation mit dem XBee Modul erlauben, wie z.B. dem Itead XBee Shield. Die Konfiguration selbst geschieht mit einfachen Kommandos, welche über die serielle Schnittstelle abgesetzt werden. Es gilt dabei zu beachten, dass das WiFly Modul zwei exklusive Betriebsmodi für seine Schnittselle kennt:
Nach dem Start befindet sich das WiFly im data mode, zum Umschalten in den command mode wird standardmässig folgende Zeichenfolge gesendet (konfigurierbar): $$$ Dabei sollte nach dem letzten $-Zeichen für min. 250ms kein anderes Zeichen gesendet werden, da die Drahtlos-Fliege dies sonst als Teil eines zu übermittelnden Datenpakets ansieht und nicht in den command mode wechselt. Ist der Wechsel in den command mode erfolgreich, quittiert das die Fliege mit einem Prompt der die Firmware Version enthält: <2.32> Standardmässig ist das WiFly Modul auf 9600 (8N1) eingestellt, dies kann jedoch im Konfigurationsmodus ebenfalls geändert werden. Ist die Verbindung mit einem Terminalprogramm (Achtung: der Serial Monitor von Arduino eignet sich dazu NICHT) erstellt, und mit $$$ in den command mode gewechselt, kann ein Modul mit z.B. folgenden Befehlen einfach an eine WPA2-PSK gesicherters WLan angebunden werden: Erfolgreiche Kommandos werden vom Modul mit dem String AOK beantwortet. set wlan ssid IHRE_WLAN-SSID set wlan phrase Ihr-WPA2-preshared_Key set wlan rate 0 set ip dhcp 1 set comm idletimer 3 set ip host 10.10.200.3 set ip remote 8000 join IHRE_WLAN-SSID Jedes Kommando sollte jeweils mit AOK quittiert werden, dann wurde dies erfolgreich ausgeführt, d.h. das sieht dann etwa so aus im Terminal: <2.32> set wlan ssid IHRE_WLAN-SSID AOK <2.32> set wlan phrase Ihr-WPA2-preshared_key AOK <2.32> set wlan rate 0 AOK <2.32> set ip dhcp 1 AOK <2.32> set comm idletimer 3 AOK <2.32> set ip host 10.10.200.3 AOK <2.32> set ip remote 8000 AOK <2.32> join IHRE_WLAN-SSID DeAuth Auto-Assoc IHRE_WLAN-SSID chan=3 mode=WPA2 SCAN OK Joining IHRE_WLAN-SSID now.. <2.32> Associated! DHCP: Start DHCP in 15ms, lease=1200s IF=UP DHCP=ON IP=10.10.200.139:2000 NM=255.255.255.0 GW=10.10.200.1 <2.32> Erklärungen zur KonfigurationDas Modul ist nun am Netzwerk angemeldet und hat eine IP-Adresse vom DHCP Server bezogen (10.10.200.139). Das WiFly hört auf Port tcp/2000 und verbindet sich bei Erhalt des open-Befehls mit dem Server bei 10.10.200.3 auf Port tcp/8000. Der Befehl set comm idletimer 3 bewirkt, dass das Modul offene TCP-Verbindungen nach 3s ohne Datenverkehr wieder schliesst und damit für neue Verbindungen bereit ist. Mit dem Befehl set wlan rate 0 wir die Datenrate auf 1Mbit/s gesetzt, dies ausreichend für die meisten Zwecke und erhöht die Zuverlässigkeit/Reichweite des Moduls. Mehr Informationen zu den Konfigurationsmöglichkeiten finden Sie im aktuellen WiFly User Manual. Konfiguration speichernWichtig: Die Konfiguration ist nun noch nicht auf dem WiFly Modul dauerhaft gespeichert, dies geschieht erst mit dem Kommando save: <2.32> save AOK Es ist auch möglich, die Konfiguration unter einem eigenen Namen zu speichern und diese wiederum mit dem Befehl load <config-name> zu laden: <2.32> save HOMENET AOK <2.32> load HOMENET AOK Factory ResetUm die Default Werte nach Auslieferung des Moduls wieder herzustellen kann der Befehl factory RESET verwendet werden. Konfiguration des WiFly Moduls aus dem Arduino SketchManchmal will man vermeiden des Modul je wieder ausbauen zu müssen nur weil z.B. das WLAN Passwort geändert hat. In so einem Fall kann man mit einigen Tricks das WiFly Modul auch über Software Serial beim Start konfigurieren. FallstrickeIn unseren Tests hat sich gezeigt, dass bei der Verwendung von SoftwareSerial bei 9600 immer wieder Zeichen verloren gehen und dies einen zuverlässigen Start verunmöglicht. Mit der AltSoftSerial von PJRC dagegen hatten wir sofort sehr gute Resultate und nach etwas Feintuning der Delays nun sogar äusserst zuverlässigen Betrieb mit Adhoc Konfiguration aus dem Arduino Sketch. Einziger Nachteil dabei ist, dass die zu verwendenden Pins fest vorgegeben sind (TX: 9, RX: 8) und mit der Verwendung der Library kein PWM mehr auf Pin 10 zur Verfügung steht. BeispielcodeKonfiguration WiFly Moduls aus der setup() Funktion heraus: # Konfiguration eines WiFly Moduls 'on-the-fly' # 2013 boxtec internet appliances #include <AltSoftSerial.h> // TX: 9, RX: 8, Unusable PWM: 10 // see http://www.pjrc.com/teensy/td_libs_AltSoftSerial.html #define CMD_DELAY 540 #define ESC_DELAY 685 AltSoftSerial mySP; void setup() { mySP.begin(9600); delay(CMD_DELAY); sendESC("$$$", ESC_DELAY); sendCMD("reboot",1600); sendCMD("factory RESET", 1800); sendESC("$$$", ESC_DELAY); sendCMD("set wlan rate 0", CMD_DELAY); sendCMD("set wlan ssid IHRE-WLAN-ID", CMD_DELAY); sendCMD("set wlan phrase Ihr-WLAN-Passw0rt", CMD_DELAY); sendCMD("set ip dhcp 1", CMD_DELAY); sendCMD("set comm idletimer 1", CMD_DELAY); sendCMD("set comm remote 0", CMD_DELAY); sendCMD("set comm match 13", CMD_DELAY); sendCMD("set ip host 192.68.1.100", CMD_DELAY); sendCMD("set ip remote 8000", CMD_DELAY); sendCMD("join IHRE-WLAN-ID", 6000); sendCMD("exit",100); } void loop() { // } void sendESC(char esc[], int _delay) { mySP.print(esc); delay(_delay); } void sendCMD(char cmd[], int _delay) { long _wait = 0; mySP.println(cmd); delay(1); } Praktische Anwendung des WiFly mit ArduinoWir bauen uns einen Kontroller welche in der Garagenbox angebracht wird, Ziele sind folgende:
Unser kleines Projekt umfasst:
|
|
Letzte Aktualisierung: © boxtec internet appliances · the better security products |