Bisher haben wir mit den XBees digitale Signale und in einem weiteren Abschnitt auch analoge Signale übertragen. In diesem Abschnitt kombinieren wir beide Signalarten.
Über einen Taster wird auf der Senderseite ein digitales Signal eingegeben und eine grüne LED auf der Empfängerseite reagiert darauf - sie geht an, wenn der Taster gedrückt ist und aus, wenn nicht. Nicht spektakulär, dass ganze, aber sehr lehrreich.
Zusätzlich ist ein Potenziometer auf der Senderseite verfügbar und an einen analogen Eingang mit ADC angeschlossen. Auf der Empfängerseite reagiert eine rote LED auf die Schleiferstellung des Potenziometers mit Helligkeitsänderung (Dimmeffekt).
Die Konfigurationen des Sender- und des Empfängermoduls werden vor der Neueinstellung auf die Werkseinstellung zurückgesetzt. Dadurch wird sichergestellt, dass nicht an irgendeiner Stelle noch eine Einstellung falsch oder ein Flag gesetzt ist.
Sendermodul aufbauen und konfigurieren | |
Material |
1x XBee-USB Adapter Board (z. B. von Fa. Parallax) 1x XBee-Adapter Board 1x Steckbrett 1x Potenziometer, 10kOhm 1x Taster 1x Netzteil mit 3,3V - z. B. Arduino-UNO und Propeller Board of Education 1x USB Verbindungskabel diverse Steckdrähte 1x XBee Modul XB24 802.15.4 PCB Antenne oder ähnlichen (die Produktlinie von XBee ist neu aufgelegt worden; das Nachfolgemodell des XB24 ist der XBee S2C 802.15.4 mit PCB Antenne) |
Aufgaben |
|
Die Schaltung - Senderbaustein
Laut Datenblatt verfügt ein XBee über sechs ADCs (Analog-Digital-Wandler): AD0 (20), AD1 (19), AD2 (18), AD3 (17), AD4 (11) und AD5 (15). In Klammern ist jeweils die Pinzahl am XBee angegeben. Der am Eingang ADx anliegende Spannungspegel wird in einen 10-Bit Datenwert umgewandelt. Ein Spannungspegel von maximal 3,3V wird in 1023 (0x3FF) Spannungsstufen (entspricht 10 Bit) und die 0 aufgeteilt. Die an Pin 14 anliegende Referenzspannung gibt dabei den maximalen Spannungswert an.
Als Referenzspannung nehmen wir in dieser Übung die 3,3V vom Arduino- bzw. Propeller-Board und legen sie an Pin 14 des XBee; ein 10k-Potenziometer liefert das analoge Spannungssignal für den ADC-Eingang AD0 - DIO0 an P20. Der Taster wird mit AD3 - DIO3 an P17 verbunden. Im unbeschalteten Zustand liegt er auf 1 und wird bei gedrückter Taste auf 0V gezogen.
Das Empfänger-Modul ist mit zwei LEDs verbunden. Die rote LED reagiert auf die digitale Eingabe beim Sender (das ist der Taster), während die grüne LED auf ein analoges Signal vom Sender reagiert (das kommt vom Potenziometer) und je nach Schleiferstellung am Potenziometer heller oder schwächer leuchtet.
Empfängermodul aufbauen und konfigurieren | |
Material |
|
Aufgaben |
|
Die Schaltung - Empfängerbaustein
Auf der Empfängerseite muss die rote LED mit Vorwiderstand an Pin 6 (PWM0) des XBees angeschlossen werden; es ist der zum analogen Eingang DIO0 auf der Senderseite korrespondierende Ausgang auf der Empfängerseite. Entsprechend muss zum digitalen Eingang DIO3 auf der Senderseite der entsprechende Ausgang auf der Empfängerseite gewählt werden; das ist ebenfalls DIO3. Mit der Einstellung DO High[5] weiß der XBee Baustein, dass am Ausgang des Empfängers eine 1 liegt, wenn kein Signal empfangen wird.
Sobald beide XBees an die Spannungsversorgungen angeschlossen sind, beginnt die Datenübertragung. Die schauen wir uns mit dem Programm XCTU jetzt etwas genauer an.
Der Informationsumfang hat zugenommen; eine Datensequenz besteht jetzt aus 16 Bytes und wird wie bereits bekannt ist, mit dem Byte 7E gestartet (gerahmter Bereich). Was nicht verwunderlich ist, da jetzt ein analoges und ein digitales Signal übertragen werden. Die Bedeutung der einzelnen Bytes zeigt die folgende Tabelle.
Welche Eingänge auf der Senderseite aktiv geschaltet wurden, ergibt sich aus den Bytepaaren 02 08.
Die Hexadezimalzahl 0x02 wird binär codiert zu 0b0000 0010, die Zahl 0x08 zu 0b0000 1000. Dies wird in die folgende Tabelle HighA bzw. LowA der Aktivsignal Bytes eingetragen.
Die Eingänge D3 und A0 des XBee-Senders sind aktiv geschaltet. Das sollte jetzt nicht wirklich überraschen, da es die Einstellungen wiedergibt, die im Abschnitt 1 (Das Sendermodul konfigurieren) vorgenommen wurden. Schauen wir uns jetzt die Datenpaket-Bytes an; neu ist, dass es jetzt offensichtlich zwei Datenpakete gibt: DIGITAL und ANALOG. Das erste Datenpaket 00 08 wird in das Tabellenraster eingetragen und die entsprechenden Informationen an den Stellen abgelesen, die mit einer 1 markiert sind.
An D3 liegt eine 1 oder HIGH, was soviel heißt, dass der Taster nicht gedrückt ist.
In gleicher Weise wird das zweite Datenpaket ANALOG 03 E0 in die Tabelle übertragen. Es ergibt sich als 10-Bit Datenwert des ADC:
Der binären Zahl 0b11 1111 1000 entspricht dezimal die Zahl 1016 oder umgerechnet ein Spannungswert von 3,27V.
Probier mal dies!
Die folgenden Übertragungsdaten werden im Terminal von XCTU für die Schaltung nach Abb. 1 ausgegeben. Bestimme aus den Daten die am Potenziometer eingestellte Spannung und ermittle den Spannungspegel am Taster.
Lösungen
Als Aktivsignal-Bytes sollte erkannt werden, dass D3 und A0 aktiv geschaltet sind.
Im Datenpaket DIGITAL ergibt sich, dass der aktive Taster an D3 auf 0 gezogen worden ist. Das ist gleichbedeutend damit, dass der Taster gedrückt ist und die LED grün am Empfänger leuchtet.
Im Datenpaket ANALOG wird 00 0F als 10-Bit Darstellung des ADC angezeigt. Diesem Wert entspricht eine Spannung von 0,05V.
Wie verändert sich die Datenstruktur, wenn statt einer Messprobe zwei oder mehr Messproben erhoben und dann an den Empfänger übertragen werden? Dazu wird im folgenden Versuch die Anzahl der Samples auf 3 erhöht.
Die Konfiguration des Empfängermoduls ändert sich nicht. Am Sendermodul muss der Eintrag im Verzeichnis I/O Settings bei IT - Samples von TX = 01 auf TX = 03 erhöht und anschließend in das XBee-Sendermodul zurückgeschrieben werden.
Die Anzahl der Samples erhöhen | |
Aufgaben |
|
Schließe die XBees an die Spannungsversorgungen an und starte die Datenübertragung. Mit Hilfe des Programms XCTU werden die Übertragungsdaten im Terminalfenster (Console log) angezeigt.
Eine Datensequenz besteht jetzt aus 24 Bytes, dabei ist etwas verwirrend, dass das Prüfbyte des markierten Samples in diesem speziellen Fall zufällig 7E ergibt. Der Informationsumfang hat deutlich zugenommen. Was nicht verwunderlich ist, da wir jetzt ein analoges und ein digitales Signal dreimal aufnehmen und dann an den Empfänger übertragen. Die Bedeutung der einzelnen Bytes zeigt die folgende Tabelle.
Bei drei Messproben, die mit Zwischenpausen von je einer Sekunde aufgenommen werden, dauert es relativ lange, bis zum Beispiel die grüne LED am Empfänger aufleuchtet, wenn der Taster am Sender gedrückt wird; maximal können es in diesem Fall drei Sekunden sein.
Soll die Schaltung so reagieren, dass die grüne LED am Empfänger sofort aufleuchtet, wenn der Taster am Sender gedrückt wird (zum Beispiel ein Notfallschalter), dann müssen bei den Einstellungen des XBee-Senders Veränderungen vorgenommen werden.
Wird der am Sender befindliche Taster an DIO3 gedrückt, dann soll, unabhängig von der Zahl der eingestellten Samples, die grüne LED am Empfänger sofort aufleuchten. Dies wird in XCTU über die Einstellung von IC DIO Change Detect im Ordner I/O Settings erreicht. Mit Hilfe dieses Schalters lassen sich alle acht DIOx-Anschlüsse durch ein Byte steuern. Der Taster ist an D03 angeschlossen, deshalb muss an der vierten Stelle (D0, D1, D2, D3) eine 1 gesetzt werden. Mit der Einstellung 0b00001000 ist dies erfolgt. Im Konfigurationsmenü muss die hexadezimale Darstellung dieser binären Zahl, also 08 eingegeben werden.
Auf Pegeländerungen am digitalen Eingang reagieren | |
Aufgaben |
|
Wird jetzt die Verbindung zwischen Sender und Empfänger neu aufgebaut, dann erkennt man sehr deutlich, dass der Empfänger sofort auf den Tastendruck beim Sendermodul reagiert. Wie sich das auf die Datenübertragung auswirkt schauen wir uns gleich an. Um den Effekt besser sehen zu können, wird dazu die Anzahl der Samples auf 10 erhöht (hexadezimal 0x0A).
Über das Programm XCTU lassen sich die übertragenen Daten im Monitorfenster anschauen.