Startseite>Sensoren über XBee-Funkverbindungen auswerten
Aus Raspberry Pi Geek 04/2015

Sensoren über XBee-Funkverbindungen auswerten

© Joruba, 123RF

Feinfühlig

Marcus Nasarek

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.

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.

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.

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.

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.

Listing 1

 

#!/bin/bash
# Skript: xctu
cd "/root/.wine/drive_c/Program Files (x86)/Digi/XCTU-NG/"
./XCTU.exe

Nach dem Start von XCTU fügen Sie der Konfiguration die angeschlossenen XBee-Module hinzu. Ein Klick auf das linke Symbol über der Spalte Radio Modules öffnet einen Dialog zur Auswahl des COM-Ports, an dem das XBee-Modul hängt. Standardmäßig arbeiten die XBee-Module mit einer Port-Geschwindigkeit von 9600 Baud. Mit einem Klick auf Finish laden Sie das Konfigurationsmodul. Klicken Sie nun in der linken Spalte auf den Eintrag des fraglichen XBee-Moduls, um dessen Konfiguration auf der rechten Seite zu öffnen.

Um einen Koordinator einzurichten, müssen Sie die entsprechende Firmware in das Modul laden. Das erledigen Sie mit einem Klick auf das vierte Symbol Update Firmware oberhalb der Konfigurationseinstellungen. Daraufhin öffnet sich ein Dialog zur Auswahl der Firmware (Abbildung 5). Hier wählen Sie dann die für das Modul passende Koordinator-Firmware aus, zum Beispiel ZNet 2.5 Coordinator API in der Version 1147. Bei der Firmware unterscheidet man zwischen AT- und API-Versionen; nähere Informationen finden Sie im Kasten “AT- oder API-Firmware”.

Abbildung 5: Über die Auswahl der Firmware laden Sie die für den jeweiligen Einsatz passende Software auf ein XBee-Modul.

Abbildung 5: Über die Auswahl der Firmware laden Sie die für den jeweiligen Einsatz passende Software auf ein XBee-Modul.

AT- oder API-Firmware

Die Firmware steht in den zwei Ausprägungen AT und API zur Verfügung. Je nach Auswahl unterscheidet sich die Art der seriellen Kommunikation mit den Modulen. Im AT-Modus interpretiert das Modul wie bei einem Modem eingehende Daten als Zeichenketten und führt sogenannte AT-Befehle aus. Der Kommandomodus beginnt zum Beispiel mit der Zeichenkette +++, die darauf folgenden Zeichenketten führt das Modul als AT-Befehle aus. ATVR ruft zum Beispiel die Firmware-Version ab. Der AT-Modus heißt auch Transparenz-Modus: Alle an den Anschlüssen eingehenden Daten gibt das XBee-Modul direkt auf die serielle Schnittstelle weiter.

Im API-Modus interpretiert das Modul die Daten als strukturierte Datenblöcke. Messwerte an den Anschlüssen packt es in einen Datenblock und schickt sie in dieser Form über die serielle Schnittstelle. Den Aufbau eines solchen Datenblocks beschreibt das Handbuch [9]. Beim ersten Byte handelt es sich um einen Startwert (0x7E), die nächsten beiden Bytes geben die Größe des Datenblocks an. Die darauf folgende Struktur hängt vom Typ des Datenblocks ab.

Die in XCTU integrierte Konsole zur Diagnose der übertragenen Daten steht nur dann zur Verfügung, wenn Sie das an den PC angeschlossene Modul im API-Modus betreiben. Daher ist es für erste Versuche sinnvoll, den Endpunkt im AT-Modus und den Koordinator im API-Modus zu betreiben.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland