Projekt: Temperatur-Messsystem - Datenkommunikation


Status | aktiv |
Letzte Bearbeitung | 10.12.2017 |
Schaltpläne für PC-Anschluss und Funkmodul-Erweiterungen | |
Stücklisten für PC-Anschluss und Funkmodul-Erweiterungen | |
XCTU Software zur Konfiguration der XBee-Funkmodule | http://www.digi.com/products/xbee-rf-solutions/xctu-software/xctu |
Dokumentation der XBee-Funkmodule | http://www.digi.com/support/productdetail?pid=3257&type=documentation |
Homepage von PuTTY (Terminalprogramm) | http://www.putty.org/ |
Homepage von TeraTerm (Terminalprogramm) | http://ttssh2.osdn.jp/ |

Beschreibung | Allgemeine Informationen über die Datenkommunikation |
Kabelverbindung | Beschreibung der Datenkommunikation über Kabel |
Funkverbindung | Beschreibung der Datenkommunikation über Funk |
Datenübertragung | Beschreibung der übertragenen Datenpakete zwischen den Komponenten |
PC-Anschluss | Einbinden eines PC, Diagnose der Datenkommunikation |
In diesem Kapitel wird die Kommunikation zwischen den älteren Modulen des Temperatur-Messsystems beschrieben. Diese erfolgt über eine RS-232-Schnittstelle, die im nebenstehenden Bild als
Verbindungslinie in den Farben Grün und Orange dargestellt wird. Da die Übertragung hier grundsätzlich nur in eine Richtung erfolgt und auch keinerlei Handshaking verwendet wird, konnte die
Schnittstelle auf genau eine Datenleitung reduziert werden. Zusammen mit der Masse-Leitung ist also nur ein zweiadriges Kabel für die Verbindung notwendig. Über ein solches Kabel wird dann der Ausgang
(TX) eines sendenden Moduls mit einem Eingang (RX) eines empfangenden Moduls verbunden. Es ist auch möglich, mehrere Empfänger an einen Sender anzuschließen. Ein Empfänger kann aber immer nur die
Daten eines Senders verarbeiten.
Die Datenübertragung erfolgt unabhängig vom verwendeten Medium (Kabel oder Funk) asynchron mit einer festen Geschwindigkeit von 9600 Baud. Es werden 8 Datenbits und ein Stoppbit verwendet, ein
Paritätsbit wird nicht genutzt. Alle Datenpakete sind einfach strukturiert und bestehen aus ASCII-Text-Zeichen, die mit einem <CR> (Carriage Return, ASCII 13) abgeschlossen werden. So bleiben
die Daten überschaubar und können z.B. mit einem Terminalprogramm auf einem PC mitgelesen werden. Der genaue Aufbau der Datenpakete wird im Abschnitt Datenübertragung beschrieben.
Die Kabelverbindung ist aus technischer Sicht die einfachste und sicherste Möglichkeit, die Komponenten des Temperatur-Messsystems miteinander zu verbinden. Dafür befindet sich auf jedem Modul ein Treiber für eine RS-232-Schnittstelle. Die Kommunikation erfolgt grundsätzlich nur eine Richtung. Daraus ergibt sich, dass einige Module nur Daten senden und somit nur mit einem RS-232-Sender ausgestattet sind. Andere Module sind nur für den Empfang vorgesehen und besitzen deshalb nur einen RS-232-Empfänger. Eine Ausnahme ist hier das Web-Modul, dieses ist in der Lage, gleichzeitig RS-232-Daten zu senden und zu empfangen. Wegen der niedrigen Geschwindigkeit von 9600 Baud und der relativ hohen Pegel der RS-232-Schnittstelle ist eine sehr sichere Übertragung über große Entfernungen möglich. Ich habe die Grenzen nicht getestet, aber in meinem Haus versorgt ein Sensormodul insgesamt 4 Anzeigemodule, ein Web-Modul und einen PC. Dabei dürfte die gesamte Kabellänge der RS-232-Verbindung 100m erreichen. Ich habe ausschließlich Cat-5-Kabel verwendet, es kann aber auch klassisches Telefonkabel oder auch Koaxialkabel verwendet werden.
Wie schon erwähnt, kann ein Sender (Sensormodul) mehrere Empfänger (Anzeigemodule) mit Daten versorgen. Das ist zwar im RS-232-Standard nicht vorgesehen, funktioniert aber unter den gegebenen Bedingungen sehr gut.
Die Verbindungen können dabei in 2 Varianten hergestellt werden. Das nebenstehende Bild zeigt die sternförmige Variante: Vom Sender führt jeweils ein Kabel zu jedem Empfänger. Diese Variante kommt bei
meinem Messsystem zum Einsatz, da sich das Sensormodul im Hausanschlussraum befindet und von hier aus Kabel in alle Räume führen.

Es ist auch möglich, einen PC in das Kabelnetzwerk einzubinden. Dieser ist wie ein Anzeigemodul zu betrachten und hat die Funktion eines RS-232-Empfängers. Damit ist es möglich, die Software „TAnz“ zu nutzen, außerdem kann man zu Diagnosezwecken die empfangenen Daten mitlesen.
Die nebenstehende Schaltung ermöglicht den Datenempfang über die eingebaute RS-232-Schnittstelle des PC. Die an RX empfangenen Daten gelangen über den Steckverbinder J1 direkt an den RS-232-Anschluss
des PC. Über die Schnittstelle COM1 oder COM2 können die empfangenen Daten dann verarbeitet werden. Aktuelle PCs, Laptops oder Notebooks haben leider nur noch selten einen RS-232-Anschluss an Bord. In
diesem Fall kann man einen Adapter (USB auf RS-232) verwenden, der an einen freien USB-Anschluss angesteckt wird. Hier ist dann noch ein Treiber erforderlich, der in den meisten Fällen automatisch
installiert wird. Dieser Treiber stellt einen virtuellen COM-Port (COM3 oder höhere Nummer) zur Verfügung, über den die empfangenen Daten verarbeitet werden können.
Die Module des Temperatur-Messsystems sind ursprünglich nur für Kabelverbindungen entwickelt worden. Es ist aber möglich, alle Komponenten für eine Funk-Übertragung aufzurüsten. Grundsätzlich kann dafür jedes Funk-Modul verwendet werden, welches mit einer Baudrate von 9600 arbeitet und eine transparente Übertragung zulässt. Letzteres bedeutet, dass alle gesendeten Daten unverfälscht bei den Empfängern ankommen müssen. Ich habe mir Informationen über verschiedene Techniken angeschaut und mich für XBee S1 von der Firma Digi International entschieden. Wegen des verwendeten Übertragungsprotokolls werden diese Module auch als XBee 802.15.4 bezeichnet. Diese Technik ist recht ausgereift, lässt sich komfortabel über eine PC-Software konfigurieren und gut in alle Komponenten des Messsystems integrieren. Natürlich ist nicht alles perfekt: Die XBee-Module benötigen eine Spannung von 3,3V, die Anschlüsse haben ein exotisches Raster von 2,0mm und die Module sind relativ teuer (ab 28€).
Die XBee-S1-Module arbeiten im 2,4GHz-Bereich und sind in mehreren Versionen erhältlich, die sich zum einen in der Sende- und Empfangsleistung und zum anderen beim Antennen-Anschluss unterscheiden. Die Standard-Version XBee S1 arbeitet mit einer Sendeleistung vom 1mW, die Version XBee-PRO S1 mit einer Leistung von bis zu 63mW. Die PRO-Version ist etwas teurer und ermöglicht größere Reichweiten, allerdings muss man in Deutschland die Sendeleistung auf zulässige 10mW reduzieren. Beide Modul-Versionen gibt es mit verschiedenen Antennen-Varianten, z.B. mit einer Antenne auf der Platine, mit einer angelöteten Drahtantenne oder auch mit einem Schraubanschluss für eine externe Antenne (RPSMA). Ich verwende hier 3 XBee S1 Module mit einer Drahtantenne. Diese sind allerdings nicht im produktiven Einsatz und wurden zunächst nur für einen Testaufbau angeschafft. Da sich die Technik im Test aber gut bewährt hat, ist es nicht ausgeschlossen, dass zukünftige Komponenten meines Temperatur-Messsystems über Funk angebunden werden.
XBee USB
Für die Konfiguration der XBee-Module ist es erforderlich, das im folgenden Abschnitt beschriebene XBee USB aufzubauen. Hier werden nacheinander alle XBee-Module aufgesteckt, an einen PC angeschlossen und konfiguriert. Danach wird dieses Gerät nicht mehr benötigt, kann aber durchaus noch sinnvoll verwendet werden. Es stellt praktisch eine vollwertige Kommunikationseinheit dar, mit der man Daten von anderen Modulen im Funknetzwerk empfangen bzw. Daten an andere Module im Netzwerk senden kann. Zusammen mit einem Terminalprogramm wie z.B. PuTTY oder TeraTerm (siehe Downloads) erhält man ein Diagnose-Werkzeug für das Funknetzwerk. Weiterhin lässt sich damit die Software „TAnz“ über eine Funkverbindung nutzen.

Die letzten beiden Bauteile D101 und R101 sind an RSSI des XBee-Moduls angeschlossen. An diesem Anschluss wird beim Empfang eines Datenpaketes 4 Sekunden lang ein PWM-Wert ausgegeben, der von der Empfangsfeldstärke abhängig ist. So kann man an der Helligkeit der LED ungefähr auf die Feldstärke schließen (eine helle LED entspricht einem guten Empfang). RSSI wird allerdings nur dann aktiv, wenn empfangene Daten für das angeschlossene XBee-Modul bestimmt sind.
Übrigens, es gibt fertig aufgebaut Geräte, die die gleiche Funktion bieten wie mein XBee USB und oft sogar günstiger sind als meine Version. Wer den USB-Adapter lieber fertig kaufen möchte, sucht einfach im Netz nach „xbee usb“.
Alle XBee-Module können direkt auf entsprechende Buchsenleisten gesteckt werden. Leider sind diese im recht unüblichen 2mm-Raster, so dass man beim Einbau der Module zunächst passende Buchsenleisten
benötigt. Falls man (wie ich) die Module auf eine klassische Lochrasterplatine im 2,54mm-Raster aufstecken möchte, ist noch eine Adapterplatine wie im nebenstehenden Bild nötig. Hier sollte man im
ersten Schritt die 10-poligen Buchsenleisten im 2mm-Raster in die mit „UP“ beschriftete Seite stecken und einlöten. Dabei sollte man sehr vorsichtig arbeiten und nur wenig Lötzinn
verwenden. Mir ist es leider passiert, dass das Zinn bis in Buchse gelaufen ist und anschließend das Modul nicht mehr richtig aufgesteckt werden konnte. Die Buchsenleiste war nicht mehr zu retten und
musste ausgetauscht werden.

Alle Verbindungen werden auf der Unterseite der Platine hergestellt. Auch der Widerstand R101 findet auf dieser Platinenseite Platz. Hier wäre vielleicht ein SMD-Widerstand die bessere Wahl gewesen.

Beim erstmaligen Anschluss des XBee USB an den PC wird automatisch ein Treiber installiert (Silicon Labs CP210x USB to UART Bridge). Weiterhin wird ein virtueller COM-Port eingerichtet, über den später die Kommunikation stattfindet. Die Nummer des COM-Ports sollten wir uns merken, diese kann im Geräte-Manager von Windows unter Anschlüsse ausgelesen werden.
Der Konfigurationsvorgang selbst wird weiter unten erklärt. Ich möchte zunächst beschreiben, wie die XBee-Module in die verschiedenen Komponenten des Temperatur-Messsystems integriert werden können.Grundsätzlich übertragen alle Komponenten des Temperatur-Messsystems Daten nur in eine Richtung. Das heißt, es gibt Daten-Sender und Daten-Empfänger. Zur ersten Gruppe gehören die Sensormodule, zur zweiten Gruppe die Anzeigemodule, die Matrixuhr und die Wohnraumuhr 2. Eine Ausnahme bildet das Web-Modul, dieses kann sowohl Daten von einem Sensormodul empfangen als auch Daten an eine Matrixuhr senden. Ich habe für jede dieser 3 Kommunikations-Varianten eine XBee-Erweiterung entwickelt, die im folgenden Abschnitt vorgestellt wird.

Die nebenstehende Schaltung zeigt einen XBee Sender und dieser ist für die Sensormodule des Temperatur-Messsystems vorgesehen. Die Funktion ist schnell erklärt: Die zu
sendenden seriellen Daten werden am Anschluss TX direkt am Mikrocontroller abgegriffen, über den Spannungsteiler R201/R202 von einem 5V-Pegel auf einen 3,3V-Pegel reduziert und dann dem Dateneingang
DIN des XBee-Moduls zugeführt. Die Betriebsspannung von 3,3V für das XBee-Modul wird mit IC201 und C201 aus den 5V des Sensormoduls gewonnen.
Weiterhin ist der Strombedarf zu beachten: Ein XBee S1 benötigt laut Datenblatt 45mA beim Senden und 50mA beim Empfangen, beim XBee-PRO S1 sind das 180mA beim Senden und 55mA beim Empfangen (bezogen auf die reduzierte Sendeleistung von 10mW). Dieser Strom belastet den 5V-Spannungsregler des Sensormoduls zusätzlich, möglicherweise muss er mit einem Kühlblech oder Kühlkörper versehen werden.
XBee Empfänger

Hinweis: Das Empfangssignal (RX) muss unbedingt direkt zum Mikrocontroller des Anzeigemoduls geführt werden. Der für die RS-232-Verbindung vorgesehene Dateneingang ist nicht
dafür geeignet, da er das Signal invertiert. Weiterhin muss bei einigen Komponenten der originale Pegelwandler für die RS-232-Schnittstelle vom Mikrocontroller abgeklemmt werden. Man muss sich also
bei einem Anzeigemodul entscheiden, ob man Daten über Kabel oder über Funk empfangen möchte.
Auch hier muss der Strombedarf beachtet werden und der 5V-Spannungsregler gegebenenfalls mit einem Kühlblech oder Kühlkörper ausgestattet werden.
Die nachfolgende Tabelle zeigt einen Überblick über alle Komponenten des Temperatur-Messsystems, die mit dem XBee Empfänger betrieben werden können. Weiterhin enthält die
Tabelle den richtigen Anschluss für das RX-Signal und weitere wichtige Informationen:
Komponente | RX-Anschluss | Besonderheiten |
---|---|---|
Anzeigemodul 1 | IC2-2 | gegebenenfalls Kühlblech oder Kühlkörper an IC1 erforderlich; die Bauteile R1, D2 und Tr1 werden nicht benötigt |
Anzeigemodul 2 | IC1-27 | Verbindung zwischen IC1-27 und IC8-9 trennen |
Anzeigemodul 2a | IC1-27 | Verbindung zwischen IC1-27 und IC10-9 trennen |
Anzeigemodul 3 | IC1-14 | gegebenenfalls Kühlblech oder Kühlkörper an IC2 erforderlich; die Bauteile R24, D9 und T6 werden nicht benötigt |
Matrixuhr | IC1-16 | die Bauteile J8, R12, D2 und T8 werden nicht benötigt |
Wohnraumuhr 2 | IC1, Con1-27 | Die Brücke J7 auf dem Crumb128 muss offen bleiben |
XBee Raspberry Pi

Konfiguration
Sind nach dem oben stehenden Hinweis alle Störquellen deaktiviert, dann wird auf das Fenster mit den Moduldaten auf der linken Seite geklickt. XCTU liest dann die aktuellen Konfigurationsdaten des Moduls aus und zeigt sie auf der rechten Seite an. Das folgende Bild zeigt einen Teil der zahlreichen Einstellmöglichkeiten:

Bevor mit der Konfiguration begonnen wird, empfehle ich zunächst ein Update der Firmware. Höchstwahrscheinlich wird das XBee-Modul auch ohne diesen Schritt funktionieren, sinnvoll ist aber, die Firmware aller Module im Funknetzwerk auf den gleichen aktuellen Stand zu bringen. Rechts oben gibt es den Button Update und beim Klick auf diesen öffnet sich ein Fenster mit weiteren Eingabemöglichkeiten:

Hier sind das linke und mittlere Feld Product family und Function set normalerweise schon richtig voreingestellt. Im rechten Feld Firmware version wählt man die neueste Version aus und vergleicht diese mit der aktuellen Firmware des XBee-Moduls (ist rechts im darunter liegenden Programmfenster zu sehen). Stimmt die Version so wie im Bild überein, dann besteht kein Handlungsbedarf und das Update-Fenster kann über den (im Bild nicht sichtbaren) Button Cancel wieder geschlossen werden. Liegt eine neuere Firmware-Version vor, dann klickt man unten auf den (hier nicht sichtbaren) Button Update. Der Update-Vorgang dauert ungefähr eine Minute, anschließend bootet das angeschlossene Modul mit der neuen Firmware-Version.
Sollte das zu konfigurierende XBee-Modul schon einmal im Einsatz gewesen sein, dann empfiehlt sich an dieser Stelle das Setzen einer Default-Einstellung. Hierfür sind 2 Schritte erforderlich: Ein Klick auf den Button Default und die Bestätigung mit Yes lädt zunächst alle Default-Werte, ein weiterer Klick auf den Button Write schreibt die Werte in den Speicher des XBee-Moduls. Bei einem fabrikneuen Modul kann diese Prozedur entfallen.Die folgende Tabelle listet alle Einstellungen auf, bei denen eine Änderung sinnvoll ist. Die Reihenfolge entspricht der Anordnung in der XCTU-Software. Bevor irgendwelche Einstellungen verändert werden, sollte man genau überlegen, wie das zukünftige Funknetz aussehen soll. Es empfiehlt sich das Erstellen einer Übersicht (elektronisch oder auf Papier), in der man die festgelegten Adressen und weitere Einstellungen für jedes XBee-Modul notiert.
Einstellung | Wertebereich | Voreinstellung | Beschreibung |
---|---|---|---|
ID PAN ID | 0 - FFFF (hexadezimal) | 3332 | Eine Änderung der PAN ID (Netzwerk-Nummer) wird empfohlen, um Konflikte mit anderen XBee-Netzwerken zu vermeiden, allerdings ist die Wahrscheinlichkeit eines Konflikts gering. Alle Module eines Netzwerks müssen mit der gleichen PAN ID arbeiten. |
DL Destination Address Low | 0 - FFFF (hexadezimal) | 0 | Sollte bei allen Modulen geändert werden, die Daten senden. Siehe dazu auch die Beispiel-Konfigurationen weiter unten. |
MY 16-bit Source Address | 0 - FFFF (hexadezimal) | 0 | Sollte bei allen Modulen geändert werden. Siehe dazu auch die Beispiel-Konfigurationen weiter unten. |
EE AES Encryption Enable | 0 / 1 | 0 | Die Aktivierung wird empfohlen, um die Datenübertragung zu verschlüsseln. Diese Einstellung muss bei allen Modulen im Netzwerk gleich sein. |
KY AES Encryption Key | maximal 32 Hexadezimal-Zeichen | Der hier eingegebene Schlüssel muss bei allen Modulen im Netzwerk identisch sein, wenn die Verschlüsselung aktiviert ist (EE = 1). Ein eingegebener Schlüssel kann übrigens nicht wieder ausgelesen werden. Aus diesem Grund sollte der Schlüssel notiert oder in einer Datei gespeichert werden. | |
NI Node Identifier | maximal 20 ASCII-Zeichen | Hier kann ein Name eingetragen werden, um das Modul bei der Konfiguration eindeutig zu identifizieren, z.B. Sensormodul | |
PL Power Level | 0 - 4 | 4 | Bei XBee-PRO-Modulen muss hier die Einstellung auf 0 gesetzt werden, um die Sendeleistung auf zulässige 10mW herabzusetzen. |
Nach der Änderung einer Einstellung muss diese im XBee-Modul gespeichert werden. Dazu dient der symbolische Schreibstift ganz rechts in jeder Zeile. Man kann auch oben auf den Button Write klicken, dann werden alle geänderten Einstellungen gespeichert.
Hinweis: Wirklich wichtig für die Funktion sind eigentlich nur die beiden Einstellungen DL und MY. Bei allen anderen Einstellungen können die Default-Werte verwendet werden (außer PL bei XBee-PRO-Modulen).
Beispiel-Konfigurationen
- Die PAN ID (Einstellung ID) muss übereinstimmen.
- Die Zieladresse des Datenpaketes DL muss mit der eigenen Adresse MY des empfangenden Moduls übereinstimmen.
- Bei eingeschalteter Verschlüsselung (EE = 1) muss der Schlüssel in KY übereinstimmen.
Sind alle Bedingungen erfüllt, dann werden die empfangenen Daten ausgegeben. Außerdem wird eine Art Empfangsbestätigung zum sendenden Modul geschickt. Erhält der Sender diese Bestätigung nicht, dann wird das Datenpaket erneut auf die Reise geschickt (bis zu 3 mal).
Beispiel-Konfiguration 1
Das nebenstehende Bild zeigt eine typische Anwendung: ein Sensormodul sendet Daten an 2 Anzeigemodule. Das Sensormodul wird über die Einstellung MY = 1 auf die Adresse 1
gesetzt. Weiterhin wird über die Einstellung DL = 2 festgelegt, dass alle Daten zur Adresse 2 gesendet werden sollen.
Beispiel-Konfiguration 2

Die Adresse 3 wurde hier über die Einstellung MY = 3 der Matrixuhr zugewiesen, somit bekommt nur die Matrixuhr die vom Web-Modul übermittelten Daten. Da die Matrixuhr keine
Daten versendet, bleibt die Einstellung DL auf 0. Alternativ lässt sich die Matrixuhr über die Einstellung MY = 2 auch so einstellen, dass sie die Daten
vom Sensormodul empfängt. Diese Option sollte man wählen, wenn kein Web-Modul vorhanden ist.
Probleme
Im Gegensatz zur soliden Kabelverbindung funktionieren Funkstrecken nicht immer problemlos. Zwar werden die im Datenblatt des XBee S1 angegebenen Reichweiten von 30m indoor oder 90m outdoor unter idealen Bedingungen erreicht, aber nur selten sind die Bedingungen in einem Haus oder in einer Wohnung ideal. Meine Erfahrungen sind folgende: Haben die XBee-Module eine direkte Sicht, dann klappt die Kommunikation ohne Probleme. Es funktioniert auch, wenn die Funkstrecke durch eine Wand oder durch eine Decke führt. Hier ist allerdings die Ausrichtung der Antennen sehr wichtig. Die besten Ergebnisse erzielt man, wenn die Antennen aller Funkmodule in die gleiche Richtung zeigen, also parallel ausgerichtet sind. Das funktioniert übrigens in jeder Richtung und muss nicht unbedingt senkrecht nach oben sein. Das ist allerdings bei mehr als 2 Kommunikationspartnern nicht immer einfach zu realisieren und muss einfach ausprobiert werden.
In diesem Abschnitt wird beschrieben, welche Informationen zwischen den Komponenten des Temperatur-Messsystems übertragen werden. Zu diesen Informationen gehören hauptsächlich Temperaturwerte, Luftfeuchtigkeitswerte, Luftdruckwerte sowie Alarmmeldungen. Diese Informationen werden in einfache Datenpakete gepackt und dann entweder über Kabel oder Funk zu den Empfängern übertragen. Insgesamt gibt es 5 Typen von Datenpaketen, welche folgendermaßen aufgebaut sind:
Typ 1 - Sensorbelegung
abcdefgh | 8 Zeichen + <CR> |
a | Anzahl der Sensoren an Bus 1 |
b | Anzahl der Sensoren an Bus 2 |
c | Anzahl der Sensoren an Bus 3 |
d | Anzahl der Sensoren an Bus 4 |
e | Anzahl der Sensoren an Bus 5 |
f | Anzahl der Sensoren an Bus 6 |
g | Anzahl der Sensoren an Bus 7 |
h | Anzahl der Sensoren an Bus 8 |
Dieser Datentyp zeigt an, wie viele Sensoren an jedem 1-Wire-Bus des Sensormoduls angeschlossen sind. Jeder der 8 Buchstaben (a-h) entspricht einem Wert zwischen 0 und 27, wobei die Werte 0-9 direkt angezeigt und die Werte 10-27 durch die Buchstaben A-R repräsentiert werden. Wenn man das im Kapitel Sensormodul 2/3 beschriebene Beschaltungsbeispiel verwendet, dann ergibt sich folgende Sensorbelegung:
33000200 3 Sensoren befinden sich an Bus 1, weitere 3 Sensoren an Bus 2 und nochmals 2 Sensoren an Bus 6.Dieser Datentyp wird nur einmal beim Start eines Sensormoduls übertragen und hat ansonsten keine große Bedeutung.
Typ 2 - Temperaturwert
n:ttt.t | 7 Zeichen + <CR> |
n | Sensorkennung |
: | Trennzeichen |
ttt.t | Temperaturwert |
Mit diesem Datentyp wird ein Temperaturwert in der Einheit °C übermittelt. Die Sensorkennung n liegt im Bereich 1-8 (entspricht Sensor 1-8) oder a-s (entspricht Sensor 9-27). Das Trennzeichen ist immer ein Doppelpunkt und der eigentliche Wert besteht immer aus 3 Dezimalstellen, einem Dezimalpunkt und einer Nachkommastelle. Führende Nullen an der Hunderter- oder Zehnerstelle werden immer durch Leerzeichen ersetzt. Bei Temperaturen unter 0°C wird das Minuszeichen direkt vor den Wert gesetzt, also entweder an die Hunderter- oder an die Zehnerstelle. Hier sind einige Beispiele:
3: 22.6 Der Temperatursensor 3 übermittelt einen Wert von 22,6°C.4: 8.7 Der Temperatursensor 4 übermittelt einen Wert von 8,7°C.
5: -4.2 Der Temperatursensor 5 übermittelt einen Wert von -4,2°C.
c:-21.0 Der Temperatursensor 11 übermittelt einen Wert von -21,0°C.
Der mögliche Temperaturbereich wird von den verwendeten 1-Wire-Sensoren bestimmt und liegt zwischen -55°C und 125°C. Dieser Datentyp wird vom Sensormodul zyklisch gesendet.
Typ 3 - Luftdruckwert
w:_dddd | 7 Zeichen + <CR> |
w | Sensorkennung |
: | Trennzeichen |
_ | Leerzeichen |
dddd | Luftdruckwert |
Mit diesem Datentyp wird der Luftdruckwert in der Einheit hPa (Hektopascal) übermittelt. Da es nur einen Luftdrucksensor im System gibt, wird diesem die Sensorkennung w fest zugeordnet. Das Trennzeichen ist immer ein Doppelpunkt, dem sich ein Leerzeichen anschließt. Der Luftdruckwert ist grundsätzlich 4-stellig und bei Werten unter 1000hPa wird die Tausenderstelle durch ein Leerzeichen ersetzt. Auch für diesen Datentyp möchte ich 2 Beispiele zeigen:
w: 1014 Der Luftdruck beträgt 1014hPa.w: 997 Der Luftdruck beträgt 997hPa.
Der Luftdruckwert kann im Bereich zwischen 200hPa und 1150hPa liegen. Auch dieser Datentyp wird zyklisch gesendet.
Typ 4 - Luftfeuchtigkeitswert
n:__fff | 7 Zeichen + <CR> |
n | Sensorkennung |
: | Trennzeichen |
__ | 2 Leerzeichen |
fff | Luftfeuchtigkeitswert |
Mit diesem Datentyp wird der Luftfeuchtigkeitswert in der Einheit %RH (Relative Humidity = relative Luftfeuchtigkeit) übermittelt. Die Sensorkennung n liegt im Bereich x-z (entspricht Luftfeuchtigkeitssensor 1-3). Nach dem Doppelpunkt als Trennzeichen folgen immer 2 feste Leerzeichen. Diesen schließt sich der 3-stellige Luftfeuchtigkeitswert im Bereich von 0% bis 100% an. Ist der Wert kleiner als 100 oder kleiner als 10, dann werden weitere Leerzeichen eingefügt. Auch für diesen Datentyp möchte ich 2 Beispiele zeigen:
x: 64 Der Luftfeuchtigkeitssensor 1 übermittelt einen Wert von 64%RH.y: 9 Der Luftfeuchtigkeitssensor 2 übermittelt einen Wert von 9%RH.
Dieser Datentyp wird ebenfalls zyklisch gesendet.
Typ 5 - Alarm
n:a | 3 Zeichen + <CR> |
n | Alarmkennung |
: | Trennzeichen |
a | Alarmwert |
Mit diesem Datentyp wird eine Alarmmeldung übermittelt. Die Alarmkennung n ist ein Buchstabe im Bereich A-D, wobei A für den Alarm 1 verwendet wird, B für den Alarm 2 usw. Das Trennzeichen ist immer ein Doppelpunkt und der Alarmwert ist entweder 0 oder 1, wobei 0 hier „Alarmkontakt geöffnet“ und 1 „Alarmkontakt geschlossen“ bedeutet. Auch hier noch 2 Beispiele:
B:1 Alarmkontakt 2 ist geschlossen.C:0 Alarmkontakt 3 ist geöffnet.
Dieser Datentyp wird ebenso wie die Sensorwerte zyklisch übermittelt. Zusätzlich wird jede Status-Änderung eines Alarms sofort übermittelt, damit angeschlossene Anzeigemodule einen ausgelösten Alarm sofort signalisieren können.
Hinweis: Es gibt noch eine besondere Form der Datenkommunikation zwischen dem Web-Modul und der Matrixuhr. Diese wird ausführlich bei der Matrixuhr im Abschnitt Datenkommunikation (Web-Modul-Betrieb) beschrieben.
In den Abschnitten Kabelverbindung und Funkverbindung wurde bereits die notwendige Hardware vorgestellt, die es möglich macht, einen PC als Komponente des Temperatur-Messsystems zu verwenden. Damit lässt sich z.B. die Software „TAnz“ als virtuelles Anzeigemodul verwenden. Weiterhin kann man den PC zur Diagnose bei Problemen mit der Datenkommunikation einsetzen. Alle vom Sensormodul oder Web-Modul gesendeten Datenpakete können mitgelesen und auch aufgezeichnet werden. Verwendet man ein XBee USB, dann hat man zusätzlich die Möglichkeit, Datenpakete an Anzeigemodule, die Matrixuhr oder die Wohnraumuhr 2 zu senden.
Als Software für die Diagnose dient ein Terminalprogramm, welches auf den COM-Port eingestellt wird, an dem sich unsere Kommunikations-Hardware befindet. Falls man noch einen PC mit 9-poligem D-Sub-Anschluss hat, dann wird hier meist COM1 verwendet. Bei Verwendung eines USB-auf-RS-232-Adapters oder dem XBee USB wird der COM-Port vom Windows-System festgelegt. Hier muss man im Geräte-Manager unter Anschlüsse nachschauen. Als Terminalprogramm empfehle ich PuTTY oder TeraTerm (siehe Downloads).
Das nebenstehende Bild zeigt die wichtigsten Einstellungen bei PuTTY. Hier ist als Beispiel COM1 eingestellt, bei Verwendung eines USB-Anschlusses muss der COM-Port entsprechend angepasst werden.
An dieser Stelle sollten alle Einstellungen gespeichert werden. Dafür wird im linken Fenster Session ausgewählt und auf der rechten Seite zunächst bei
Connection type: der Punkt auf Serial gesetzt. Anschließend kann in das Feld Saved Sessions ein Name, z.B.
Temperaturmesssystem eingegeben werden. Mit einem Klick auf den Button Save speichert PuTTY alle Einstellungen. Dabei wandert der eingegebene Name in
Liste unterhalb des Feldes Saved Sessions. Bei jedem Start von PuTTY erscheint dieses Bild und man kann durch einen Doppelklick auf den Namen in der Liste die Einstellung laden
und starten.

Im nächsten Schritt werden die Einstellungen der seriellen Schnittstelle wie im nebenstehenden Bild kontrolliert, diese erreicht man über das nun deutsche Hauptmenü Einstellungen und die Option Serieller Port.
Auch bei TeraTerm sind noch zwei weitere Einstellungen erforderlich. Eine sorgt dafür, dass alle empfangenen Datenpakete in einer neuen Zeile erscheinen. Dazu werden im Hauptmenü nochmals die Einstellungen aufgerufen und die Option Terminal-Einstellungen ausgewählt. Hier muss im Feld Neue Zeile die Einstellung Übertrage auf CR+LF gesetzt werden. Im gleichen Fenster ist auch die zweite Einstellung Lokales Echo zu finden, die aktiviert werden muss. Damit werden später alle Tastatureingaben im Terminalfenster sichtbar.
Auch bei TeraTerm lassen sich alle Einstellungen speichern. Dies erfolgt über das Menü Einstellungen und die Option Setup sichern. Nach der Eingabe
eines Dateinamens hat man hier die Möglichkeit, die aktuellen Einstellungen zu speichern. Später kann man über die Option Setup laden und die Auswahl der Datei die
Einstellungen wieder laden. Übernimmt man hier den vorgeschlagenen Namen TERATERM.INI, dann wird unsere aktuelle Einstellung als Standard gespeichert und automatisch beim Start
von TeraTerm geladen.
Das Bild links zeigt PuTTY beim Empfang der Daten des Sensormoduls. Hier kommen die Daten über eine Kabelverbindung an COM1 in den PC. Verwendet man einen USB-RS232-Adapter, dann stellt man am
Terminal den vom Adapter genutzten COM-Port ein und bekommt so das gleiche Ergebnis.
Dieses Bild zeigt PuTTY beim Datenempfang über ein an COM10 angeschlossenes XBee USB. Bei diesem wurde vorher der Parameter MY = 3 eingestellt, somit
werden jetzt die Datenpakete empfangen und angezeigt, die für die Matrixuhr bestimmt sind.
Wenn nur einzelne Einstellungen eines XBee-Moduls geändert werden sollen, dann kann man dies auch mit dem Terminal-Programm erledigen. Das nebenstehende Bild zeigt einen Dialog mit dem XBee-Modul über
so genannte AT-Befehle. Hier wurde die eigene Adresse des XBee-Moduls MY von 2 auf 3 geändert.
Die folgende Tabelle erklärt die Eingaben und zeigt damit den grundsätzlichen Ablauf für die Konfiguration mit AT-Befehlen:
Tastatur-Eingabe | XBee-Antwort | Funktion |
---|---|---|
+++ | OK | Umschalten vom transparenten Daten-Modus in den AT-Befehlsmodus |
atmy<Enter> | 2 | Abfrage der aktuellen Einstellung MY (ist auf 2 gesetzt) |
atmy3<Enter> | OK | Setzen der neuen Einstellung MY = 3 |
atmy<Enter> | 3 | Abfrage der aktuellen Einstellung MY zur Kontrolle (ist jetzt auf 3 gesetzt) |
atcn<Enter> | OK | Zurückschalten vom AT-Befehlsmodus in den transparenten Daten-Modus |
Hinweise: Die Eingabe der 3 Plus-Zeichen muss innerhalb einer Sekunde erfolgen und es darf anschließend nicht auf die <Enter>-Taste gedrückt werden. Alle anderen Eingaben müssen jedoch mit der <Enter>-Taste abgeschlossen werden. Alle Parameter werden vom XBee-Modul als Hexadezimalwerte gelesen und ausgegeben. Soll beispielsweise die Adresse MY = 30 gesetzt werden, dann muss das Kommando so aussehen: atmy1e<Enter>. Zwischen den Eingaben der AT-Kommandos dürfen nicht mehr als 10 Sekunden vergehen, anderenfalls schaltet das XBee-Modul in den Daten-Modus zurück. Das bedeutet auch, dass man das letzte Kommando atcn<Enter> weglassen und stattdessen 10 Sekunden warten kann. Die Eingaben werden übrigens nicht dauerhaft gespeichert und gehen beim nächsten Neustart des XBee-Moduls verloren. Sollen die geänderten Einstellungen erhalten bleiben, dann gibt man vor der Rückkehr in den Daten-Modus das Kommando atwr<Enter> ein.
Mit einem XBee USB ist es auch möglich, Daten an Anzeigemodule, an eine Matrixuhr oder eine Wohnraumuhr 2 zu senden. Die folgende Übersicht zeigt die dafür notwendigen Einstellungen des XBee-Moduls:
Daten an Anzeigemodule senden: MY = 1, DL = 2
Daten an eine Matrixuhr senden: MY = 2, DL = 3
Beim Senden von Datenpaketen ist folgendes zu beachten: Grundsätzlich können alle Typen von Datenpaketen in der richtigen Syntax über die PC-Tastatur eingegeben und mit <Enter> abgeschlossen werden. Allerdings sollten weitere Sender wie das Sensormodul oder das Web-Modul während solcher Experimente deaktiviert werden. Anderenfalls vermischen sich die Daten und die Empfänger erhalten fehlerhafte Daten.