Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

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.

1 - Das Sendermodul konfigurieren

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
  • Baue die Sender-Schaltung nach Abbildung 1 auf dem Steckbrett auf.
  • Setze das XBee-Module Sender in das XBee-USB-Board ein und schließe das USB-Kabel an.
  • Starte das Programm X-CTU auf dem PC.
  • Setze das Modul mit Default auf die Werkseinstellungen zurück.
  • Ändere im Verzeichnis Networking & Security MY - 16-Bit Source Address in 815
  • Ändere im Verzeichnis Networking & Security DL- Destination Address in 4711
  • Im Verzeichnis I/O Settings ändere DO - DIO0 auf  ADC[2].
  • Im Verzeichnis I/O Settings ändere D3 - DIO3 auf  DI[3].
  • Im Verzeichnis I/O Settings ändere IT - Samples in TX = 01.
  • Im Verzeichnis I/O Settings ändere Sample Rate in 3E8.
  • Übertrage die Änderungen mit dem Befehl Write in das XBee Modul.

Die Schaltung - Senderbaustein

Abbildung 1 - XBee Sender mit 10k-Potenziometer und Taster.

2 - Die Beschaltung des Sendermoduls

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.

3 - Das Empfängermodul konfigurieren

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
  • 1x  XBee-USB Adapter Board (z. B. von Fa. Parallax)
  • 1x  XBee-Adapter Board
  • 1x  Steckbrett
  • 2x  Widerstand, 220 Ohm
  • 2x  LED (rot, grün)
  • 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
  • Baue die Sender-Schaltung nach Abbildung 2 auf dem Steckbrett auf.
  • Setze das XBee-Modul Empfänger in das XBee-USB-Board ein und schließe das USB-Kabel an.
  • Starte das Programm X-CTU auf dem PC.
  • Setze das Modul mit Default auf die Werkseinstellungen zurück.
  • Ändere im Verzeichnis Networking & Security MY - 16-Bit Source Address in 815
  • Ändere im Verzeichnis Networking & Security DL- Destination Address in 4711
  • Im Verzeichnis I/O Settings ändere D3 - DIO3 auf  DO High[5].
  • Im Verzeichnis I/O Settings ändere P0 PWM0 Configuration auf PWM Output[2].
  • Im Verzeichnis I/O Line Passing ändere IA I/O Input Address in FFFF.
  • Übertrage die Änderungen mit dem Befehl Write in das XBee Modul.

Die Schaltung - Empfängerbaustein

Abbildung 2 - Empfänger-Modul mit zwei LEDs. Die rote reagiert auf das analoge Signal, die grüne auf das digitale.

4 - Die Beschaltung des Empfänger-Moduls

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.

5 - Auswertung der Übertragungsdaten

Sobald beide XBees an die Spannungsversorgungen angeschlossen sind, beginnt die Datenübertragung. Die schauen wir uns mit dem Programm XCTU jetzt etwas genauer an.

Abbildung 3 - Übertragungsdaten für "Taster nicht gedrückt" und Schleiferstellung am Potenziometer in einer beliebigen Position.

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.

6 - Die Anzahl der Samples erhöhen

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
  • Setze das XBee-Module Sender in das XBee-USB-Board ein und schließe das USB-Kabel an.
  • Starte das Programm X-CTU auf dem PC.
  • Im Verzeichnis I/O Settings ändere IT - Samples in TX = 03.
  • Übertrage die Änderungen mit dem Befehl Write in das XBee Modul.

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.

Abbildung 4 - Datenübertragung von 3 Samples

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.

7 - Auf Pegeländerung am digitalen Eingang reagieren

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
  • Setze das XBee-Module Sender in das XBee-USB-Board ein und schließe das USB-Kabel an.
  • Starte das Programm X-CTU auf dem PC.
  • Im Verzeichnis I/O Settings ändere IT - Samples in TX = 0A.
  • Im Verzeichnis I/O Settings ändere IC - DIO Change Detect von 0 in 08.
  • Übertrage die Änderungen mit dem Befehl Write in das XBee Modul.

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).

8 - Auswertung der Übertragungsdaten

Über das Programm XCTU lassen sich die übertragenen Daten im Monitorfenster anschauen.

  • Der erste markierte Bereich an Übertragungsdaten umfasst je 10 Datenpakete für DIGITAL und ANALOG-Werte. Praktisch wurde in einem Zeitraum von etwa 10 Sekunden weder der Taster gedrückt noch das Potenziometer verstellt. Der XBee Sender sammelt die Messdaten und überträgt sie  anschließend. Rot markiert sind die Aktivsignal-Bytes.
  • Der zweite Bereich umfasst nur vier statt 10 Datenpakete. Das Sammeln der Daten auf der Senderseite ist durch einen Tastendruck unterbrochen worden. In dem Moment überträgt der Sender-XBee alle bis zu diesem Zeitpunkt gesammelten Daten an den Empfänger; in diesem Fall waren es vier Datensätze. Rot markiert sind die Aktivsignal-Bytes.
  • Der sich anschließende dritte Block enthält nur ein Datenpaket; das wird gesendet, weil nach dem Drücken des Tasters (fallende Flanke, der Eingang geht von HIGH auf LOW) das Modul nur die aktiven digitalen Eingänge und die dort anliegenden Zustände (0 oder 1) abfragt, ausliest und versendet. Blau markiert sind die Datenbytes.
  • Wird dann der Taster wieder losgelassen (steigende Flanke, der Eingang geht von LOW auf HIGH), reagiert das Modul ein weiteres Mal; fragt wieder alle aktiven digitalen Eingänge ab, liest die dort anliegenden Zustände aus und überträgt sie (vierter Block). Blau markiert sind die Datenbytes.

Kommentar schreiben

Kommentare

  • olaf (Sonntag, 10. Dezember 2017 08:35)

    wow...die mit Abstand beste Site, die ich bisher zu diesem Thema gesehen habe :-))
    Vielen Dank dafür. Hilft super beim Erklären!!

  • David Eisenblätter (Sonntag, 11. Februar 2018 13:38)

    Sehr schön erklärt, und zufällig heute, wo ich nochmal nach einer detailierten Gedankenstütze diesbezüglich gesucht habe!

    Vielen vielen Dank!

    David.

Bitte geben Sie den Code ein
* Pflichtfelder
Druckversion Druckversion | Sitemap
© Reinhard Rahner - Gettorf