Aus Raspberry Pi Geek 04/2015

Sensoren über XBee-Funkverbindungen auswerten (Seite 2)

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.

Paar-Netzwerk

Nachdem Sie die Module mit jeweils einer Koordinator- und einer Router-Firmware (ZNet 2.5 Router/End Device AT Version 1247) beschickt haben, geht es nun an die Einstellungen für das Netzwerk. Im Abschnitt Networking stellen Sie die Netzwerk-ID ein. Sie muss bei allen Geräten im Netz gleich lauten. Der Standardwert 234 stellt sicher, dass in der Grundkonfiguration alle Module im selben Netz arbeiten. Laufen in der unmittelbaren Umgebung keine anderen XBee-Module, müssen Sie hier nichts ändern.

Der nächste wichtige Abschnitt, Addressing, zeigt in den Einstellungen SH und SL die Seriennummer an. Diese Werte sollten Sie notieren, alle anderen lassen Sie unverändert. Ist das Endgerät ebenfalls aktiv, beispielsweise weil der USB-Adapter es mit Strom versorgt oder es diesen direkt von Pin 1 (+3.3V) und Pin 10 (GND) bekommt, kann es per Funk über das Koordinator-Modul geladen werden. Dazu klicken Sie auf das blaue mittlere Symbol des Moduls (Discover radio nodes in the same network).

Ein Klick auf das verbundene Modul lädt dessen Konfiguration (Abbildung 6). Da das Endgerät die Messdaten an den Koordinator schicken soll, tragen Sie die Werte aus SH und SL des Koordinators in die Einstellungen DH und DL des Endgeräts ein. So weiß dieses, an welche Zieladresse (Destination Address) es die erfassten Daten übermitteln soll.

Abbildung 6: Die Konfigurationssoftware XCTU für XBee-Module erlaubt das detaillierte Setup der Firmware.

Abbildung 6: Die Konfigurationssoftware XCTU für XBee-Module erlaubt das detaillierte Setup der Firmware.

Messdaten erfassen

Das folgende Beispiel zeigt den Datenimport der Messdaten am Datenport D3. Da es sich um eine Spannungsmessung handelt, setzen Sie die Einstellung ADC[2]. Um lediglich zu ermitteln, ob überhaupt eine Spannung anliegt, müssten Sie DI[3] einstellen. Die beiden anderen Werte, DO Low[4] und DO High[5], konfigurieren den Port als Ausgang, der entweder Spannung hält und auf null schaltet (High) oder auf null steht und angeschaltet wird (Low).

Damit die Messung einmal pro Sekunde stattfindet, setzen Sie die Einstellung IR auf den Wert 1000. Ein Klick auf das Bleistift-Symbol über den Einstellungen überträgt die Konfiguration an das Modul. Um die eingehenden Daten einzusehen, wählen Sie zunächst den Koordinator links und danach aus der Menüleiste die Konsole aus. Ein Klick auf das Steckkontakte-Symbol verbindet diese mit dem Koordinator (Abbildung 7). Ein weiterer Klick auf ein Datenpaket zeigt es im Fenster Frame details an.

Abbildung 7: Die Konsole der XCTU-Anwendung zeigt unter anderem eingehende Messdaten an.

Abbildung 7: Die Konsole der XCTU-Anwendung zeigt unter anderem eingehende Messdaten an.

Abbildung 8 zeigt, wie der Inhalt des in Abbildung 7 empfangenen Datenpakets sich zusammensetzt. Nach dem Startwert 7E folgt die in 2 Bytes kodierte Länge des Datenpakets (das Byte für die Prüfsumme nicht mitgezählt). Der hexadezimale Wert 00 14 entspricht dabei einer Länge von 20 Bytes. Das folgende Byte 92 kennzeichnet das Datenpaket als “I/O-Frame”, also als Ein-/Ausgabe-Datenpaket der Datenports. Die nächsten 8 Bytes stellen die ID des sendenden Geräts dar, die folgenden beiden Bytes die 16-Bit-Netzwerkadresse.

Nun kennzeichnet je ein Byte die Empfangsoptionen sowie die Anzahl der Datenpakete (im Beispiel 01). Anschließende Masken benennen die ausgewerteten digitalen (2 Bytes) und analogen Ports (1 Byte). Danach folgen je nach Portanzahl die je 2 Bytes großen Datenfelder. Beim letzten Byte handelt es sich um eine Prüfsumme über das Datenpaket.

Abbildung 8: Die Grafik erläutert die Zusammensetzung eines I/O-Frames.

Abbildung 8: Die Grafik erläutert die Zusammensetzung eines I/O-Frames.

Jedes Bit der Analog-Maske entspricht einem analogen Port. Beim Wert 08 aus unserem Beispiel – binär 00001000 – ist das vierte Bit von rechts gesetzt und zeigt damit an, dass analoge Werte vom Port AD3 gelesen wurden. Bit 1 entspricht also AD0, Bit 2 AD1, Bit 3 AD2 und so weiter. Ein Blick ins Handbuch [9] zeigt, dass AD3 an Pin 17 anliegt.

Bodenfeuchtigkeit messen

Das konfigurierte XBee-Modul mit der Router-Firmware ist nun für Messungen bereit. Die Firma Seeed Studio bietet ein Solar Kit (Abbildung 9) für seine Module an [8], das neben einem Solar-Modul auch eine Grundplatine mit USB-Adapter, einen Akku und zwei Sensoren für Temperatur und Bodenfeuchtigkeit enthält (Abbildung 9). Die Kosten belaufen sich ohne das XBee-Modul auf etwa 20 Euro. Sobald Sie das wie oben beschrieben konfigurierte XBee-Modul einstecken und mit Strom versorgen, übermittelt es jede Sekunde einen Messwert des angeschlossenen Sensors. Hier gilt es jedoch, eine Kleinigkeit zu beachten.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben