XBee Funkmodule:

Experimentieren mit 1 mW bei 2,4 GHz

ZigBee-Funkmodul XBee

Elektronikversender wie Reichelt und andere vertreiben seit einiger Zeit XBee-Funkmodule (Series 2) von Digi vormals Maxstream. Die nach dem Zigbee-Standard funkenden Winzlinge laden geradezu zum Experimentieren ein. Drahtloser Datenfunk wird damit (fast) so einfach wie das Anknipsen der Schreibtischlampe. Der Beitrag beschreibt ein USB-Interface für den PC und die Anbindung an einen Mikrocontroller.

Auszug aus Wikipedia: „ZigBee ist ein offener Funknetz-Standard, der es ermöglicht, Haushaltsgeräte, Sensoren, und anderes mehr über kurze Entfernungen zu verbinden. Der Standard ist eine Entwicklung der ZigBee-Allianz, ein Zusammenschluss von mehr als 230 Unternehmen, die eine weltweite Entwicklung von ZigBee vorantreiben. ZigBee ist zum Einsatz batterieloser, wartungsfreier Funkschalter und Funksensoren in schwer oder selten zugänglichen Bereichen vorgesehen, wo der Austausch von Batterien nur mit großem Aufwand möglich ist. Die genormten Funktionen schließen auch eine grobe Pegelmessung ein (RSSI), die den Netzaufbau unterstützt.

Anwendungen

Mit XBee lässt sich somit ein ganzes Netzwerk aufbauen, geeignet, um beispielsweise mehrere Sensoren drahtlos mit einem PC oder Mikrocontroller zu verbinden oder etwa, um zwei PC miteinander zu vernetzen. Jedoch sind die zu erwartenden Datenraten für eine Vernetzung von PC zu PC mit WLAN nicht zu vergleichen und das Datenvolumen zu gering. Zur Steuerungszwecke und zur Datengewinnung ist Zigbee eine gute Wahl. Jedes Funkmodul verfügt neben der HF-Hardware (TX, RX) über einen Mikroprozessor, der mit einen mehrkanaligen AD-Wandler und konfigurierbaren digitalen Eingabe-/ Ausgabepins ausgestattet ist. Die Konfiguration geschieht über AT-Kommandos: Das Kommando „+++“, gegeben - nach einer Sekunde Pause und gefolgt von dieser - schaltet das Modul in den Kommandomodus um, dessen weitere Befehle jeweils mit „AT“ beginnen. Kommt ihnen das bekannt vor? Dann sicherlich von PC-DFÜ-Modems, welche dieselbe Kommandostruktur nutzen (Hayes-Modems).

Wie WLAN-Geräte sendet das Maxstream XBee-Modul auf einen von mehreren Kanälen im 2,4 GHz ISM-Bereich, die mit „AT SC“ selektiert werden. Eine Netzwerk-Identifikationsadresse, dessen Kommando „ATID“ lautet, ermöglicht mehrere Netze (ZigBee-Jargon: meshes) an einem Ort. Die Zieladresse der Datenpakete (High-Byte, Low-Byte) werden mit den Kommandos „ATDH“ und „ATDL“ eingestellt. Die eigene Adresse des Moduls bestimmt eine fest eingestellt Seriennummer, die sich mit „AT SH“ und ATSL“ in Erfahrung bringen lässt. Das Datenblatt und Manual listet viele Befehle auf, wichtig ist noch der Reset-Befehl „ATRE“. Er könnte eine letzte Rettung sein, sofern die Parameter hoffnungslos verstellt wurden: „AT RE“ stellt die Werkseinstellung her. An dieser Stelle sei angemerkt, dass sich alle Angaben auf die Series 2 der XBee-Module beziehen, wie sie von [1] geliefert werden.

Hardware für XBee

Bevor wir ein XBee in Betrieb nehmen können, wenden wir uns der Schaffung einer Trägerplatine für das Funkmodul zu: XBee (Series 2) ist in zwei Versionen verfügbar, als XBee und XBee-Pro. Die Pro-Version besitzt eine höhere Leistung (100 mW), hier kommt die kleinere 1-mW-Version zum Einsatz. Für eine Anwendung innerhalb eines Raumes bzw. einer Wohnung reicht diese Leistung völlig aus. Es ist kaum auszudenken, was mit XBee-Pro und einer Yagi oder einer kleinen Parabolantenne möglich ist: Experimente berichten von erfolgreichen Verbindungen über 40 Meilen (USA) bei Sichtkontakt.

3,3 Volt aus einem Spannungsregler

Um einen Mikrocontroller mit XBee zu verbinden, ist eine Spannungsversorgung von 3,3 Volt vonnöten und ein Controller, die mit dieser Spannung zurecht kommt. Diese Spannung stellt ein 3,3-V-Festspannungsregler zur Verfügung. Ähnlich dem bekannten 7805 oder 7812 handelt es sich um ein Dreibein im TO-220-Gehäuse mit derselben Anschlussbelegung. Einige mögliche Typen seien im Folgenden aufgelistet:

Typ Leistung (A)
LM2937ET3.3 1 A
LF33CV 1 A
LM3940IT3.3 1,5 A
LM1086IT3.3 1,5 A
LM1085IT3.3 3 A

Festspannungsregler für 3,3 Volt. Bei diesem Exemplar sorgt der ausgangsseitige Kondensator für eine korrekte Spannung und darf nicht fehlen.

Eingang – Masse – Ausgang: Das ist die übliche Pinbelegung von Festspannungsreglern, auch für 3,3 Volt.

Weil Basteleien – zumindest digitale - zukünftig vermehrt mit 3,3 Volt arbeiten werden, ist es ratsam, diese Schaltungen nicht aus einem variablen Labornetzteil zu versorgen. Zu schnell ist das Potenziometer des Netzteils verstellt und die Schaltung wegen Überspannung möglicherweise dahin. Eine kleine Lochrasterplatine, bestückt mit einem Festspannungsregler und den nötigen Kondensatoren, eingebaut in ein passendes Plastikgehäuse ist eine praktische Lösung. Über Bananenstecker wird es mit dem Labornetzteil verbunden, zur Versorgung mit 3,3 Volt geschieht über Einbaubuchsen.

Eine sichere Behausung für den 3,3-Volt-Spannungsregler verhindert böse Überraschungen.

Trägerplatine

Nachdem die Spannungsversorgung geklärt ist, muss eine kleine Trägerplatine für XBee her. Sie trägt nichts weiter als das XBee selbst und macht sämtliche Ein- und Ausgänge des Funkmoduls zugänglich. Einige Drähte stellen später die Verbindung zur steuernden Mikroprozessor-Leiterplatte her.

Schaltbild des Carriers.

Die kleine Leiterplatte trägt das XBee-Modul und macht Anschlusspins zugänglich.

Controller-Board

Die zuvor beschriebene Leiterplatte wird dazu benutzt, um den Zugriff mit einem Mikrocontroller zu ermöglichen. Prinzipiell kommt dazu jeder Mikrocontroller infrage, sofern dieser mit 3,3 Volt betriebsfähig ist.

Simpel: Die wenigen Verbindungen zwischen XBee und einem Prozessor.

Prozessoren mit 5 Volt können natürlich auch verwendet werden, müssen dann aber über einen Level-Shifter, zum Beispiel dem 74VHC08 oder ähnlichen Bausteinen mit dem Funkmodul kommunizieren. Der 74VHC08 wird mit 3,3 Volt betrieben und setzt TTL-Pegel des Mikrocontrollers auf 3,3 Volt um.

Für erste Experimente nutze ich ein selbstgebautes, minimalistisches Experimentier-Board. Es besteht aus einer Reset-Logik (10-k-Widerstand), Programmieradapter und Pfostenreihen, welche die Prozessorpins zugänglich machen. Damals trug die Leiterplatte einen Atmel 90S2313 aus der AVR-Serie. Für die XBee-Experimente fiel die Wahl auf den pinkompatiblen Nachfolger ATMEGA2313. Letzterer kommt dank des internen PC-Oszillators ohne Quarz aus, dennoch stört dieser auf der Platine nicht.

USB-Interface

Das 1-mW-Modul weist während des Sendebetriebs lediglich eine geringe Stromaufnahme von 45 mA bei 3,3 Volt auf. Das ist eine Leistung, die man z.B. einer USB-Schnittstelle entnehmen darf. Doch USB läuft mit 5 Volt! Der bekannte USB-Chip FT232RL jedoch bietet nicht nur eine sehr elegante Anpassung eines Mikrocontrollers oder anderer Peripherie an USB, sondern verfügt zudem über einen 3,3-Volt-Ausgang, der mit 50 mA belastbar ist.

Das USB-Interface mit der Vorderansicht auf die USB-Buchse vom Typ B.

Prototyp des XBee-USB-Interfaces: Die gekreuzten Drahtbrücken sind korrigiert. Zum Einschalten von RTS und CTS werden nun Jumper gesetzt. Der abgebildete, provisorisch mit RESET verbundene Pull-Up-Widerstand hat sich als unnötig erwiesen, weil das Modul intern einen Pull-Up-Widerstand von 50 k besitzt.

Um einen PC mit dem XBee-Modul zu verbinden, bietet sich daher der Bau eines USB-Interfaces unter Verwendung des FT232RL geradezu an. Die Schaltung besteht im Wesentlichen aus dem Modul selbst auf einer Platine mit dem USB-Chip samt passender USB-Buchse. Die Spannungsversorgung von USB-Chip und Funkmodul erfolgt wie angesprochen aus dem USB-Bus, um unnötigen Kabelsalat zu vermeiden. Einige wenige SMD-Kondensatoren und –Widerstände sowie zwei LED komplettieren das Schaltbild. Mittels der Jumper für RTS und CTS ist es möglich, den Datenfluss zwischen PC und XBee zu kontrollieren, um zu verhindern, dass der XBee-interne Sendepuffer überläuft. Dann sind beide Jumper zu stecken, es geht, bei moderater Baudratre – aber auch ohne Flusssteuerung RTS/CTS).

Das Schaltbild des XBee-USB-Interfaces. Um einige wenige SMD-Bauelemente kommt man nicht herum.

XBee-USB-Interface: Das Layout bietet viel Platz zum Löten.

Der Aufbau beginnt mit dem Bohren der Löcher und dem Einpassen (nicht einlöten) der USB-Buchse vom Typ B (Printversion). Sodann lötet man die wenigen SMD-Bauelemente ein und setzt seine Arbeit mit den leider unvermeidlichen Drahtbrücken fort. Nun lötet man die USB-Buchse ein und verbindet dessen Metallgehäuse mit der Massefläche. Zuletzt finden die 2-mm-Buchsenreihen (Reichelt Nr.: SP20) ihren Platz.

XBee-USB-Interface: Der Bestückungsplan.

Zur ersten Inbetriebnahme ist das Interface ohne XBee mit dem USB des PC zu verbinden. Dazu dient ein handelsübliches USB-A-B-Kabel. Windows meldet eine neue Hardware und fordert den Treiber an, den es bei http://ftdichip.com/FTDrivers.htm zu laden gibt. Verläuft das soweit komplikationslos, akzeptiert der PC den neuen virtuellen Com-Port. Falls nicht, sind Platine auf Kurzschlüsse und SMD-Lötstellen auf Korrektheit zu prüfen. Im Windows unter Systemsteuerung -> System -> Hardware -> Gerätemanager erfährt man die konkrete Nummer des neu zugewiesenen COM-Ports. Detaillierter ist diese Prozedur in einem anderen Beitrag dieses Hefts erläutert. Nun kann, nach Trennen des Interfaces vom USB, das XBee aufgesteckt werden.

Neue Firmware für XBEE

Damit zwei oder mehr XBees der Serie zwei miteinander in Kontakt treten, muss mindestens eines als Koordinator konfiguriert sein(lis dazu unten: XBee ist nicht gleich XBee). Das geschieht durch Ändern der Firmware, denn vermutlich wird der Lieferant ihre XBees mit der Firmware als Router/Endgerät ausliefern. Die neue Software kommt über das oben beschriebene USB-Interface mit Hilfe der Freeware X-CTU von Digi.com auf das XBee. Danach kommuniziert jeder Router und jedes Endgerät ohne weitere Einstellungen mit dem als Koordinator konfigurierten Funkmodul. Die werkseingestellten Übertragungsparameter sind 9600,8,N,1. Auf dem PC werkelt ein Terminalprogramm.


XBee ist nicht gleich XBee

Die Firma Digi, vormals Maxstream, bietet zwei Versionen von Zigbee-Funkmodule an, die sich zum Verwechseln ähnlich sehen: Series 1 (ohne Aufschrift „Series 1“ und „Series 2“, so ist es auf dem Modul gekennzeichnet. Inzwischen wurde „Series 2) umgetauft in „Znet 2.5“. Die erste Serie ist ein geeigneter Kandidat für Point-to-Point und Point-to-Multipoint-Verbindungen, während die Serie zwei ein Zigbee-Netzwerk, „mesh“ (engl: mesh: Masche, Netz, Schlinge) genannt, initiiert. Ein Netz besteht aus einem „coordinator“ und wahlweise einem oder mehreren „routern“ und „end devices“.

Ein ZigBee-Netzwerk besteht in seiner Grundstruktur aus einem Koordinator, einem oder mehreren Routern und Endgeräten.

Der Koordinator

Der Koordinator ist ein Netzwerkknoten, der vornehmlich das Netzwerk verwaltet. Er legt die Arbeitsfrequenz und die Netzwerknummer (ID) fest und gestattet Routern und Endgeräten den Zugang zum Netzwerk. Nachdem ein Netzwerk einmal etabliert ist, dient der Koordinator als Router. Er leitet Datenpakete an andere Netzteilnehmer weiter, dient aber auch als Datenquelle und –senke, kann also selbst Daten senden und empfangen.

Der Router

Der Router ist ein Vermittler von Datenpaketen und berechnet des besten Weg zum Ziel. In einem Netzwerk kann es mehrere Router geben. Wie auch der Koordinator ist jeder Router in der Lage, selbst als Datensender aufzutreten wie auch als Empfänger. Das ermöglicht den Aufbau weitreichender Netzwerke über größere Distanzen hinweg, etwa in einer weitläufigen Werkshalle, da jeder Router Datenpakete der weiter entfernten Endgeräte in Richtung Koordinator weiterreicht.

Das Endgerät („end device“)

Ein Endgerät liefert seine Daten bei seinem Router ab bzw. empfängt von diesem. Bevor das geschehen kann, erlaubt der Router den Zugriff (das Einloggen) in das Netzwerk.

Adressierung im Netzwerk

Soll ein Datenpaket über das Netzwerk zu einen bestimmten Empfänger gelangen, werden die Register DH und DL mit der Seriennummer des Empfängermoduls gefüllt. Um eine komplizierte Eingabe dieser 64-Bit-Seriennummern zu vereinfachen bzw. zu umgehen, ist es möglich, jedem Modul eine symbolische Adresse (einen Nicknamen) zu vergeben ( etwa „Koord“, „Sensor1“, „Sensor2“ etc.). Der Koordinator verwaltet alle Nicknamen. Das sendende Modul muss nur noch den Nicknamen des Empfängers kennen und ihn mit dem Befehl „AT DN“ kennzeichnen. Daten, die an den Koordinator des Netzwerkes gerichtet sind, können sehr einfach mit „ATDL0“ und „AT DH0“ adressiert werden.


Download von Dateien zu diesem Projekt

Zum Schluss einige Hinweise: Schaltplan, Layout etc. sind in der Datei xbee.zip im Downloadbreich verfügbar, ebenso wie ein kleines Testprogramm in Bascom-AVR-Basic für den ATMEGA2313. Wer sich das Löten von SMD nicht zutraut und auf USB verzichten kann, baut sich auf Lochaster einen RS232-Adapter. Die Zutaten: Eine 9-polige RS232-Buchse, ein IC MAX232 (3,3-V-Ausführung!!), vier 1uF-Kondensatoren. Das war’s und nun viel Spaß beim Experimentieren mit XBee!

Und hier geht es zum Download.