Auf dieser Seite berichte ich darüber wie ich zwei Arduino-Duemilanove-Boards mit XBee-Shields miteinander kommunizieren lasse. Die XBee-Arduino-Shields kosteten inklusive XBee Series 2 Funk-Modul je 46,41€ . Gekauft habe ich sie in Berlin bei SEGOR-electronics GmbH (www.segor.de).
Zu Beginn müssen die Arduino-Boards vorbereitet werden – Sie werden mit einer Drahtbrücke in den Reset-Modus versetzt (gelbe Brücke zwischen „Reset“ und „GND“). Auf den XBee-Shields werden beide Jumper auf „USB“ gesteckt. Durch diese Änderungen nutzen wird das Arduino-Board quasi als Serial-to-USB-Adapter.
Wenn wir die Module nun zusammen stecken und mit dem Computer verbinden haben wir direkten Zugriff auf die XBee-Module.
Als nächstes müssen die Funkmodule konfiguriert werden. Dies kann man auch mit entsprechenden Befehlen im Terminal machen, ich habe allerdings die Software vom Hersteller heruntergeladen (Link), installiert und nach Updates suchen lassen. Nach dem Setup öffnet man die Anwendung am besten gleich zweimal um die Einstellungen beider Boards nebeneinander zu sehen:
Ein Klick auf „Test / Query“ liefert bei beiden Modulen eine erfolgreiche Kommunikation:
Als nächstes wechseln wir auf die Registerkarte „Modem Configuration“. Dort klicken wir auf „Read“ um die Werkseinstellungen der Module einzulesen. Interessant sind nun die Einträge „SH“, „SL“, „DH“ und „DL“ unter der Rubrik „Addressing“.
So wie ich die englische Anleitung verstanden habe stellen wir nun die Adressen des jeweils anderen Moduls als „Destination Address“ ein. Also zum Beispiel beim Modul links unter „Destination Address Low“ den Wert „Serial Numer Low“ vom rechten Modul und umgekehrt. Die „Serial Number High“ ist bei beiden Modulen identisch. Hat man die Werte nun entsprechend eingestellt werden sie mit einem Klick auf die Schaltfläche „Write“ übertragen und abgespeichert.
In einem englischen HowTo wurden jetzt noch viel mehr Dinge verändert. Andere Einstellung waren bei mir jedoch nicht notwendig. Ich bin anschließend sofort auf die Schaltfläche „Range Test“ gegangen und habe bei beiden Programmen „Start“ gedrückt:
Wie man sehen kann funktioniert die bidirektionale Verbindung via Funk! Ich war an dieser Stelle total euphorisiert und habe anschließend über die Schaltfläche „Terminal“ eigene Zeichen gesendet. Klappt alles wunderbar.
Möchte man nun Daten von einem Programm welches auf dem Arduino-Board läuft seriell ausgeben und über Funk senden (Sender) muss zunächst die Drahtbrücke heraus genommen und die beiden Jumper auf die Stellung „XBee“ zurück gesteckt werden. Das zweite Board (der Empfänger) kann dann so bleiben. Es verbindet sich automatisch mit dem Sender und gibt die Daten über das USB-Kabel aus.
Je nach Anwendung steht einem nun auch die Funkübertragung via XBee am Arduino zur Verfügung!
Viel Spaß beim ausprobieren!