Mit XBee-Modulen bauen Sie relativ unkompliziert Funknetzwerke aus mehreren Sensoren auf, die ein Raspberry Pi miteinander verknüpft.
Funksensoren gehören in der Heimautomation längst zum Alltag. Meist funken jedoch alle auf einer Frequenz durcheinander, und jeder muss sehen, wie er aus dem Wellensalat eine brauchbare Information holt. XBee-Module der Firma Digi International spannen dank eingebauter Protokolle größere Funknetzwerke und kontrollieren auch die Kommunikation untereinander. Zudem sind sie in der Lage, über ihre zahlreichen Anschlüsse selbst Sensoren auszulesen und die gemessenen Daten durch das Netzwerk an andere Xbee-Module zu übermitteln. Somit bieten sie eine ideale Grundlage, um mit einem Raspberry Pi die Daten aus einem Sensornetzwerk auszuwerten.
Die XBee-Familie
XBee-Module gibt es schon seit über 10 Jahren, die Familie wuchs inzwischen aber beträchtlich. Ursprünglich basierte das Protokoll auf IEEE 802.15.4-2003 und diente zum Aufbau von einfachen Verbindungen zwischen zwei Partnern oder von sternförmigen Netzwerken mit einem Koordinator in der Mitte. Das fortgeschrittene ZigBee-Protokoll baut darauf auf und erlaubt komplexere Mesh-Netzwerke, die jeden Teilnehmer mit allen anderen verbinden. Der Hersteller Digi International entwickelte zudem das robustere und energiesparendere eigene Digimesh-Protokoll.
Grundsätzlich unterscheiden sich die funkschwächeren XBee mit 1 mW von den funkstärkeren Pro-Modulen, die mit bis zu 100 mW Leistung senden (je nach nationalen/regionalen Bestimmungen). Letztere besitzen eine größere Reichweite und erweisen sich in professionellen Anwendungen als robuster. Zudem gibt es die Module mit verschiedenen Antennen. PCB-Module weisen eine flach auf das Modul gelötete Antenne auf. Daneben gibt es Module mit einer kurzen Drahtantenne (Abbildung 1) sowie mit einem Anschluss für externe Antennen, die die Funkleistung noch verbessern oder die Antenne des Moduls aus einem Gehäuse nach außen führen.

Abbildung 1: Der XBee Series 2 Pro bringt nicht nur eine deutlich höhere Sendeleistung mit, sondern auch eine Drahtantenne.
XBee-Module praktisch nutzen
Die XBee-Module ordnen die 20 Anschlüsse in einem Abstand von 2 Millimetern voneinander an – nicht kompatibel mit herkömmlichen Steckbrettern, deren Lochraster 2,54 Millimeter (0,1 Zoll) beträgt. Für erste Experimente mit den Modulen benötigen Sie daher Adapter; einfache Platinen dieser Art (Abbildung 2) kosten etwa 3 Euro [1].

Abbildung 2: Da die XBee-Module ein unkonventionelles Lochraster verwenden, benötigen sie zur Verbindung mit herkömmlichen Steckbrettern eine Adapterplatine.
Die Konfiguration der Module erfolgt direkt über die seriellen Anschlüsse Pin 2 und Pin 3, sodass sie nur noch eine serielle Verbindung zum Rechner benötigen. Allerdings stellen PCs mit seriellen Ports eine vom Aussterben bedrohte Gattung dar – eine Ersatzlösung bieten USB-TTL-Adapter, die es für unter 10 Euro gibt [2]. Wichtig: An den seriellen Anschlüssen darf maximal 3,3 Volt anliegen, andernfalls nimmt der XBee eventuell Schaden.
Um anschlusstechnisch sicherzugehen, empfehlen sich daher die etwas teureren Adapterplatinen mit USB-Anschluss (Abbildung 3). Je nach Hersteller liegen die Preise hier zwischen 10 Euro [3] und 30 Euro [4]. Professionelle Entwickler-Boards schlagen mit rund 200 Euro [5] zu Buche, kommen aber ohnehin eher für die Entwicklung von Industrieanwendungen zum Einsatz.

Abbildung 3: Eine USB-Adapter-Platine erlaubt es, den seriellen Anschluss des XBee auf USB umzubiegen.
XBee-Netzwerke
Das ZigBee-Protokoll erlaubt das Aufspannen verschiedener Netzwerktopologien, von einfachen Verbindungen zwischen zwei Partnern bis hin zu großen Netzwerken mit Zehntausenden Teilnehmern (Abbildung 4). Um die Details kümmert sich die Firmware der XBee-Module, der Entwickler muss lediglich die Rollenverteilung und die Adressierung im Netzwerk vornehmen.

Abbildung 4: Der XBee unterstützt die unterschiedlichsten Netzwerktopologien und erlaubt damit eine Vielzahl unterschiedlicher Einsatzszenarien.
Grundsätzlich nimmt ein XBee-Modul eine von drei Rollen an: Koordinator, Router oder Endpunkt. In allen Netzwerktopologien gibt es einen Koordinator, der die Kommunikation zwischen allen Teilnehmern regelt. Router separieren Teile des Netzwerkes, die äußeren Module im Netzwerk fungieren als Endpunkte der Kommunikation. Das einfachste Netzwerk umfasst zwei Module, bestehend aus einem Koordinator und einem Router beziehungsweise Endpunkt.
Welche Rolle ein XBee-Modul übernimmt, bestimmt dessen Firmware. Diese laden Sie mithilfe einer Anwendung des Herstellers in das Modul und richten es anschließend ein. Die XBee-Module von Digi International flashen und konfigurieren Sie mit der Konfigurationssoftware XCTU [6]. Einen Überblick in englischer Sprache gibt ein Einführungsvideo [7] von Digi International.
Konfigurationssoftware
Zunächst installieren Sie die Software für die Konfiguration der XBee-Module auf einem PC. Da sie nur für Windows und Mac OS vorliegt, müssen Sie als Linux-Anwender eine Schleife über Wine nehmen, das in den meisten Linux-Distributionen zur Installation bereitsteht. Unter Fedora installieren Sie das Paket mit dem Kommandozeilenaufruf sudo yum install wine. Nähere Installationshinweise finden Sie im Kasten “XCTU unter Linux”.
XCTU unter Linux
Nach dem Herunterladen von XCTU starten Sie die Installation als Benutzer mit Administrationsrechten über den Aufruf sudo wine 40003002_C.exe. Das Setup richtet die Software im Benutzerverzeichnis /root/.wine/drive_c/Program Files (x86)/Digi/XCTU-NG/ ein. Um das Programm zu starten, wechseln Sie in das Installationsverzeichnis und starten das Programm XCTU.exe. Um die Prozedur zu vereinfachen, bietet sich das Skript aus Listing 1 an, das Sie mit chmod 775 xctu als ausführbar markieren; danach genügt der Aufruf sudo ./xctu .
XCTU greift auf die seriellen Schnittstellen zu, die Wine allerdings nicht automatisch einrichtet. Ein an den PC angeschlossener serieller USB-Adapter erzeugt das Gerät /dev/ttyUSB0, wobei die letzte Ziffer für jeden USB-Adapter hochgezählt wird – der zweite Adapter erhält entsprechend die Kennung /dev/ttyUSB1 und so weiter. Diese Geräte müssen Sie für Wine in das Verzeichnis /root/.wine/dosdevices verlinken:
$ sudo ln -s /dev/ttyUSB0 /root/.wine/dosdevices/com1
Vorsorglich sollten Sie dabei schon einmal drei weitere Links für COM2 bis COM4 einrichten. Nun stehen die seriellen Ports zwar physisch bereit, allerdings gilt es, noch die Konfiguration von Wine anzupassen.
Ändern Sie dazu mit dem Registry-Editor die Einträge für die COM-Ports. Für den COM-Port COM1 fügen Sie den Pfad HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\SERIAL\COM\COM1 hinzu. Dort erstellen Sie anschließend zwei Zeichenfolgen. Eine mit dem Namen ClassGUID erhält den Inhalt {4D36E978-E325-11CE-BFC1-08002BE10318}. In die zweite mit dem Namen FriendlyName tragen Sie Serial Port (COM1) ein. Für das Anlegen der anderen COM-Ports verfahren Sie sinngemäß, ersetzen aber COM1 durch COM2 und so weiter. Der Inhalt der Zeichenfolge ClassGUID bleibt bei allen gleich: Es handelt sich schlicht um die Klassenbezeichnung für serielle Ports.






