In diesem Abschnitt wird gezeigt, wie man ein Netz aus einem Sender und einem Empfänger aufbaut. Der Sender überträgt laufend Daten zum Empfänger, die dieser dann im X-CTU Terminal auf dem PC darstellt (Abb. 1).
Aufbau eines Netzwerkes aus Sender und Empfänger | |
Material |
|
Aufgaben |
|
Schaltungsaufbau
Das Sendermodul konfigurieren | |
Aufgaben |
|
Achte bei der Verkabelung darauf, dass bei dem XBee-Adapter-Board von Parallax Inc. auf jeder Seite 11 statt 10 Pin vorhanden sind und das der oberste Pin auf der linken Seite auf GND (Vss) liegt.
Die folgenden Einstellungen müssen in der Konfiguration für den Sender geändert werden:
1 - Ordner Networking & Security
Jedes XBee Modul hat eine 64-Bit Seriennummer (steht hinten auf dem Chip) und eine 64-Bit Zieladresse, die in zwei Blöcken DH und DL von jeweils 32 Bit aufgeteilt sind. Jeder Block hat eine Bitlänge von 32, das entspricht 4 Byte. Der DL Block enthält die 16-Bit Zieladresse des XBees, mit dem eine Verbindung aufgenommen werden soll, der DH Block ist 0, binär geschrieben 0b0000 0000 0000 0000 oder hexadezimal geschrieben 0x0000.
2 - Ordner I/O Settings
Ändere folgende Einstellungen
Überprüfe noch einmal alle Einstellungen und übertrage die Änderungen mit Write in das Modul.
Mit dieser Einstellung sind die Pins 9, 15 und 16 ( DI8, AD6 - DIO6 und AD5 – DIO5) des Senders als digitale Eingänge (DI) geschaltet. Die Abtastrate erfolgt in Vielfachen von einer Millisekunde. Ein Wert von 0x1388 (500010) ergibt damit eine Verzögerung von 5000ms oder 5s zwischen zwei Messproben. Das heißt, alle fünf Sekunden werden alle I/O Pins, die aktiv geschaltet worden sind, abgefragt und die dort anliegenden Informationen abgespeichert. In unserem Beispiel werden DIO5, DIO6 und DI8 abgefragt.
Überprüfe mit einem Klick auf Read, ob alle Änderungseinträge vom Modul korrekt abgespeichert wurden. Damit ist die Konfiguration des Sender-Moduls fertig gestellt. Löse das USB-Kabel vom PC und nimm das XBee-Modul aus der Fassung.
Das Empfängermodul konfigurieren | |
Aufgaben |
|
Die folgenden Einstellungen müssen in der Konfiguration für den Empfänger geändert werden:
1 - Ordner Networking & Security
Die Zieladresse für den Empfänger-Modul ist die Eigenadresse des Senders; entsprechend ist die Eigenadresse des Empfänger-Moduls die Zieladresse des Senders.
2 - Ordner I/O Settings
Ändere folgende Einstellung
Überprüfe noch einmal alle Einstellungen und übertrage anschließend die Änderungen mit Write in das Modul.
Damit sind alle Einstellungen am Empfänger und Sender abgeschlossen. Das Empfänger-Modul kann im XBee-USB-Adapter Board bleiben.
Nachdem alle Grundeinstellungen vorgenommen sind, schauen wir uns jetzt den Datenaustausch zwischen zwei XBee-Modulen an.
Datenaustausch | |
Material |
|
Aufgaben |
|
Schaltungsaufbau
Um zu sehen, was der Sender an den Empfänger überträgt, wird in der XCTU-Software die Konsole eingeschaltet.
Das sich öffnende Fenster Console log zeigt irgendwelche Zeichen. Durch einen Klick auf das Icon 0x rechts oberhalb des Fensters wird dieses geteilt. Im linken schmaleren Teil erscheinen die Sonderzeichen, im rechten Teil erkennt man Tupel von hexadezimalen Zahlen.
Bei genauem Studium der Zahlenkolonnen erkennt man eine Regelmäßigkeit. Die Tupel scheinen sich nach einer gewissen Zeit zu wiederholen. Und man erkennt, dass keine Textinformationen sondern Datenpakete übertragen werden, die eine bestimmte Information über die I/O Pin des Sendermoduls enthalten. Die 2-er Tupel wiederholen sich nach folgendem Schema
7E 00 0A 83 08 15 4A 00 01 01 60 01 40 72
Welche Bedeutung jedes der 16 Tupelpaare bei der Datenübertragung hat, wird im Folgenden näher untersucht.
Die Aktivsignal Bytes teilen sich in einen HighA und LowA Anteil von jeweils 8 Bit auf, die durch je zwei Hexadezimalzahlen repräsentiert werden. Die Bedeutung der einzelnen Bits zeigt die folgende Tabelle.
Informationen aus den Aktivsignal-Bytes ziehen
Von allen Ein- und Ausgängen des Sender-XBees wurden die I/O Kanäle D8, D6 und D5 als Eingänge konfiguriert (Abschnitt 2) und freigeschaltet (enabled). Alle aktiven Ein- und Ausgänge werden durch eine 1 markiert, alle inaktiven durch eine 0.
Der Bitfolge
entspricht ein Hexadezimalwert von 0x01 (die führende Null wurde hinzugefügt, da hexadezimale Zahlen hier als 2-er Tupel angegeben werden), der Bitfolge
entspricht ein Hexadezimalwert von 0x60.
Mit dieser Information weiß der Empfänger-Baustein, welche Eingänge des Senders bei einer Datenübertragung Informationen liefern; mit 0 oder 1 sind hier keine Status- oder Pegelanzeigen von Pins gemeint. Diese werden mit den Bytes der beiden folgenden Datenpakete geliefert.
Informationen aus den Datenpaket-Bytes ziehen
Der Sender hat von den aktiven I/O Ports nur D8 und D6 mit HIGH-Pegel zurückgemeldet; dort steht eine 1 an der entsprechenden Bitstelle. Da alle drei Eingänge des Sender-XBees nicht beschaltet sind und offensichtlich ein HIGH an zwei der drei Eingänge anliegt, werden diese beiden wohl von einem internen pull-up Widerstand im Leerlauf auf 1 hochgezogen. Mehr Klarheit verschafft da ein Blick in das Datenblatt des XBees.
Die Prüfsumme, die als letztes im Datenpaket erscheint ist mit 0x72 angegeben. Sie wird aus den Bytes der Daten ermittelt. Der Empfänger bildet ebenfalls eine Prüfsumme und vergleicht seine errechnete mit der übermittelten. Besteht Übereinstimmung ist alles ok, bei nicht vorhandener Übereinstimmung wird das übermittelte Datenpaket einfach "übersehen" und vergessen. Eine Fehlermeldung erfolgt nicht.
In der Konfigurationseinstellung kann für den Sender unter RR - XBee Retries in der Datei Networking & Security die Anzahl der Versuche bei einer missglückten Übertragung eingetragen werden. Standardmäßig ist ein Wert von 0 eingetragen.
Mit der folgenden kleinen Übung wird der Eingang D6 mit einem Steckdraht auf GND und D5 auf 3,3V gesetzt. Zur Erinnerung: D6 liegt unbeschaltet auf 1 und D5 auf 0. Wir werden überprüfen, ob die Eingänge D6 auf 0 und D5 auf 1 in den Datenpaket- und Aktivsignal-Bytes angezeigt werden.
Aufgaben
Die Bitfolge für die Einstellungen D5 - auf 1 und D6 - auf 0 ergibt
Die ersten beiden 2-Tupel 0x01 und 0x60 sind die Aktivsignal-Bytes. 01 bedeutet, dass D8 aktiv ist und 0x60 bedeutet, dass das 6. und 7. Bit gesetzt - also 1 - ist (Tabelle Aktivsignal-Bytes) und damit D5 und D6 aktiv sind. So hatten wir ja auch die Schaltungskonfiguration angelegt.
Die beiden blau umrandeten 2-Tupel 0x01 und 0x20 stehen für die Datenpaket-Bytes. Danach liegt an D8 und an D5 eine 1 und an D6 eine 0. Das entspricht dem aktuellen Versuchsablauf, da wir D5 auf 1 und D6 auf GND gesetzt haben.
Die Prüfsumme, die als letztes im Datenpaket erscheint ist mit 0x92 angegeben. Sie wird aus den Bytes der Daten ermittelt (s. Berechnung der Prüfsumme). Der Empfänger bildet ebenfalls eine Prüfsumme und vergleicht seine errechnete mit der übermittelten. Besteht Übereinstimmung ist alles ok, bei nicht vorhandener Übereinstimmung wird das übermittelte Datenpaket einfach "übersehen" und vergessen. Eine Fehlermeldung erfolgt nicht. In der Konfigurationseinstellung kann für den Sender unter RR - XBee Retries in der Datei Networking & Security die Anzahl der Versuche bei einer missglückten Übertragung eingetragen werden. Standardmäßig ist ein Wert von 0 eingetragen.
Die Prüfsumme wird aus den unterstrichenen Zahlen der sich wiederholenden Zahlenkolonnen gebildet.
Nicht berücksichtigt werden bei der Prüfsummenbildung neben der Prüfsumme selbst, das Zeichen für den Start einer Datenübertragung (0x7E) und die zwei Byte des Byte-Zählers (00 0A).
Addiert man alle unterstrichenen Zahlen (hexadezimal!!!), erhält man 0x016D (bitte überprüfen!). Subtrahiert man das lower 2-Tupel der Hex-Werte (0x6D) von 0xFF, erhält man die Prüfsumme, und die ist im hier vorliegenden Fall 92.