Beruflich Dokumente
Kultur Dokumente
Diplomarbeit
von
Karlsruhe, 31.10.2010
II
Abstract
Bei einem Massenanfall von Verletzten (MANV) kommt es oft zu personellen Engpässen, so
dass eine ausreichende Überwachung der Patienten nicht gewährleistet ist. Abhilfe kann der
am IBT entwickelte Erste-Hilfe-Sensor schaffen, der mit einem neuartigen Verfahren Puls
und Atmung eines einzelnen Patienten überwacht. Zur Überwachung mehrerer Patienten
muss ein kabelloses Netzwerk aus diesen Sensoren gebildet werden. Entsprechende Netzwerk-
technologien existieren zwar, müssen aber in die bestehende Lösung integriert und um eine
geeignete Überwachungssoftware ergänzt werden. Dies ist Aufgabe der vorliegenden Arbeit.
Hierzu wird zunächst eine Untersuchung aller in Frage kommenden Funktechnologien unter
besonderem Augenmerk auf Energieeffizienz und Stabilität vorgenommen. ZigBee stellt sich
als bestgeeignetes Protokoll heraus, und es wird entschieden, eine Umsetzung auf Basis eines
Moduls des Herstellers Atmel durchzuführen. Bei dessen genauerer Betrachtung werden ei-
nige Schwierigkeiten identifiziert – beispielsweise das Auftreten von asynchronen Ereignissen,
das zum Synchronisationsverlust führen kann. Lösungen für diese Schwierigkeiten werden
gefunden und an Überwachungssoftware sowie Erste-Hilfe-Sensor konkret umgesetzt.
Zur Gewährleistung einer hohen Flexibilität wird ein komponentenbasierter Ansatz gewählt.
Hierdurch wird nicht nur die Austauschbarkeit der einzelnen Komponenten – z.B. der ein-
gesetzten Funktechnologie – erreicht, sondern auch deren Verteilung über mehrere Rechner
ermöglicht. Auf diesem Weg wird sowohl die Skalierbarkeit erhöht als auch eine Grundla-
ge für verbesserte Ausfallsicherheit geschaffen. Die Verbindung der einzelnen Komponenten
wird über Corba-Schnittstellen realisiert. Diese sind so gestaltet, dass auch externe Software
angebunden werden kann. Exemplarisch gezeigt wird dies am Beispiel einer Weboberfläche.
Damit wird gleichzeitig die Verwendung von Mobiltelefonen als Endgeräte zur Patienten-
überwachung ermöglicht, ohne dass eine Installation von Software auf diesen Geräten not-
wendig ist. Darüber hinaus wird eine Platine entwickelt, auf der das ZigBee-Modul und der
Mikrocontroller des Erste-Hilfe-Sensors integriert sind. Sie dient als Werkzeug zur Firmware-
Entwicklung für den erweiterten Erste-Hilfe-Sensor und ist gleichzeitig auch Testumgebung.
Bei einer eingehenden Evaluierung des Gesamtsystems wird die Interoperabilität aller Kom-
ponenten gezeigt. Außerdem wird die Leistungsaufnahme des ZigBee-Moduls in Abhängigkeit
von den Parametern des Energiesparmodus untersucht. Insgesamt zeigt sich, dass Laufzeit,
Reichweite und die erreichbare Anzahl an Sensoren für MANV-Szenarien mit hunderten von
Verletzten ausreichend sind.
III
Vorwort
Der Erste-Hilfe-Sensor verwendet ein neuartiges Verfahren zur Überwachung von Pa-
tienten mit Hilfe eines induktiven Verfahrens. Dies bietet einige Vorteil gegenüber
klassischen EKG-basierten Verfahren. Die eigentliche Funktionsweise des Erste-Hilfe-
Sensors ist für die vorliegende Arbeit nicht weiter relevant, lediglich auf den verwen-
deten Mikrocontroller muss Rücksicht genommen wurden.
Bei dieser Arbeit wurde ich von zahlreichen Helfern unterstüzt, bei denen ich mich
auf diesem Weg bedanken möchte. Die wichtigste Person bei der Durchführung die-
ser Arbeit war mein Projektpartner Herr cand. inform Jan Tepelmann, der auf meine
Bitten bereit war, die Implementierung der Überwachungssoftware in Form einer Stu-
dienarbeit durchzuführen. Er war immer ein wertvoller Diskussionpartner, ohne dessen
Hilfe es in der gegebenen Zeit nicht möglich gewesen, diese Arbeit in der vorliegenden
Form anzufertigen.
Mein besonderer Dank gilt meinen beiden Gutachtern und meinem Betreuer: Herr
Professor Dr. Armin Bolz hat durch seine spannende Vorlesung das Interesse an der
biomedizinischen Technik erst bei mir geweckt, und sich sehr viel Zeit genommen, mich
zu dieser interdisziplinären Arbeit zu ermutigen. Herr Professor Dr. Rüdiger Dillmann
hat sich bereit erklärt, von Seiten der Fakultät für Informatik ein Gutachten durch-
zuführen – ohne dies wäre ein Durchführen dieser Arbeit gar nicht möglich gewesen.
Mein Betreuer, Herr Dr. Marc Jäger hat mir immer wieder mit wertvollen Gesprächen
zur Seite gestanden, und mir viele Tipps zur korrekten Durchführung gegeben. Ins-
besondere hat er mir als Diplomand ein hohes Maß an Vertrauen entgegengebracht,
und mir so ermöglicht, das Geplante praktisch umzusetzen. Seine Firma, die Neocor
GmbH hat dabei die Kosten für die notwendige Hardware übernommen.
Von unschätzbarem Wert während des Studiums war und ist mein langjähriger gu-
ter Freund Herr Juniorprofessor Dr. Christoph Sorge, der sich nicht nur die Zeit zum
Korrekturlesen genommen, sondern mir bereits seit vielen Jahren wertvolle Tipps und
Hilfestellungen zum wissenschaftlichen Arbeiten gegeben hat, und sich immer wieder
Zeit für meine Sorgen und Nöte nimmt. Eine weitere sehr wertvolle Hilfe war Herr
cand. inform. Alexander Neumann, der vor vielen Jahren die Lust auf Mikrocontroller
bei mir geweckt hat, und mir während der Diplomarbeit ein wichtiger Diskussionspart-
ner für Hardwarefragen war. Auch meinem Freund Herrn Dipl.-Inform. (FH) Markus
Müller möchte ich für das Korrekturlesen danken. Sehr herzlich wurde ich von den
Mitarbeitern des IBT aufgenommen. Hierbei bedanke ich mich insbesondere bei Herrn
M.-Eng Daniel Wettach, der mir bei Fragen zum ADuC-Microcontroller immer wei-
tergeholfen hat, sowie Herrn Dipl.-Ing Stefan Fernsner für die Hilfe beim Erstellen der
MANVNode-Platinen. Auch bedanken möchte ich mich bei Frau Dipl.-Phys. Kerstin
Grimmel, Herrn Dipl.-Ing Nikolas Lentz und Herrn M. Sc. Firas Salih für zahlreiche
anregende und hilfreiche Diskussionen.
Von ganzem Herzen bedanken möchte ich mich bei meiner Lebenspartnerin Frau Dipl.-
Phys. Jennifer Girrbach sowie meinen Eltern, meinen Geschwistern und meiner Familie
und Freunden für den Rückhalt den sie mir in dieser anstrengenden Zeit gegeben ha-
ben, und den Mut, den sie mir zusprachen.
VI
Inhaltsverzeichnis
Abbildungsverzeichnis XIV
Tabellenverzeichnis XV
Quellcodeverzeichnis XVII
Glossar XXIX
1. Einleitung 1
1.1. Motivation der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Aufgaben und Ziele der Arbeit . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Gliederung und Vorgehensweise der Arbeit . . . . . . . . . . . . . . . . 4
2. Grundlagen 7
2.1. Grundlagen der kabellosen Übetragung . . . . . . . . . . . . . . . . . . 7
2.1.1. Paketvermittelte Übertragung . . . . . . . . . . . . . . . . . . . 7
2.1.2. Frequenzspreizung . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.2.1. FHSS: Frequency Hoping Spread Spectrum . . . . . . 9
2.1.2.2. DSSS: Direct Sequence Spread Spectrum . . . . . . . . 9
2.1.2.3. FHSS vs. DSSS . . . . . . . . . . . . . . . . . . . . . . 10
2.2. Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1. Programmiersprache . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3. Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4. Corba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Inhaltsverzeichnis
4. Analyse 35
4.1. Anforderungen an ein kabelloses System zur Überwachung von Patienten 35
VIII
Inhaltsverzeichnis
5. Entwurf 51
5.1. Gesamtsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2. MANVNode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.2.1. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2.1.1. Spannungsversorgung . . . . . . . . . . . . . . . . . . 57
5.2.1.2. Serielle Schnittstellen . . . . . . . . . . . . . . . . . . . 58
5.2.1.3. JTAG . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.1.4. LED-Anzeige . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.1.4.1. Diagnosecodes . . . . . . . . . . . . . . . . . 61
5.2.2. Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.2.2.1. Ansteuerung des UARTs . . . . . . . . . . . . . . . . . 62
5.2.2.2. Ansteuerung des ZigBit-Modul . . . . . . . . . . . . . 62
5.3. ZigBee-USB-Stick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.4. MANVSuite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.5. MANVConnector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.5.1. Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.5.2. Repräsentation eines ZigBit-Moduls . . . . . . . . . . . . . . . . 70
5.5.3. Synchronisierung der Befehlsübertragung . . . . . . . . . . . . . 71
IX
Inhaltsverzeichnis
7. Ergebnisse 93
7.1. Realisierbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.1.1. Integrierbarkeit in den Erste-Hilfe-Sensor . . . . . . . . . . . . 93
7.1.2. Interoperabilität aller Komponenten . . . . . . . . . . . . . . . 93
7.1.2.1. Durchführung . . . . . . . . . . . . . . . . . . . . . . . 94
7.1.2.2. Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . 95
7.1.3. Austauschbarkeit des MANVConnectors . . . . . . . . . . . . . 95
7.1.4. Anbindbarkeit an externe Software . . . . . . . . . . . . . . . . 96
7.1.4.1. Durchführung . . . . . . . . . . . . . . . . . . . . . . . 96
7.1.4.2. Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . 97
7.2. Leistungsaufnahme des ZigBit-Moduls . . . . . . . . . . . . . . . . . . 97
7.2.1. Leistungsaufnahme im Normalbetrieb . . . . . . . . . . . . . . . 98
7.2.2. Leistungsaufnahme bei Verwendung des Energiesparmodus. . . . 101
7.2.3. Sonderfälle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
7.2.4. Batterielaufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
7.3. Reichweite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
7.3.1. Reichweite im Freien . . . . . . . . . . . . . . . . . . . . . . . . 106
7.3.2. Reichweite innerhalb geschlossener Räume . . . . . . . . . . . . 107
7.4. Maximale Teilnehmerzahl des Netzwerke . . . . . . . . . . . . . . . . . 107
X
Inhaltsverzeichnis
8. Diskussion 109
XI
Inhaltsverzeichnis
Literaturverzeichnis 136
XII
Abbildungsverzeichnis
6.1. MANV-USB-Stick. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.2. Fertig bestückte Platine der MANVNode. . . . . . . . . . . . . . . . . . 80
6.3. Komponentendiagramm der CORBA-Schnittstellen. (Quelle: Jan Te-
pelmann) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
XIV
Tabellenverzeichnis
7.1. Berechnung von IP owersave für exemplarische Werte von tsleep und tawake . 104
BitCloud SDK zur Erstellung von Firmware für die ZigBee-Module der
Firma Atmel.
Bluetooth Kabelloser Übertragungsstandard für WPANs.
Broadcast Datenpaket, das an alle Empfänger im Netzwerk gesendet wird.
Browser Siehe Webbrowser.
BSD UNIX -artiges Betriebssystem.
Bus Verbindung zwischen mehreren Geräten, bei denen alle Geräte
an einen gemeinsamen Übertragungsweg angeschlossen sind.
Busy-Waiting Warten auf ein Ereignis unter Verschwendung von Prozessor-
leistung.
Byte 8 Bit
C Imperative Programmiersprache, insbesonders zur hardwarena-
hen Entwicklung.
C++ Objektorientierte Programmiersprache auf Grundlage von C.
Cast Ändern des statischen Datentyps einer Variable auf einen an-
deren Typ.
CD Compact Disc
Client Komponente, die einen Dienst nutzt.
Corba Hier: Programmiersprachen-unabhängige Middleware.
CRC Cyclic Redundancy Check
Crossworks Entwicklungsumgebung für Mikrocontroller-Firmware.
CSMA/CA Carrier Sense Multiple Access/Collision Avoidance
CTS Clear to Send
DAC Digital zu Analog Wandler.
dB Dezibel
Deadlock Nicht mehr zu behebende Verklemmung von mindestens zwei
Threads.
Debuggen Suchen und Entfernen von Fehlern.
DECT Digital Enhanced Cordless Telecommunications – Standard für
festnetzgebundene Funktelefone.
Denial-Of-Service Blockieren eines Dienstes durch Überfluten mit Anfragen oder
Ausnutzen eines Softwarefehlers.
XXII
DRAM Dynamischer RAM, der periodisch aufgefrischt werden muss,
um seinen Inhalt zu erhalten.
DSSS Direct Sequence Spread Spectrum.
EDR Enhanced Data Rate
EEPROM Electrically Erasable Programmable Read-Only Memory
EKG Elektrokardiogramm – Überwachung der Herztätigkeit durch Ab-
leiten elektrischer Signale.
Energy Detection Überprüfen, ob ein Frequenzband frei ist, bevor es zur Daten-
übertragung verwendet wird.
FFD Full Function Device
FHSS Frequency Hoping Spread Spectrum
Firmware Software, die fest in ein Hardware-Gerät eingebettet ist.
Flashen Programmieren eines Flashspeichers.
Flashspeicher Günstigere Variante eines EEPROMS, das zur Massendaten-
speicherung verwendet werden kann.
GPIO General Purpose Input/Output
GPS Global Positioning System – Ein Satellitennavigationssystem.
GUI Graphische Benutzeroberfläche.
Hashmap Datenstruktur, die aus Paaren aus Schlüsseln und Werten be-
steht. Auch bekannt als assoziatives Array oder Record.
HF Hochfrequenz
Host Computer, der Dienste anbietet.
HTTP Hypertext Transfer Protocol – Protokoll zur Übertragung von
Webseiten.
I Strom.
IC Integrierter Schaltkreis
Idle Task Aufgabe, die immer dann bearbeitet wird, wenn keine anderen
Aufgaben anstehen.
IEEE Institute of Electrical and Electronics Engineers
Interface Beschreibung der Schnittstelle eines Objektes über Signaturlis-
ten.
XXIII
Glossar
XXIV
MAC Media Access Control
MacOS Betriebssystem der Firma Apple Computer.
Man-in-the-middle Angriff, bei dem Datenpakete zwischen zwei Kommunikations-
partnern durch einen Angreifer abgefangen werden und der In-
halt der Pakete manipuliert wird.
MANV Massenanfall von Verletzten
MANVNode Test- und Entwicklungsplatine für den kabellosen Erste-Hilfe-
Sensor.
MANVSuite Verwaltungssoftware des Sensornetzwerks.
MBit Megabit
Mesh-Netzwerk (Voll-)Vermaschtes Netzwerk, meist in Verbindung mit mobilen
Ad-Hoc Netzwerken, bei denen einzelne Knoten untereinander
spontan Netzwerke bilden.
mF Millifarad
MHz Megahertz
Middleware Softwarelösung zum Zugriff auf von Objekten auf entfernten
Rechnern.
MIPS Million Instructions per Second
Monitor Gerät zur Überwachung von Vitaldaten von Patienten.
MSPS Million Samples per Second
Multicast Datenpaket mit mehreren bestimmten Empfängern.
Multimeter Mehrzweckmessgerät, das unter anderem Strom und Spannung
messen kann.
mV Millivolt
mW Milliwatt
Nameserver Softwaredienst, der eine Übersetzung von Namen in Adressen
vornimmt.
nF Nanofarad
Objekt Instanz einer Klasse. Kapselt Daten und Programmcode zum
Zugriff dieser Daten in einer gemeinsamen Datenstruktur. Hier-
durch wird die konkrete Implementierung hinter eine Schnitt-
stelle versteckt und wird damit austauschbar.
XXV
Glossar
XXVI
Python Objektorientierte Skriptsprache.
R Widerstand.
RAM Random Access Memory
Replay Angriff, bei der legitime Datenpakete abgefangen und zu einem
späteren Zeitpunkt wieder ins Netzwerk eingegeben werden.
RFD Reduced Function Devices
Ringpuffer Datenstruktur, die sich selbst überschreibt, wenn sie über ein
gewisses Maß gefüllt wurde.
RISC Reduced Instruction Set Computer.
Router Netzwerkgerät, das Pakete zwischen Teilnehmern weiterleitet.
RS-232 Übertragungsstandard für serielle Schnittstellen.
RTS Ready to Send
Sample Siehe Sampling.
Sampling Umwandlung eines analogen in ein digitales Signal mittels Ab-
tastung.
Schicht Siehe OSI-Modell.
SDK Software Development Kit
Serialnet Firmware für die ZigBee-Module der Herstellers Atmel.
Server Komponente, die einen Dienst anbietet.
Setup Aufbau
Shunt Niederohmiger Widerstand zur Messung von Strömen mit ei-
nem Spannungsmessgerät.
SIG Special Interest Group
Signatur Typ und Name einer Methode sowie ihrer Parameter.
Skripstprache Programmiersprache, deren Quellcode nicht kompiliert wird.
Socket Softwareabstraktion einer Netzwerkverbindung die sich verhält
wie ein Dateizugriff.
SPI Serieller Bus zum Anbinden von Komponenten an Mikrocon-
troller.
SRAM Statischer RAM auf Basis von sogenannten Flip-Flop-Bausteinen.
Benötigt im Gegensatz zu DRAM kein periodisches Auffrischen
des Inhalts.
XXVII
Glossar
XXVIII
W Watt
Webbrowser Programm zum Anzeigen von Webseiten.
Webinterface Graphische Benutzeroberfläche auf Basis einer Webseite.
Webserver Software, die Webseiten ausliefert.
WEP Wired Equivalent Privacy – Nicht mehr zeitgemäßes Verschlüs-
selungsverfahren für WLAN -Netzwerke.
Windows Betriebssystemfamilie der Firma Microsoft.
WLAN Wireless Local Area Network
WPA Wi-Fi Protected Access – Neuer Verschlüsselungsstandard für
WLAN -Netzwerke.
WPAN Wireless Personal Area Network
ZC ZigBee Coordinator
ZED ZigBee End Device
ZigBee Kabelloser Übertragungsstandard für Sensornetzwerke.
ZR ZigBee Router
XXIX
1. Einleitung
In diesem Kapitel wird zunächst die Arbeit motiviert. Danach werden die Aufgaben
und Ziele definiert. Abschliessend wird die Gliederung der folgenden Kapitel erläutert.
Im Falle eines Massenanfalls von Verletzten treffen vor Ort viele unterschiedliche Ein-
heiten von Rettungskräften aufeinander. Um die Zusammenarbeit dieser Kräfte über-
haupt zu ermöglichen und ein geordnetes Vorgehen zu unterstützen, gibt es klar defi-
nierte Abläufe und Verantwortlichkeiten. Zunächst versuchen die Rettungskräfte, die
Patienten außerhalb des unmittelbaren Gefahrenbereichs abzulegen. An dieser Abla-
gestelle werden die Patienten vom Rettungsdienst übernommen, welcher auch bereits
lebensrettende Sofortmaßnahmen einleitet und eine Erstversorgung durchführt. Wenn
möglich erfolgt bereits hier eine erste Registrierung der Patienten (Fundort, Name
usw.). Nun werden die Patienten einer Triage, also der Einordnung in verschiedene
Schweregrade, unterzogen, um zu entscheiden, in welcher Reihenfolge diese Patienten
versorgt werden. Diese Einordnung ist notwendig, da meist nicht genügend Ressour-
cen (sowohl Material als auch Personal) vorhanden sind, um sofort alle Patienten zu
versorgen. Daher gilt das Ziel, dass möglichst viele Patienten den Vorfall mit einem
möglichst geringen Schaden überstehen. Um eine Zuteilung der vorhandenen Ressour-
cen gemäß dieses Ziels zu gewährleisten, erfolgt eine Einordnung der Patienten in 4
Kategorien[Weid06]:
• Grün: Patient ist ansprechbar und kann sich selbstständig vom Unfallort wegbe-
wegen.
• Gelb: Patient hat Behandlungsbedarf und kann sich nicht mehr selbstständig
vom Unfallort entfernen, befindet sich jedoch nicht in akuter Lebensgefahr.
• Rot: Patient befindet sich in einem akut lebensbedrohlichen Zustand (z.B. Kreis-
laufstillstand, hoher Blutverlust) und benötigt sofortige medizinische Behand-
lung.
2. Möglicherweise verschlechtert sich der Zustand eines Patienten nach seiner Ein-
teilung in die Gruppe Gelb“ rapide, so dass er sofortiger Versorgung bedarf.
”
2
1.2. Aufgaben und Ziele der Arbeit
Insbesondere der zweite Punkt obiger Aufzählung könnte mit technischen Mitteln ent-
schieden verbessert werden. Da eine dauerhafte Überwachung nur deswegen nicht er-
folgt, weil nicht genügend Personal zur Verfügung steht, könnte dieses durch ein auto-
matisches System ersetzt werden, welches die Patienten überwacht und im Falle einer
Zustandsänderung eine Alarmierung durchführt. Zwar gibt es automatische Überwa-
chungssysteme (sogenannte Monitore), die in Krankenhäusern oder Rettungsfahrzeu-
gen zur Patientenüberwachung eingesetzt werden. Allerdings sind diese Systeme für
den Einsatz in einem MANV-Szenario ungeeignet, da sie zu groß, zu teuer und zu
kompliziert sind.
Parallel zu dieser Arbeit wird von Jan Tepelmann in [Tepe10] eine Steuerrungssoftwa-
re ( MANVSuite“) für die Überwachungsstation des Netzwerkes entwickelt. Zu dieser
”
Software soll eine Schnittstelle zur Verfügung gestellt werden, über die zum einen die
Vitaldaten ausgeliefert, zum anderen Befehle an die einzelnen Sensoren empfangen
werden. Diese Schnittstelle soll netzwerkfähig sein.
3
1. Einleitung
Im darauf folgenden Kapitel wird der aktuelle Stand der Technik genauerer Betrach-
tung unterzogen. Hierbei werden zunächst kabellose Netzwerkprotokolle betrachtet
und auf ihre Eignung zur Lösung der gestellten Problemstellung untersucht. Hierbei
erweist sich das ZigBee-Protokoll als besonders geeignet. Daraufhin erfolgt ein kurzer
Überblick über die Marktsituation bei Produkten zur kabellosen Patientenüberwa-
chung. Im Abschluss des Kapitels werden einige verwandte Projekte vorgestellt und
auf Ähnlichkeiten und Unterschiede untersucht.
Aus dem Stand der Technik werden in Kapitel 4 nun die Anforderungen an die zu
entwickelnde Lösung aufgestellt. Anschließend werden die Bauteile vorgestellt, die zur
Implementierung der Lösung verwendet werden. Diese werden auf Ihre Eignung un-
tersucht und es werden zu beachtende Eigenheiten herausgearbeitet. Für diese Eigen-
heiten werden verschiedene Lösungsmöglichkeiten vorgestellt und analysiert, die im
späteren Verlauf der Arbeit als Grundlage für Entwurf und Implementierung dienen
werden.
Der eigentliche Entwurf wird in Kapitel 5 beschrieben. Hier wird als Erstes ein gro-
ber Entwurf des Gesamtsystems durchgeführt, in dem zunächst die zentralen Kom-
ponenten der Lösung identifiziert werden. Im weiteren Verlauf des Kapitels wird der
detailierte Entwurf jeder dieser Komponenten dargestellt, so dass diese implementiert
werden können. Bei dem Entwurf wird zwischen Hardware und Software unterschieden.
Kapitel 6 behandelt die praktische Umsetzung des theoretischen Entwurfs. Ein Schwer-
punkt bildet hier die Beschreibung der praktischen Probleme, die bei der Umsetzung
aufgetreten sind, sowie deren Lösung.
In Kapitel 7 wird sodann eine genaue Evaluierung der entwickelten Lösung in Hinblick
auf Erfüllung der in Kapitel 4 aufgestellten Anforderungen, durchgeführt; die Ergeb-
4
1.3. Gliederung und Vorgehensweise der Arbeit
Abgerundet wird die Arbeit durch einen umfangreichen Anhang, in dem eine Hilfe-
stellung zur Umsetzung der in der Arbeit entwickelten Lösung in ein fertiges Produkt
geliefert wird.
5
2. Grundlagen
der Leitung muss ein gewisser Aufwand betrieben werden. Wenn Übertragungsraten
garantiert werden, stehen diese ggf. nicht für andere Anwendungen zur Verfügung.
Wird die Kapazität der Leitung nicht ausgeschöpft, so bleiben diese Reserven unge-
nutzt und verfallen.
Anders verhält sich die Paketvermittlung. In diesem Szenario teilen sich alle Teil-
nehmer eine gemeinsame Leitung. Möchte nun ein Teilnehmer Daten senden, so teilt
er sie in kleine Pakete auf und versieht diese mit der Adresse des Empfängers. Nun
wird jedes Paket einzeln über die Leitung verschickt. Hierbei passiert es ggf. eine Rei-
he von Zwischenstationen, die es jeweils zur nächsten Zwischenstation weiterleiten,
bis der endgültige Empfänger erreicht ist. Da sich nun viele Empfänger eine Leitung
teilen, kann eine deutlich bessere Auslastung erzielt werden. Jedoch können nun keine
Garantien mehr über die Reihenfolge, Zuverlässigkeit sowie die einem Teilnehmer zur
Verfügung stehende Übertragungsrate gegeben werden.
Diese Probleme können jedoch teilweise in höheren Protokollschichten (z.B. durch
Nummerierung und Umsortieren der Pakete beim Empfänger) behandelt werden.
Bei der kabellosen Datenübertragung teilen sich alle Teilnehmer ein gemeinsames Me-
dium, nämlich die Trägerfrequenzen des verwendeten Funkprotokolls. Eine Vermitt-
lung von einzelnen Leitungen scheidet prinzipbedingt aus, da es nicht möglich ist,
einzelne Teilnehmer am Senden auf einer Frequenz zu hindern. Daher bietet sich die
Verwendung eines paketvermittelten Übertragungsprotokolls für kabellose Netzwerke
besonders an.
2.1.2. Frequenzspreizung
F F
2 MHz 250kHz
Abbildung 2.1.: Frequenzspreizung mit dem FHSS -Verfahren (Frei nach Farahani)
8
2.1. Grundlagen der kabellosen Übetragung
F F
250kHz 2MHz
Da diese Störungen meist nur auf einzelnen Frequenzen vorliegen, kann mit Hilfe der
Frequenzspreizung der Einfluß von Störungen reduziert werden. Die Idee ist, nicht mit
hoher Leistung auf einer einzelnen Frequenz zu senden, sondern die Leistung auf einen
breiteren Frequenzbereich zu verteilen. Liegt nun eine Störung auf einer einzelnen
Frequenz vor, kann das Nutzsignal trotzem noch erfolgreich empfangen werden.
Bei dem FHSS-Verfahren handelt es sich um die einfachste Möglichkeit, ein Signal zu
spreizen. Hierbei wird einfach nach einer bestimmten Zeiteidauer die Sendefrequenz
gewechselt, so dass eine Spreizung über den Zeitverlauf erreicht wird. [Tofa05]
Bei dem DSSS-Verfahren wird das Nutzsignal über einen breiten Frequenzbereich auf-
gefächert. Hierzu wird das Nutzsignal mit einem Spreizkode multipliziert. Beim Emp-
fang teilt der Empfänger nun das empfangene Signal durch diesen Spreizcode und
1
Insbesondere sind hier Mikrowellengeräte zu nennen, die im 2.4-GHz-Band arbeiten.
9
2. Grundlagen
erhält so das ursprüngliche Signal. Störungen werden hingegen durch die Operation
deutlich erkennbar und können einfach ausgefiltert werden. [Tofa05] [Fara08]
FHSS besitzt gegenüber DSSS den Vorteil, dass es mit geringerem Aufwand realisiert
werden kann. Dies wird jedoch mit einem höheren Aufwand in der Software erkauft:
Kommt es auf einer Frequenz zu einer Störung, so geht oft das aktuell gesendete Daten-
paket verloren. Dies muss von der Software erkannt werden. Eine erneute Übertragung
des verlorenen Paketes ist erforderlich.
Da das DSSS-Verfahren die Gesamtleistung auf ein breites Spektrum auffächert, verur-
sacht es weniger Störungen bei anderen Anwendungen, die im selben Frequenzbereich
arbeiten. Für diese Anwendungen sieht das Signal aus wie Hintergrundrauschen und
kann einfach ausgefiltert werden.
Abschließend bleibt zu sagen, dass jedes der beiden Verfahren eigene Vor- und Nach-
teile besitzt, und dass je nach Anwendung entschieden werden muss, welches Verfahren
besser geeignet ist.
2.2. Java
Java ist eine von Sun Microsystems entwickelte Technologie zur platformunabhängi-
gen Erstellung von Programmen. Sie besteht aus einer Programmiersprache, die eben-
falls den Namen Java trägt, einem Compiler (javac) sowie der Java-Laufzeitumgebung
(Java-Runtime-Environment - JRE ). Die Java-Laufzeitumgebung besteht aus einer
virtuellen Maschine, die die kompilierten Programme ausführt. Dies bietet den Vor-
teil, dass bei einem Wechsel der Host-Plattform (also z.B. von Windows auf Linux
oder MacOS ) bestehende Programme nicht neu übersetzt werden müssen. [Ulle09]
10
2.3. Python
2.2.1. Programmiersprache
Java ist eine statisch typisierte, objektorientierte Programmiersprache. Aufgrund der
von C entlehnten Syntax erinnert Java auf den ersten Blick an C++. Bei genauerer Be-
trachtung unterscheiden sich diese beiden Sprachen jedoch stark. So bietet Java im Ge-
gensatz zu C++ keine Mehrfachvererbung, sondern verwendet sogenannte Interfaces.
Java wird mit einer großen Standardbibliothek ausgeliefert, die für sehr viele Standard-
aufgaben (z.B. Threadverwaltung, Netzwerkkommunikation, GUI -Entwicklung2 oder
typische Datenstrukturen wie Listen und Hashmaps) bereits eine passende Lösung
mitbringt. Durch den integrierten Paketmechanismus wird darüber hinaus die über-
sichtliche Gliederung des Quelltextes in Unterdateien ermöglicht.
Aufgrund der statischen Typisierung und der genau definierten Laufzeitumgebung
eignet sich Java besonders gut zur Erstellung von zuverlässigen und fehlerarmen Pro-
grammen. Werden konsequent Interfaces verwendet und typunsichere Downcasts ver-
mieden, so können die meisten Fehler bereits durch den Compiler erkannt und ab-
gefangen werden. Kann ein solches Programm ohne Fehler und Warnungen kompi-
liert werden, besteht eine hohe Chance, dass auch Laufzeitfehler vermieden werden.
[Ulle09] Insbsondere wenn mehrere Teilaspekte eines Programms von verschiedenen
Programmierern umgesetzt werden, ist die Verwendung von klar definierten Schnitt-
stellen (Interfaces) besonders wichtig, da nur so eine korrekte Funktionalität nach dem
Zusammensetzen der einzelnen Teile gewährleistet werden kann. Diese Vorgehensweise
nennt man auch Design by Contract. Java bietet eine Reihe von Sprachkonstrukte, um
Design by Contract zu unterstützen. [Elie00]
2.3. Python
Python ist eine moderne, leicht zu erlernende objektorientierte Skriptsprache 3 , die
mittlerweile unter fast jedem UNIX -artigen Betriebssystem wie Linux, MacOS oder
BSD zum Lieferumfang gehört. Darüber hinaus sind auch fertige Pakete für Windows
verfügbar. Python eignet sich daher besonders zum Schreiben von kleinen bis mittel-
großen Skripten4 . [Foun10]
2
GUI: Graphical User Interface, dt. graphische Benutzerschnittstelle.
3
Programmiersprache, bei der Programme nicht kompiliert, d.h. in Maschinencode übersetzt, son-
dern interpretiert werden.
4
Programme, die nicht kompiliert sondern interpretiert werden.
11
2. Grundlagen
In dieser Diplomarbeit wird Python für die Interaktion mit dem Betriebssystem einge-
setzt, wenn diese Aufgaben in Java entweder gar nicht oder nur sehr schwierig zu lösen
wären. Beispiele hierfür sind die automatische Erkennung von USB -Geräten oder der
Zugriff auf den seriellen Port. Da Python eine sehr kompakte und verständliche Imple-
mentierung von Programmcode zulässt, wurde in dieser Diplomarbeit weitestgehend
auf Beispiele in Pseudocode verzichtet, und statt dessen lauffähige Python-Programme
zu verwenden. Dies ist nicht nur eindeutiger, sondern bietet gleichzeitig den Vorteil,
dass die meisten Programmbeispiele direkt in lauffähige Programme übernommen wer-
den können.
2.4. Corba
Corba (Common Object Request Broker Architecture) ist eine objektorientierte Midd-
leware zur Verteilung von Objekten auf verschiedenen Rechnern innerhalb eines Netz-
werkes. Das besondere hierbei ist, dass Corba nicht an eine bestimmte Programmier-
sprache gebunden ist. Die einzelnen Objekte bzw. Komponenten können hierbei in je-
der beliebigen Programmiersprache implementiert werden, die eine Corba-Anbindung
besitzt. [TavS07] Im Rahmen dieser Diplomarbeit ist diese Programmiersprachenu-
nabhängigkeit sehr wichtig, da bestimmte Teile (z.B. die Graphische Oberfläche für
Mobiltelefone oder die Ansteuerung des USB-Sticks) nicht in Java realisiert werden
können, und statt dessen auf C++ sowie Python ausgewichen werden muss.
12
3. Stand der Technik
3.1. Einleitung
In diesem Kapitel wird der Stand der Technik von kabellosen Patientenüberwachungs-
technologien untersucht. Hierzu wird zunächst in Abschnitt 3.2 allgemein eine Reihe
von potentiell geeigneten Übertragungsprotokollen vorgestellt und jeweils kurz disku-
tiert, ob und wie gut diese als Basistechnologie für die Lösung der Problemstellung
dieser Diplomarbeit geeignet sind. Im darauf folgenden Abschnitt 3.3 wird dann die ak-
tuelle Marktsituation fertiger Produkte, die zur Überwachung von Patienten in einem
MANV -Szenario in Frage kommen, vorgestellt und die Eignung dieser Produkte dis-
kutiert. Den Abschluss dieses Kapitels bildet Abschnitt 3.4, in dem kurz auf ähnliche
Projekte eingegangen wird, die momentan an anderer Stelle in Arbeit sind.
zu erwarten ist. Außerdem ist geplant, ein WLAN -Netzwerk für die Koordination
des Überwachungssystems einzusetzen, so dass auch hier auf gegenseitige Störungen
geachtet werden muss.
Mit Ausnahme von DECT und GSM bzw. UMTS ist diesen Protokollen gemein, dass
sie Frequenzen aus dem ISM -Band1 verwenden.
3.2.1. DECT
Bei DECT ( Digital Enhanced Cordless Telecommunications“ ) handelt es sich um
”
einen Standard, der vor allem zur Anbindung von Schnurlostelefonen an eine Basis-
station gedacht ist2 .
In Europa wird ein eigenes Frequenzband im Bereich von 1800 bis 1900 MHz ver-
wendet, in dem 10 Kanäle zur Verfügung stehen. Pro Kanal können maximal 32 kbit
Nutzdaten pro Sekunde übertragen werden. Die maximal zulässige Sendeleistung be-
trägt 250 mW, womit eine Reichweite von ca. 30-50 m in Gebäuden und ca. 300 m im
Freien realisiert werden kann. Jede Basisstation kann bis zu 6 Geräte anbinden.
Beim Einsatz außerhalb Europas muss bedacht werden, dass die Verwendung der Fre-
quenzen von 1800 bis 1900 MHz hier evtl. nicht zulässig ist. In diesem Fall muss auf
das ISM -Band ausgewichen werden, welches mit anderen Anwendungen geteilt werden
muss. [ETSI06]
DECT bietet eine optionale Verschlüsselung der Nutzdaten, welche jedoch im Jahr
2009 gebrochen wurde, so dass DECT mittlerweile als unsicher gelten muss. [LSTW+ 09]
Aufgrund der geringen Nutzdatenmenge sowie der Einschränkung auf 6 Teilnehmer ist
DECT für den Einsatz als Sensornetz-Protokoll nicht geeignet.
3.2.2. GSM/UMTS
GSM sowie der Nachfolgestandard UMTS bilden die Grundlage der aktuellen Mobil-
funktechnologie. Es handelt sich um eine zellenbasierte Technologie, die im Falle von
GSM Frequenzen im 900 MHz- und im 1,8 GHz-Band verwendet. Für UMTS stehen
1
Mehrere Frequenzbänder, für deren Benutzung eine allgemeine Betriebserlaubnis ausreicht.
2
Es gibt jedoch auch weitere Anwendungen wie z.B. Babyfon.
14
3.2. Kabellose Übertragungsprotokolle
insgesamt 19 Bänder im Bereich von 777 MHz bis 2,2 GHz zur Verfügung. Die Kom-
munikation findet zwischen einem Mobiltelefon und einer Basisstation statt, wobei die
maximale Sendeleistung 2 W (im Falle von GSM) bzw. 250 mW (im Falle von UMTS)
beträgt. Mit GSM -900 können im Freien bei Sichtkontakt Reichweiten bis zu 35 km
erreicht werden. [Benk07]
Die Frequenzen für GSM und UMTS sind fest dem jeweiligen Netzbetreiber zuge-
ordnet. Der Preis für einen Frequenzbereich ist sehr hoch. Bei der Versteigerung der
UMTS -Frequenzen im Jahr 2000 wurden Preise von bis zu 8 Milliarden Euro pro
Lizenz erreicht. [Tage00]
3.2.3. WLAN
WLAN oder Wi-Fi bezeichnet den heute gängigen Standard eines Funkprotokolls zum
Aufbau von kabellosen lokalen Netzwerken. Es gibt mehrere Versionen des Standards,
die verbreitetsten sind IEEE 802.11a, IEEE 802.11b/g und IEEE 802.11n. [IEEE07]
15
3. Stand der Technik
kann. Je weiter sich die Stationen voneinander entfernen, desto geringer wird die Über-
tragungsrate, bis schließlich die niedrigste mögliche Übertragungsrate von 1 MBit/sec
erreicht ist.
Es gibt eine ganze Reihe von Unterstandards, die sich durch zulässige Frequenzen,
Übertragungsraten und Sendeleistung unterscheiden. Teilweise ist auch Kanalbünde-
lung vorgesehen. Nicht jeder Standard kann in jedem Land eingesetzt werden, und die
meisten Endgeräte unterstützen nur eine Teilmenge dieser Standards. Hier sollen nur
die wichtigsten drei Standards erwähnt werden.
Bei IEEE 802.11b handelt es sich um den ältesten WLAN -Standard mit praktischer
Bedeutung, der bereits 1999 spezifiziert wurde. Dieser Standard wird praktisch von
jedem WLAN -fähigen Endgerät unterstützt. Die Kommunikation findet im ISM -Band
im Bereich von 2.4 GHz statt. Je nach Land sind 11-14 Kanäle möglich, die sich jedoch
teilweise überlappen. Dies führt dazu, dass maximal 3 Netzwerke in einem Gebiet ohne
Störungen gleichzeitig betrieben werden können. Die maximale Sendeleistung beträgt
100 mW. Es sind Übertragungsraten von 5,5 bis 11 MBit/sec (brutto) möglich. Die
Nettoübertragungsrate beträgt ca. 50% der Bruttorate; die restliche Übertragungsrate
wird für die Koordination des Datenverkehrs benötigt. Es sind Reichweiten bis 40 m
(Innen) bzw. 100 m (Im Freien) möglich[KuDMK08].
3.2.3.2. IEEE-802.11g
16
3.2. Kabellose Übertragungsprotokolle
sind daher höhere Reichweiten als mit dem IEEE-802.11b/g-Standard möglich. Die
Bruttodatenrate beträgt bis zu 54 MBit/sec. Ein Vorteil des IEEE-802.11a-Standards
ist die Kommunikation im 5 GHz Bereich. Aktuell ist dieser Bereich noch wenig ge-
nutzt, so dass dort oft ein Betrieb mit weniger Störungen als im 2,4 GHz-Bereich
möglich ist. Es ist jedoch zu erwarten, dass sich dies in Zukunft ändern wird.
3.2.3.4. Störsicherheit
IEEE 802.11 verwendet den CSMA/CA3 -Algorithmus zur Kontrolle des Medienzu-
griffs. Möchte eine Station senden, so muss diese zunächst für einige Zeit lauschen,
ob der zu verwendende Kanal auch wirklich frei ist (Energy-Detection). Ist der Kanal
belegt, so wartet sie eine zufällige Zeit, bis sie erneut versucht, auf den Kanal zuzugrei-
fen. Wichtig hierbei ist, dass es bei Funkprotokollen nicht möglich ist, eine Kollision zu
erkennen4 .um eine bestehende Übertragung abzubrechen, wie es z.B. bei Ethernet der
Fall ist. Zur Vermeidung von Kollisionen kann bei IEEE 802.11 daher zusätzlich zu
CSMA/CA eine koordinierte Sendefreigabe eingesetzt werden. Hier kommt RTS/CTS
zum Einsatz: Möchte eine Station ein großes Datenpaket senden, so sendet diese zuerst
ein RTS -Paket5 an den Empfänger, welcher dies mit einem CTS -Paket6 quittiert. Erst
wenn das CTS -Paket empfangen wurde, wird mit der Übertragung des eigentlichen
Datenpakets begonnen. Für alle andere Stationen im Netzwerk ist nun klar, dass sie
bis zur abgeschlossenen Übertragung dieses Paketes nicht auf das Netzwerk zugreifen
dürfen.
17
3. Stand der Technik
Ein häufiges Problem ist die Störung durch Bluetooth, da Bluetooth und WLAN -Geräte
oft aufeinandertreffen (z.B. weil an einem Notebook Bluetooth-Maus und -Tastatur ver-
wendet werden oder weil ein PDA z.B. Schnittstellen für beide Protokolle besitzt). Wie
in Abschnitt 3.2.4.2 genauer erläutert, besitzt Bluetooth 79 Kanäle, welche bis zu 1600
mal pro Sekunde gewechselt werden. Problematisch ist nun, dass 22 dieser Kanäle in
das IEEE 802.11b/g-Frequenzspektrum fallen. Durch den häufigen Kanalwechsel, die
geringeren Übertragungsraten sowie die Möglichkeit, den Wechsel auf belegte Kanä-
le zu vermeiden, ist diese Störung für Bluetooth deutlich unproblematischer als für
WLAN. Je nach Implementierung kann dies zu einer deutlichen Reduktion der Über-
tragungsrate des WLANs führen; außerdem kann die Wartezeit für das erfolgreiche
Senden von Paketen deutlich ansteigen. Dies hat die IEEE dazu veranlasst, eine ei-
gene Arbeitsgruppe zu gründen, die sich mit dem Problem der gegenseitigen Störung
von WLAN und Bluetooth beschäftigt. Die Ergebnisse dieser Arbeitsgruppe spiegeln
sich im Standard IEEE 802.15.2 wider.
3.2.3.5. Leistungsaufnahme
Der Energiebedarf für WLAN ist relativ hoch. Beispielsweise benötigt der vom Herstel-
ler Broadcom als besonders energiesparend bezeichnete Chip BCM4326 bis zu 100 mA
zum Empfangen und zwischen 141 und 190 mA zum Senden. [BROA06].
18
3.2. Kabellose Übertragungsprotokolle
Der IEEE 802.15 -Standard behandelt Wireless Personal Area Networks. Er ist in
mehrere Unterstandards aufgeteilt:
Für diese Arbeit sind vor allem der Bluetooth- und der ZigBee-Standard interessant.
Bluetooth wurde ursprünglich durch den Mobilfunkhersteller Ericcson als Ersatz für
RS-232 -Verbindungen entwickelt. Die Entwicklung des Bluetooth-Standards erfolgt
heute unter der Regie der Bluetooth Special Interest Group (Bluetooth SIG). Versi-
on 1.1 des Bluetooth-Standard wurde von der IEEE als IEEE 802.15.1-2002 über-
nommen. Nach Veröffentlichen einer weiteren Version IEEE 802.15.1-2005, die dem
Bluetooth-1.2 -Standard entspricht, wurde von der IEEE jedoch beschlossen, nicht wei-
ter mit der Bluetooth SIG zu kooperiern, so dass es keine weiteren Versionen des IEEE-
802.15.1 -Standards geben wird. Aktuell ist Version 4.0 des Bluetooth-Standards, wobei
jedoch die meisten Geräte nur ältere Standards (typischerweise 2.0 oder 2.1) unter-
stützen. [SIG10]
• Bluetooth 1.1 : Erste Version von praktischer Relevanz. Entspricht IEEE 802.15.1-
2002.
19
3. Stand der Technik
3.2.4.2.1 Pairing
Bei der Entwicklung von Bluetooth wurde ein besonderes Augenmerk auf Datensi-
cherheit gelegt. Dies liegt daran, dass über Bluetooth in vielen Fällen auf sensible
Daten (z.B. der Inhalt von Mobiltelefonen, Telefongespräche die über Headsets ge-
führt werden etc.) zugegriffen werden kann. Bluetooth verwendet hierfür das Konzept
des Pairings, also der Paarung. Bevor zwei Bluetooth-Geräte miteinander kommuni-
zieren können, müssen sie gepaart werden. Um dies durchzuführen, muss zunächst die
Identität der zu paarenden Geräte bestätigt werden. Hierzu gibt es zwei verschiedene
Verfahren:
• Legacy: Bis Bluetooth 2.0 muss an beiden Geräten eine identische PIN eingege-
ben werden. Die PIN ist beliebig und kann bis zu 16 Byte lang sein.
• Secure Simple Pairing: Bluetooth 2.1 definiert neben der PIN -Eingabe weitere
Verfahren zum Paaren von Geräten. z.B. kann bei dem Just-Works-Verfahren
die PIN komplett ausgelassen werden11 oder es wird an beiden Geräten eine
Nummer angezeigt, deren Gleichheit einfach nur noch bestätigt werden muss.
8
Adaptive frequency hopping spread spectrum
9
Enhanced Data Rate
10
Secure Simple Pairing
11
Die Verbindung erfolgt trotzdem verschlüsselt, allerdings sind nun Man-in-the-middle-Angriffe
möglich.
20
3.2. Kabellose Übertragungsprotokolle
3.2.4.2.2 Reichweite
Bluetooth definiert drei verschiedene Klassen von Geräten mit jeweils unterschiedlicher
Reichweite:
Diese Einteilung dient unter anderem der Datensicherheit. Da z.B. ein Headset in der
Regel nur die Distanz zwischen Kopf und Tasche des Anwenders überbrücken muss,
reicht hier die Verwendung eines Klasse-2-Gerätes. Durch die Einschränkung der Sen-
deleistung wird nicht nur die Akkulaufzeit der Geräte erhöht, sondern auch die Wahr-
scheinlichkeit, dass ein Angreifer die gesendeten Daten empfangen kann, verringert.
Es bleibt allerdings festzustellen, dass mit Hilfe von geeigneten Antennen die Reich-
weite von Bluetooth signifikant gesteigert werden kann. So lassen sich mit Hilfe der
BlueSniper -Richtantenne selbst mit Klasse-2-Geräten Distanzen von über 800 m über-
brücken. [Cheu05]
3.2.4.2.3 Übertragungsrate
Die Übertragungsrate von Bluetooth hängt natürlich von Faktoren wie der Verbin-
dungsqualität und der Entfernung ab. Der Standard definiert folgende maximale Da-
tenübertragungsraten:
21
3. Stand der Technik
3.2.4.2.4 Störsicherheit
Bluetooth verwendet einen Frequenzbereich von 2,402 - 2,480 GHz. Innerhalb dieses
Bereiches werden 79 verschiedene Kanäle definiert. Zur Minimierung von Störungen
wird sogenannts Channel-Hopping verwendet. Hierbei wird der verwendete Kanal bis
zu 1600mal pro Sekunde gewechselt. Mit dem Bluetooth-1.2 -Standard wurde das ver-
besserte AFH 12 -Verfahren eingeführt, welches gestörte Kanäle erkennt und deren Ver-
wendung vermeidet.
Sobald zwei oder mehr Geräte miteinader verbunden sind, formen diese ein sogenanntes
Piconet. In einem Piconet können sich bis zu 255 Geräte befinden, wobei ein Gerät
eine der folgenden beiden Rollen hat:
• Slaves: Slaves bekommen vom Master die Erlaubnis, Daten zu senden. Es kön-
nen immer nur 7 Slaves gleichzeitig aktiv sein. Aktive Slaves müssen permanent
empfangsbereit sein, um die Anforderungen des Masters zu empfangen.
Da nur 7 Slaves gleichzeitig aktiv sein dürfen, befinden sich alle übrigen Slaves im so-
genannten Parkzustand“. Erst wenn ein Slave vom Master explizit dazu aufgefordert
”
12
Adaptive frequency-hopping spread spectrum
22
3.2. Kabellose Übertragungsprotokolle
Um die Anzahl der aktiven Geräte in einem Netzwerk zu erhöhen, gibt es die Möglich-
keit, ein sogenanntes Scatternet zu bilden. Hierbei handelt es sich um die Verbindung
von mehreren Piconets mit jeweils maximal 8 Geräten zu einem größeren Verbund.
Hierbei leitet jeweils ein Gerät, das mit jeweils 2 der Piconetze verbunden ist, Pakete
vom einen Netz in das andere Netz über. Im Vergeleich zu Piconetzen kann hiermit
eine deutlich höhere Anzahl von Geräten unterstützt werden. Durch die Verkettung
der Netze kann es jedoch vorkommen, dass einzelne Pakete eine relativ hohe Anzahl
von Piconetzen durchqueren müssen, um ihr Ziel zu erreichen.
3.2.4.2.6 Leistungsaufnahme
Bei IEEE 802.15.4 handelt es sich um einen Standard für zuverlässige, drahtlose Kom-
munikation mit niedriger Übertragungsrate bei hoher Reichweite, niedriger Leistungs-
aufnahme und geringem Stückpreis.
23
3. Stand der Technik
APL (Anwendung)
ZigBee
SEC (Security)
NWK (Vermittlung)
MAC (Sicherung)
IEEE 802.15.4
PHY (Bitübertragung)
Eine typische Anwendung hierfür sind drahtlose Sensoren: Zum einen ist eine möglichst
hohe Laufzeit gewünscht, da es oft nur schwer möglich ist, Batterien für aufgestellte
Sensoren auszutauschen. Wenn die Sensoren dazu noch in einer hohen Stückzahl ver-
teilt werden sollen, sind möglichst geringe Hardwarekosten notwendig.
Zu beachten ist, dass ZigBee nicht das selbe ist wie IEEE 802.15.4.
IEEE 802.15.4 definiert lediglich die unteren beiden Schichten des OSI-Modells, also
die Sicherungs- (MAC ) und die physische Schicht (PHY ).Bei ZigBee handelt es sich
hingegen um einen kompletten Protokollstapel, der die beiden Schichten von IEEE
802.15.4 um 3 weiter Schichten, namentlich Vermittlungs-, Verschlüsslungs und An-
wendungsschicht ergänzt. [Alli07]
Es ist möglich, einen IEEE 802.15.4 -Transceiver ohne den Einsatz von ZigBee zu
betreiben. Die Verwendung von ZigBee bietet jedoch den Vorteil, dass alle netzwer-
krelevanten Aufgaben wie Routing, Übertragungssicherung und Adressierung von An-
wendungen bereits durch den ZigBee-Stack erfolgen und daher nicht vom Entwickler
implementiert werden müssen. Die Verwendung von durch die ZigBee-Alliance zer-
24
3.2. Kabellose Übertragungsprotokolle
tifizierten Modulen bietet zudem den Vorteil der Interoperabilität mit Modulen von
anderen Herstellen, sofern diese ZigBee-zertifiziert sind.
3.2.4.3.1 Netzstruktur
• FFD: Full Function Devices: Diese Geräte implementieren den vollen ZigBee-
Stack. Hierzu ist es notwendig, dass diese immer erreichbar sind; die Verwendung
des Energiesparmodus ist nicht möglich.
• RFD: Reduced Function Devices: Diese Geräte implementieren nur einen Teil
des ZigBee-Stacks. Sie müssen nicht immer ereichbar sein und können den Ener-
giesparmodus benutzen.
Es ist lediglich die Kommunikation zwischen RFD und FFD sowie zwischen zwei FFDs
möglich. Zwei RFDs sind nicht in der Lage, direkt miteinander zu kommunizieren, son-
dern müssen den Umweg über ein FFD nehmen.
Neben den Geräteklassen unterscheiden sich die einzelnen Stationen durch die Rol-
len, die sie im Netzwerk einnehmen:
• Router (ZR): Router sind in einem Netzwerk für die Weiterleitung von Paketen
zuständig. Es kann beliebig viele Router in einem Netzwerk geben. Die Rolle
eines Routers kann nur von einem FFD übernommen werden.
• Endknoten (ZED): Alle Geräte, die nicht Koordinator oder Router sind, sind
automatisch Endknoten. Diese leiten keine Pakete weiter und sind immer an
einem Router angemeldet. Es handelt sich hierbei immer um RFDs.
Die Topologie des Netzwerks wird von den Knoten automatisch bestimmt. Können
sich mehrere Router empfangen, so bilden diese automatisch ein vollvermaschtes Netz.
25
3. Stand der Technik
Bei der Zustellung von Paketen wird standardmäßig immer der Pfad mit der besten
Leitungsqualität gewählt.
Durch die geschickte Platzierung von Routern kann ein ZigBee-Netzwerk nahezu be-
liebig ausgeweitet werden, wobei durch die automatische Organisation des Netzwerks
ein hohes Maß an Ausfallsicherheit erreicht werden kann (eine entsprechende Anzahl
an Routern vorrausgesetzt). Problematisch ist jedoch der Ausfall des Koordinators.
Prinzipiell kann jeder Router die Aufgabe des Koordinators übernehmen, jedoch ge-
schieht dies nicht automatisch und muss in der Anwendungslogik erfolgen.
3.2.4.3.2 Störsicherheit
26
3.2. Kabellose Übertragungsprotokolle
Zusätzlich spezifiziert ZigBee in der Vermittlungsschicht (NWK ) eine Reihe von Feh-
lerbehandlungsroutinen: So wird jedes empfangene Paket – mit der Ausnahme von
Broadcasts13 – mit einer Antwort an den Sender quittiert. Erhält der Sender inner-
halb einer bestimmten Zeitspanne keine Antwort, so sendet er das verlorene Paket
erneut. Darüber hinaus gibt es in jedem Datenpaket eine CRC -Prüfsumme, mit deren
Hilfe Übertragungsfehler erkannt werden können. Auch in diesem Fall wird das Pa-
ket erneut übertragen. Hierbei sollte jedoch bemerkt werden, dass ein CRC -Verfahren
keinen Schutz gegen absichtliche Manipulation bietet. Dies kann mit Hilfe der in Ab-
schnitt 3.2.4.3.3 beschriebenen kryptographischen Verfahren verhindert werden.
Ein ZigBee-Netzwerk kann optional ein sogenanntes Beacon (dt. Leuchtfeuer) verwen-
den. Hierbei handelt es sich um ein Paket, das periodisch vom Koordinator ausgesendet
wird. Mit Hilfe dieses Pakets wird die Sendezeit in feste Zeitschlitze eingeteilt. Hiermit
ist es möglich, einzelnen Stationen einen garantierten Zeitschlitz (GTS ) zuzuweisen,
in dem niemand anderes senden darf. Dies ist insbesondere für Echtzeitanwendungen
interessant. Da zum Zeitpunkt des Versendens des Beacons jedoch alle Stationen emp-
fangsbereit sein müssen, ergeben sich Einschränkungen für die Batterielaufzeit. Die
Verwendung von Beacons schützt nicht gegen Störungen durch Nicht-ZigBee-Geräte
wie WLANs oder Bluetooth.
Da eine Nutzung der Kanäle außerhalb des 2,4-GHz-Bandes nicht in jedem Land ge-
stattet ist, sollen im folgenden nur die 15 Kanäle im 2,4-GHz-Band betrachtet werden:
13
Rundrufe, also Pakete, die an alle Stationen gleichzeitig verschickt werden.
27
3. Stand der Technik
Ein ZigBee-Netzwerk ist in der Lage, dynamisch den verwendeten Kanal zu wechseln,
sobald die Störungen auf einem Kanal zu groß werden. Hierzu wird im EEPROM des
ZigBee-Gerätes kein fester Kanal, sondern eine Liste aller erlaubten Kanäle eingestellt.
Dies bedeutet, dass bei der richtigen Konfiguration des ZigBee-Netzwerks ein einzelnes
WLAN durch einen einfachen Kanalwechsel umgangen werden kann. Problematisch
wird es jedoch, wenn mehrere WLANs auf mehreren verschiedenen Kanälen gleichzeitig
auftreten. Hierdurch kann es zu einer signifikaten Abnahme der im ZigBee-Netzwerk
möglichen Übertragungsrate kommen. Eine mögliche Lösung wäre in diesem Falle, die
WLANs auf die WLAN -Kanäle 1, 7 und 13 einzuschränken, so dass für das ZigBee-
Netzwerk die ZigBee-Kanäle 15 und 21 zur ungestörten Verwendung zur Verfügung
stehen. Alternativ können an Stelle der WLAN -Kanäle 7 und 13 die WLAN -Kanäle
6 und 11 verwendet werden, so dass für das ZigBee-Netzwerk die Kanäle 25 und 26
frei werden.
Wenn für das ZigBee-Netzwerk sowieso nur ein Teil der zur Verfügung stehenden
Übertragungsrate benutzt wird und auch die WLANs nur teilweise ausgelastet sind,
ist zu erwarten, dass durch die Verwendung des CSMA/CA-Verfahrens genügend freie
Zeitschlitze gefunden werden können, um selbst bei einer hohen WLAN -Dichte noch
erfolgreich senden zu können.
Die Störungen durch Bluetooth sind als weniger problematisch zu bewerten. Durch
das von Bluetooth verwendeten FHSS -Verfahren besteht selbst im ungünstigsten Fall
(Verwendung von sich überschneidenden Kanälen im ZigBee-Netz, volle Ausschöp-
fung der Übertragungsrate im ZigBee-Netz) nur eine maximale Kollisionswahrschein-
lichkeit von ca. 4% (3 von 79 Frequenzsprüngen – unter der Annahme, dass auch das
ZigBee-Netzwerk in dieser Zeit dreimal den Kanal wechselt). Dies kann von der Zig-
Bee-Fehlerbehandlung durch eine erneute Übertragung des kollidierten Paketes ein-
28
3.2. Kabellose Übertragungsprotokolle
fach behandelt werden. Verwendet das Bluetooth-Netzwerk darüber hinaus das AFH -
Verfahren, ist es in der Lage die Störung zu erkennen und den betroffenen Kanal im
weiteren Verlauf zu meiden.
Eine weitere Quelle von Störungen sind Mikrowellenöfen. Diese verwenden typischer-
weise Frequenzen um die 2540 MHz und können Störungen mit einer Bandbreite von
bis zu 80 MHz und einer Signalstärke von bis zu 30 dBm verursachen. Hierdurch
ergeben sich mögliche Störungen auf den oberen ZigBee-Kanälen. Da gewöhnliche Mi-
krowellenöfen für den Haushaltsgebrauch einen Auslastungsgrad (Duty-Cycle) von bis
zu 50% haben, ergäbe sich schlimmstenfalls eine Halbierung der zur Verfügung ste-
henden Übertragungsrate.[Fara08]
Die letzte zu erwartende Quelle von Störungen geht von DECT -Telefonen aus. Da
diese in Europa jedoch nicht im 2,4-GHz- sondern im 1,8-GHz-Band arbeiten, stellt
dies nur außerhalb der EU ein Problem dar. Hierbei sind schmalbandige Störungen
mit einer Signalstärke von bis zu 30 dBm zu erwarten. Diese können einfach durch
den automatischen Kanalwechsel des ZigBee-Netzwerks umgangen werden.
3.2.4.3.3 Verschlüsselung
3.2.4.3.4 Leistungsaufnahme
29
3. Stand der Technik
mit Energie versorgt, alle weitere Hardware wird abgeschaltet. In diesem Modus hat
das Gerät (laut Hersteller) einen Strombedarf von weniger als 6 µA. Befindet sich das
Gerät nicht im Energiesparmodus und ist empfangsbereit, werden 19 mA benötigt;
sendet das Gerät sind 18 mA14 notwendig.
Durch den Energiesparmodus lassen sich große Einsparungen erreichen. Allerdings
kann dieser nur von RFDs verwendet werden, da FFDs immer empfangsbereit sein
müssen. Zur Übertragung von Nachrichten wird in diesem Fall von den RFDs ein
Polling-Verfahren verwendet: Der Elternknoten des FFDs (in den meisten Fällen also
der nächstgelegene Router) speichert eine an das RFD gesendete Nachricht so lange
zwischen, bis dieses die Nachricht abruft. So ist sichergestellt, dass keine Nachrichten
verloren gehen, wenn sich der Empfänger gerade im Energiesparmodus befindet.
Bluetooth Low Energy ist ein neuer Standard für WPANs, der mit dem Bluetooth-4.0 -
Standard eingeführt wurde. Er definiert eine Datenübertragung mit bis zu 1 MBit/s
(netto 0,26 MBit/s) bei einem Strombedarf, der unter 20 mA liegen soll, wobei laut
Spezifikation eine Reichweite von bis zu 100 m erreicht werden kann. [SIG10]
Zum Zeitpunkt dieser Diplomarbeit befanden sich Funkchips des Bluetooth-Low-Energy-
Standards leider noch in der frühen Testphase und waren auf dem Markt nicht erhält-
lich, so dass dieser Standard bei der Auswahl eines geeigneten Funkprotokolls nicht
in die engere Betrachtung gezogen werden konnte. Beim späteren Entwurf des Sen-
sornetzwerkes ist daher darauf Rücksicht zu nehmen, dass das Funkprotokoll nach
Möglichkeit austauschbar gehalten wird, so dass es später möglich ist, die entworfene
Lösung an geänderte Marktbedingungen anzupassen.
30
3.3. Produkte zur kabellosen Patientenüberwachung
nicht berücksichtigt werden konnte der ANT+-Standard, der sich aktuell vor allem im
Bereich von Wellnessgeräten wie z.B. Pulsuhren durchzusetzen scheint. Leider handelt
es sich hierbei um eine proprietäre Lösung des Herstellers Dynastream; entsprechende
Bauteile sind momentan auf dem deutschen Markt praktisch nicht erhältlich.
3.2.6. Diskussion
Von den oben genannten Standards scheidet GSM/UMTS von vorne herein aufgrund
der hohen Betriebskosten aus. Auch der DECT -Standard kommt nicht in Frage, da
die Teilnehmerzahl auf 6 Geräte pro Basisstation beschränkt ist. WLAN ist zwar
grundsätzlich für eine solche Aufgabe geeignet, allerdings fällt der Strombedarf mit
über 100 mA für den Einsatz im Erste-Hilfe-Sensor zu hoch aus. Von der Leistungs-
aufnahme prinzipiell möglich wäre der Einsatz von Bluetooth, wobei insbesondere der
kommende Bluetooth Low Energy Standard interessant ist. Auch die hohe Störsicher-
heit wäre ein weiterer Punkt, der für Bluetooth spräche. Problematisch ist jedoch die
Einschränkung, dass pro Bluetooth-Piconetz immer nur 7 Slaves aktiv sein können.
Dies ist für die Anforderungen dieser Diplomarbeit deutlich zu wenig.
Letztendlich erweist sich der ZigBee-Standard als am besten für die gewünschte An-
wendung geeignet. Die erreichte Datenrate ist für die Übertragung einiger Messwer-
te und Alarme mehr als ausreichend. Auch die hohe Störsicherheit, die moderaten
Stückkosten sowie die vergleichsweise hohe Reichweite sprechen für diese Lösung. Die
beiden entscheidenden Kriterien sind jedoch die Fähigkeit von ZigBee, dynamische
Mesh-Netzwerke zu bilden sowie die sehr niedrige Leistungsaufname:
Durch die dynamische Vernetzung mit Routern lassen sich auch große Netzwerke rea-
lisieren. Das Routing wird komplett durch die Firmware der ZigBee-Module über-
nommen, so dass dieses nicht erst implementiert werden muss. Der Strombedarf der
Module ist mit maximal 19 mA so gering, dass eine Versorgung über Batterien ohne
weiteres möglich ist. Dieser Strombedarf lässt sich durch die Verwendung des Energie-
sparmodus weiter senken.
31
3. Stand der Technik
wie Z-Wave zur Funkübertragung ein; ZigBee ist bisher in keinem Medizinprodukt auf
dem Markt zu finden: Fast alle dieser Systeme sind – im Gegensatz zu den Anforderun-
gen dieser Arbeit – dazu konzipiert, lediglich einen einzelnen Patienten zu überwachen.
Die Funktechnologie dient hier vor allem dazu, die Anzahl der Kabel zwischen Patient
und Monitoren zu reduzieren, um so die Mobilität des Patienten zu erhöhen. Die hohe
Teilnehmerzahl von ZigBee bietet für die Überwachung eines einzelnen Patienten kei-
ne Vorteile, sondern bedeutet vielmehr einen zusätzlichen Aufwand, so dass Lösungen
wie Bluetooth in diesem Fall deutlich praktikabler sind.
Von diversen Herstellern wie Dräger Medical, Philips, GE und WelchAllyn existiert
eine Reihe Bluetooth-basierter Überwachungslösungen. Diese sind allerdings meist we-
niger als portables Gerät, als viel mehr als stationäre Überwachungslösung im Kran-
kenhaus gedacht. Die Bluetooth-Technik dient hier vor allem dazu, möglichst wenige
Kabel zum Patienten zu führen, was den Umgang (z.B. bei der Patientenwäsche oder
beim Wenden) erheblich erleichtert. Keine dieser Technologien ist jedoch für den Ein-
satz in einem MANV -Szenario geeignet.
Bei dem Projekt SOGRO MANV 500 (Sofortrettung bei Großschadenslagen mit einem
Massenanfall von 500 Verletzten) beschäftigt, man sich insbesondere mit der effizien-
ten Kennzeichnung und Lokalisierung von Patienten. Hierzu wird den Patienten ein
32
3.4. Verwandte Projekte zum Einsatz in MANV-Szenarien
Armband mit integriertem GPS -Peilsender und Datenspeicher angelegt, auf dem dann
die Diagnose digital gespeichert wird. Eine automatische Überwachung ist bei diesem
Projekt allerdings derzeit nicht vorgesehen.[SOGR10]
Eine weiteres Projekt, das sich mit der technischen Unterstützung von Rettungskräften
bei einem MANV beschäftigt ist A.L.A.R.M. (Adaptive Lösungsplattform zur Akti-
ven technischen Unterstützung beim Retten von Menschenleben). Im Moment sind nur
recht wenige Informationen zu diesem Projekt verfügbar; diese deuten jedoch darauf
hin, dass es bei dem Projekt eher um die Schaffung von einheitlichen Prozessen und
Ablaufplanung als um eine konkrete technische Lösung geht.[ALAR10]
Ein ähnlicher Ansatz wie in dieser Diplomarbeit wird in dem AID-N ( AID-N: The Ad-
”
vanced Health and Disaster Aid Network: A Light-Weight Wireless Medical System
for Triage“) verfolgt.[GMSC+ 07]. Bei diesem Ansatz wird intensiv auf die TinyOS -
Plattform aufgebaut, und wird eine IEEE-802.15.4 -basierte Lösung eingesetzt. Leider
scheint dieses Projekt seit mehreren Jahren nicht weiter verfolgt zu werden; auf der
Webseite sind seit 2007 keine Änderungen mehr vorgenommen worden. Auch wurde
hier nicht auf Aspekte der industriellen Fertigung der einzelnen Knoten, d.h. insbe-
sondere Kompaktheit und Kosteneffektivität eingegangen. Insgesamt handelt es sich
um eine technisch sehr interessante Arbeit, die jedoch durch ihren anderen Fokus die
Anforderungen dieser Diplomarbeit nicht erfüllen kann.
33
4. Analyse
In diesem Kapitel wird eine Analyse der Problemstellung dieser Diplomarbeit vorge-
nommen. Hierzu werden zunächst die Anforderungen analysiert, die an ein kabelloses
System zur Überwachung von Patienten gestellt werden. Danach werden die eingesetz-
ten Hardwarebausteine, konkret der ADuC-Mikrocontroller sowie das ZigBee-Modul
der Firma Atmel inklusive der dazugehörigen SerialNet-Firmware vorgestellt und un-
tersucht. Hierbei werden häufig auftretende Probleme aufgezeigt und allgemeine Lö-
sungen erarbeitet. Diese Lösungen werden in den späteren Kapitel als Grundlage für
den Entwurf und die Implementierung der fertigen Lösung dienen.
• Senden von Befehlen: Das System soll in der Lage sein, Befehle an die Sensoren
zu senden. Diese sollen auf die empfangenen Befehle entsprechend reagieren. Es
soll möglich sein, neue Befehle zu einem späteren Zeitpunkt hinzuzufügen.
• Skalierbarkeit: Das System soll sowohl in Anzahl der Sensoren als auch in der
räumlichen Ausdehnung (Reichweite) skalierbar sein. Es sollen sowohl sehr kleine
Netzwerke als auch große Netzwerke mit mehreren hundert Knoten realisierbar
sein.
• Kosteneffizienz: Die Kosten für die Erweiterung der Sensoren sollen möglichst
gering sein.
• Niedriger Strombedarf: Der Strombedarf der einzelnen Sensoren muss so gering
sein, dass der Betrieb über eine handliche Batterie über einen längeren Zeitraum
möglich ist. Ideal wäre, wenn sich eine Laufzeit von mindestens 12 Stunden mit
einer einzelnen Knopfzelle erreichen liesse.
• Stabilität: Das System soll möglichst unempfindlich gegenüber Störungen sein.
Bei einfachen Störungen des Funkverkehrs sollen verlorene Pakete neu Übertra-
gen werden. Schlägt diese Übertragung wiederholt fehl, soll eine Warnmeldung
an der Überwachungsstation angezeigt werden. Es soll ebenfalls gewarnt werden,
wenn ein Sensor die Netzwerkverbindung verloren hat oder aus anderen Gründen
(z.B. leere Batterie) nicht mehr erreichbar ist.
• Erweiterbarkeit: Das System soll softwareseitig erweiterbar sein. Insbesondere
soll es möglich sein, ohne Veränderungen an der Software Schnittstellen (z.B. in
Form einer Weboberfläche) zu anderen Systemen hinzuzufügen.
• Anpassbarkeit: Das System soll an sich verändernde Rahmenbedingungen an-
passbar sein. Insbesondere sollen alle technischen Details des Funkprotokolls so
gekapselt werden, dass ein Austausch des Funkprotokolls lediglich an einer Stelle
des Systems Änderungen erfordert.
36
4.2. Der Analog Devices ADuC702X-Mikrocontroller
sich hierbei um einen Vertreter einer ganzen Familie von Mikrocontrollern der Firma
Analog Devices. Es folgt eine kurze Übersicht über die Eigenschaften dieser Mikrocon-
trollerfamilie.
4.2.1. Beschreibung
Mit der ADuC702X -Familie bietet die Firma Analog Devices eine Serie voll integrierter
Mikrocontroller auf Basis der ARM7 -Architektur an. Diese Mikrocontroller zeichnen
sich insbesondere durch ihre hohe Anzahl an A/D-Wandler-Kanälen aus. So verfügt
das Modell ADuC7026 beispielsweise über 16 A/D-Wandler-Kanäle mit einer Abta-
strate von einer Million Samples pro Sekunde bei einer Auflösung von 12 Bit. Damit
bietet jeder der 16 Kanäle eine Datenrate, die etwa dem 17fachen einer gewöhnli-
chen Audio-CD entspricht. Der Mikrocontroller selbst bietet bei einer Frequenz von
41,78 MHz eine maximale Leistung von 41 Millionen Befehlen pro Sekunde (MIPS ).
Zusätzlich sind auf dem Chip 8 kB SRAM sowie 62 kB Flash-Speicher vorhanden.
Bei den Modellen ADuC7026 und ADuC7027 ist zusätzlich ein externer Speicherbus
vorhanden, über den bis zu 512kB zusätzlicher SRAM angeschlossen werden kann. Bei
37
4. Analyse
größerem Speicherbedarf besteht die Möglichkeit, über SPI oder I 2 C weiteren SRAM
oder Flash-Speicher anzuschliessen. [Devi07]
4.2.2. Peripherie
In die Mikrocontroller der ADuC-702X -Familie ist standardmäßig folgende Peripherie
integriert:
• AD-Wandler: Bis zu 16 Kanäle mit einer maximalen Abtastrate von 1 MSPS bei
einer Auflösung von 12 Bit.
• Timer: 4 Allzwecktimer/Zähler.
Die einzelnen Modelle der ADuC-702X -Familie unterscheiden sich vor allem durch die
Anzahl vorhandener Pins. Bei dem kleinsten Modell ADuC-7019 stehen lediglich 40
Pins, beim größten 80 Pins zur Verfügung. Diese Pins sind zudem mehrfach belegt.
Daher ist es nicht möglich, die gesamte Peripherie gleichzeitig zu verwenden. Je nach
Anforderung ist ggf. die Verwendung eines größeren Modells notwendig.
38
4.3. Die Atmel-ZigBit-Familie
Da die Herstellung von HF 1 -Komponenten eine sehr langwierige und komplexe Aufga-
be ist, wurde die Entscheidung getroffen, ein komplett integriertes Modul zu verwen-
den, bei dem bereits alle HF -Komponenten und Antenne aufgebracht sind. Passende
Lösungen waren von den Firmen Digi, Mikrochip, Radicrafts und Atmel verfügbar.
Letztendlich wurde die Entscheidung für ein Modul der Firma Atmel getroffen, da
diese nicht nur die günstigsten betrachteten Module, sondern mit der Ansteuerung
über UART mittels AT-Befehlen auch am einfachsten anzusteuern waren. Der hier
verwendete Modultyp soll nachfolgend kurz vorgestellt werden.
4.3.1. Hardware
IRQ
UART
ATmega1281 AT86RF230
USART/SPI Chip
Micro RF
I2C Antenna
controller Transceiver
JTAG
Analog
Atmel bietet unter dem Namen ZigBit eine Palette von ZigBee-Modulen an. Diese
Module sind in der Ansteuerung identisch, unterscheiden sich jedoch vor allem in ihrer
Reichweite. Unter der Bezeichnung ATZB-24-A2R wird ein Modul für kurze Reichwei-
ten angeboten. Besonderheit an diesem Modul ist, dass es bereits über zwei integrierte
Antennen verfügt, so dass für den Betrieb keine weiteren Bauteile notwendig sind.
1
Hochfrequenz
39
4. Analyse
4.3.2. Firmware
4.3.2.1. Bitcloud
BitCloud ist ein ZigBee-Pro-zertifizierter Softwarestack von Atmel. Es werden die Mo-
dule der ZigBit-Familie sowie die RZRAVEN-Evaluationskits unterstützt. BitCloud ist
hierbei keine fertige Firmware, sondern Teil eines Software Development Kits (SDK),
das dazu dient, Anwender beim schnellen und einfachen Entwickeln eigener Firmware
zu unterstützen. Für Anwender, die selbst keine Firmware implementieren möchten,
stellt das im folgenden Abschnitt beschriebene SerialNet eine Alternative dar.
4.3.2.2. SerialNet
SerialNet ist eine BitCloud -basierte Firmware, die von Atmel als fertiges Image2 an-
geboten wird. Dieses kann auf dem ZigBit-Modul installiert werden, wodurch die
Notwendigkeit der Eigenentwicklung entfällt. SerialNet bietet ein einfaches serielles
Interface, das sich mit Hilfe von AT-Befehlen 3 steuern lässt. Der Befehlssatz bietet
Zugriff auf fast alle Module des ZigBit-Moduls wie z.B. das Versenden und Empfan-
gen von Daten, das Schalten von IO-Ports eines entfernten ZigBit-Moduls sowie die
Konfiguration des Energiesparmodus. Nicht möglich ist derzeit die Verwendung der
im ZigBee-Standard definierten AES -Verschlüsselung, so dass eine Datenübertragung
derzeit nur unverschlüsselt erfolgen kann. Daher müssen für den produktiven Einsatz
weitere Sicherheitsmaßnahmen ergriffen werden. Wie diese aussehen können, ist in
Abschnitt 9.2 beschrieben.
Das SerialNet AT-Protokoll lässt sich vereinfacht als Zustandsautomat mit 3 Zustän-
den darstellen (vgl. Abbildung 4.3)4 :
2
Binäres Speicherabbild, das ohne Anpassung in den Speicher des ZigBit-Moduls programmiert
werden kann.
3
Der AT-Befehlssatz war früher zur Steuerung von Modems weit verbreitet.
4
Zur exakten Darstellung müssten weitere Zustände eingeführt werden, die das Bearbeiten von
Befehlen im offline-Modus repräsentieren. Außerdem wird der Übergang von offline zu online
40
4.3. Die Atmel-ZigBit-Familie
{+wjoin|+autonet=1}
[Event] {Befehl} [Event]
[OK|ERROR]
offline Befehl wird
offline online
ausgeführt
{OK|ERROR}
{+wleave}
[Komplexe
[OK|ERRoR]
Rückgabe]
{ } – Befehl
[ ] – Antwort
• online: Das Modul ist betriebsbereit, mit einem Netzwerk verbunden und war-
tet auf Befehle. Befehle zur Kommunnikation mit anderen Knoten stehen zur
Verfügung, Befehle zur Kommunikation der Netzwerkparameter sind gesperrt.
• busy: Das Modul ist mit der Bearbeitung eines Befehls beschäftigt. Es stehen kei-
ne Befehle zur Verfügung – jedoch können jederzeit Ereignisse empfangen werden.
Grundsätzlich ist das SerialNet-Protokoll synchron: Ein Befehl wird immer mit einem
der beiden Ergebniscodes OK und ERROR beantwortet. Bei einigen Befehlen wie
z.B. AT+WCHILDREN kann zusätzlich zum Ergebniscode eine ggf. sogar mehrzei-
lige Antwort erfolgen. Eine Antwort wird immer durch Ausgabe eines Ergebniscodes
beendet. Neben dieser synchronen Befehl-Antwort-Folge können jedoch jederzeit auch
asynchrone Events auftreten. Hierauf muss bei der Entwicklung eines Treibers zur An-
steuerung des Moduls besonders geachtet werden. Die wichtigsten SerialNet-Befehle,
eigentlich durch ein EVENT JOINED-Ereignis ausgelöst, und müsste daher durch einen Epsilon-
Übergang dargestellt werden. Diese Details sind jedoch für das Verständnis der prinzipiellen Funk-
tionsweise des Befehlssatzes unwesentlich.
41
4. Analyse
ihre Anwendbarkeit sowie die Art der Antwort sind in Tabelle 4.1 dargestellt. Tabel-
le 4.2 beinhaltet die wichtigsten SerialNet-Events.
4.4.1. Problemstellung
Das SerialNet-Protokoll ist grundsätzlich synchron. Ein Programm, das mit einem
ZigBit-Modul kommunizieren lässt sich daher am einfachsten nach folgendem Muster
aufbauen:
1 def sendeBefehl ( befehl )
42
4.4. Kommunikation mit dem ZigBit-Modul
9 # Antwort interpretieren
10 if statusString == ’ OK ’:
11 return True
13 else :
14 return False
43
4. Analyse
• Direktes Behandeln von Ereignissen: Dieses Verfahren hat den Vorteil, dass auf
empfangene Ereignisse sofort reagiert werden kann; so lässt sich z.B. ein empfan-
gener Alarm direkt auf dem Bildschirm darstellen und es muss nicht erst auf die
Beendigung des vorherigen Befehls gewartet werden. Erfordert das behandelte
Ereignis den Zugriff auf das ZigBit-Modul, um z.B. den Empfang einer Nachricht
zu quittieren, so ist besondere Vorsicht erforderlich, da sonst entweder Verklem-
mungen (Deadlocks) oder ein Verlust der Synchronisierung auftreten können6 .
Dieses Verfahren eignet sich besonders für Systeme, in denen auf eingehende
Ereignisse besonders schnell reagiert werden muss.
• Einreihen von Ereignissen in eine Warteschlange: Diese Verfahren hat den Vor-
teil, dass es sehr einfach umgesetzt werden kann. Alle Ereignisse, die während
der Bearbeitung eines Befehls auftreten, werden zunächst in eine Warteschlange
eingereiht. Mit der Abarbeitung der Ereignisse wird so lange gewartet, bis der
laufende Befehl abgeschlossen wurde. Während der Abarbeitung der Ereignisse
muss dann keine Rücksicht mehr darauf genommen werden, in welchem Zustand
sich das ZigBit-Modul befindet, da es sich nach Abarbeitung eines Befehls sicher
im betriebsbereiten Zustand befindet7 Nachteilig ist, dass Ereignisse erst behan-
delt werden, wenn Befehle komplett abgearbeitet wurden. Bei Ereignissen, zu
deren Bearbeitung nicht auf das ZigBit-Modul zugegriffen werden muss, bedeu-
tet dies eine unnötige Verzögerung. Dieses Verfahren eignet sich daher eher für
Systeme, in denen deutlich mehr Befehle als Ereignisse auftreten.
6
Eine mögliche Lösung ist die Verwendung einer Warteschlange, in die die zu versendenden Daten
eingereiht werden.
7
Ausnahme hiervon ist, der zwischenzeitliche Verlust der Netzwerkverbindung, der natürlich geson-
dert behandelt werden muss.
44
4.4. Kommunikation mit dem ZigBit-Modul
Durch die Verwendung von Multithreading kann darüber hinaus eine Kombination aus
beiden Verfahren verwenden werden. In diesem Fall wird von einem Thread aus die
Bearbeitung der Befehle, inkl. des Befüllens der Ereigniswarteschlange vorgenommen,
während von einem anderen Thread aus diese Warteschlange parallel dazu abgearbei-
tet wird.
11 # Events behandeln
12 while statusString not in ( ’ OK ’ , ’ ERROR ’ ):
13 eventQueue . append ( statusString )
14 statusTring = serialPort . readLine ()
20 else :
21 return False
45
4. Analyse
programm kann beim Parsen des Befehls daher entsprechend Rücksicht darauf genom-
men werden, ob eine einzeilige oder eine mehrzeilige Antwort erwartet wird. Komple-
xe Antworten werden immer mit einem Statuscode beendet, d.h. wenn eine komplexe
Antwort erwartet wird, muss so lange vom ZigBit-Modul gelesen werden, bis ein Sta-
tuscode empfangen wird. Auch hierbei muss natürlich darauf geachtet werden, dass
zwischen einzelnen Zeilen einer Antwort Ereignisse auftreten können, die entsprechend
der in Abschnitt 4.4.2 vorgestellten Lösung behandelt werden müssen. Das folgende
Pseudocode-Programm zeigt, wie komplexe Antworten behandelt werden können:
16 return statusString
18 else :
19 # # Antwort vom ZigBit - Modul lesen .
20 # # ( Blockiert so lange , bis Antwort empfangen
21 # # wurde )
22 statusString = serialPort . readLine ()
24 # # Antwort interpretieren
25 if statusString == ’ OK ’:
26 return True
46
4.4. Kommunikation mit dem ZigBit-Modul
28 else :
29 return False
47
4. Analyse
41 else :
42 # # Antwort vom ZigBit - Modul lesen .
43 # # ( Blockiert so lange , bis Antwort
44 # # empfangen wurde )
45 statusString = serialPort . readLine ()
47 # Events behandeln
48 while statusString not in ( ’ OK ’ , ’ ERROR ’ ):
49 eventQueue . append ( statusString )
50 statusTring = serialPort . readLine ()
56 else :
57 return False
48
4.5. Powermanagement
4.5. Powermanagement
Die Spannungsversorgung des Erste-Hilfe-Sensors erfolgt über Batterie. Da der Wech-
sel der Batterie während eines MANVs umständlich und zeitraubend ist, ist eine mög-
lichst hohe Batterielaufzeit wünschenswert. Am besten wäre hierbei, wenn überhaupt
kein Batteriewechsel notwendig wäre. Konkret bedeutet dies, dass mit einer Batterie
eine Laufzeit von mindestens 12 Stunden erreichbar sein sollte. Bei einer Laufzeit von
12 Stunden ergibt sich hieraus, dass der Strombedarf des ZigBit-Moduls im Mittel
20 mA nicht überschreiten darf. Im empfangsbereiten Zustand braucht das ZigBit-
Modul laut Datenblatt einen Strom von 19 mA, ist also grundsätzlich zur Erfüllung
dieser Anforderung geeignet8 . Zur Verringerung der Leistungsaufnahme bietet das Zig-
Bit-Modul einen Energiesparmodus, indem lediglich der interne Speicher gehalten und
alle andere Hardware abgeschaltet wird. In diesem Modus braucht das Modul laut Da-
tenblatt weniger als 6 µA.
Zum Stromsparen wird das Modul periodisch für eine bestimmte Zeit in den Energie-
sparmodus versetzt. Während dieser Zeit kann das Modul weder von der Steurungs-
software angesprochen werden, noch können Daten vom Netzwerk empfangen werden.
Damit in dieser Zeit keine Informationen verloren gehen, werden vom nächstgelege-
nen Router alle Nachrichten an dieses Modul zwischengespeichert, bis dieses wieder
im empfangsbereiten Zustand ist. Bei Verwendung der SerialNet-Firmware wird die
Dauer des Verweilens im Energiesparmodus über den Befehl AT+WPWR konfiguriert.
Die Konfiguration erfolgt in Schritten zu 100 ms.
49
4. Analyse
Bei der Verwendung des Energiesparmodus muss sichergestellt werden, dass keine In-
formationen, die über die UART -Schnittstelle an das Modul gesendet werden, verloren
gehen. Hierzu bietet die SerialNet-Firmware die Möglichkeit, über die CTS -Leitung
der UART -Schnittstelle ihre Empfangsbereitschaft zu signalisieren. Die Steurungssoft-
ware auf der Gegenseite muss hierzu vor jedem Senden den Zustand der CTS -Leitung
kontrollieren, und darf nur senden, wenn die CTS -Leitung den Zustand 0 hat. Damit
die SerialNet-Firmware diesen Zustand korrekt kommuniziert, muss über den Befehl
AT+IFC die Flusskontrolle aktiviert werden.
Zu beachten ist, dass die Konfiguration des Energiesparmodus bei allen Teilnehmern
des Netzes (also auch auf Routern und Coordinatoren) gleich sein sollte, damit Nach-
richten an Knoten, die sich im Energiesparmodus befinden, auf den Routern lange
genug zwischengespeichert werden. Der eigentliche Energiesparmodus steht allerdings
nur auf Endknoten, also RFDs zur Verfügung.
50
5. Entwurf
5.1. Gesamtsystem
In dieser Arbeit wird ein System zur Patientenüberwachung entworfen. Dieses System
besteht aus einer Kombination von Soft- und Hardware. Zwischen den einzelnen Kom-
ponenten gibt es klar definierte Schnittstellen. Hierdurch ist gewährleistet, dass die
einzelnen Komponenten unabhängig voneinander entworfen und implementiert werden
können. Noch nicht implementierte Komponenten können durch Simulatoren ersetzt
werden, so dass bereits fertige Komponenten schon getestet werden können, ohne dass
das Gesamtsystem komplett fertig gestellt werden muss. Dies gewährleistet ein früh-
zeitiges Erkennen von Problemen und ermöglichst ein entsprechendes Gegensteuern.
Abbildung 5.1 zeigt, welche Komponenten in dem Gesamtsystem existieren und wie
diese zusammenwirken:
Server-Anwendung
Anwender
Operator Notarzt
MANV-Datenbank
MANV-Server
Ethernet
Client-Anwendung
MANV-Mobile-Gui
Wlan-Access-Point
MANV-Connector
an
Wl
ZigBee-Netzwerk
MANV-Gui
ZigBee-USB-Stick
ZigBee-Router
ZigBee
ZigBee-Router
Überwachte Personen
52
5.2. MANVNode
• ZigBee-Router : Die Router dienen zur Erweiterung der Reichweite des ZigBee-
Netzwerkes. Hierfür wird ein fertiges ZigBee-Modul der Firma Atmel verwendet.
5.2. MANVNode
Die MANVNode ist eine Test- und Entwicklungsplatine zum Test der Sensornetzes. Auf
ihr befindet sich ein ADuC-7026-Mikrocontroller der Firma Analog Devices sowie ein
Atmel ZigBit-Funkmodul des Typs ATZB-24-A2. Die Platine dient zur Simulation des
Erste-Hilfe-Sensors. Die Beschaltung dieser Bauteile findet sich in Abbildung 5.2 sowie
Abbildung 5.3. An Stelle einer echten Messung generiert die Platine Messwerte mit
Hilfe eines Zufallszahlen-Generators. Mit diesem Generator können folgende Zustände
generiert werden:
53
5. Entwurf
ADuC 7026
DGND
4 3
R6 VDD
2 1
1k
RESET
C7 C8
Q1 12pF 12pF
TMS
TDO
TCK
TDI
15
23
14
22
37
44
45
U$1 DGND DGND
TDO
XCLKO
TDI
RST#
XCLKI
TMS
TCK
77 62 UART_TXD
ADC0 P1.0/T1/SPM0/PLAI[0]
78 61 UART_RXD
ADC1 P1.1/SPM1/PLAI[1]
79 60 UART_RTS
ADC2/CMP0 P1.2/SPM2/PLAI[2]
80 59 UART_CTS
ADC3/CMP1 P1.3/SPM3/PLAI[3]
1 58
ADC4 P1.4/SPM4/PLAI[4]/IRQ2
2 57
ADC5 P1.5/SPM5/PLAI[5]/IRQ3
3 52
ADC6 P1.6/SPM6/PLAI[6]
4 51
ADC7 P1.7/SPM7/PLAO[0]
5
ADC8
6 42 LED_RED
ADC9 P2.0/SPM9/PLAO[5]/CONVSTART#
7 49 LED_YELLOW
ADC10 P2.1/WS#/PWM0H/PLAO[6]
76 50 LED_GREEN
ADC11 P2.2/RS#/PWM0L/PLAO[7]
10 17 LED_BLUE
DAC0/ADC12 P2.3/AE
11 33
DAC1/ADC13 P2.4/PWM0H/MS0
12 35
DAC2/ADC14 P2.5/PWM0L/MS1
13 36 PIEZZO
DAC3/ADC15 P2.6/PWM1H/MS2
48 ZIGBIT_RESET
P2.7/PWM1L/MS3
8
GNDREF
67 29
REFGND P3.0/AD0/PWM0H/PLAI[8]
470nF 30
P3.1/AD1/PWM0L/PLAI[9]
9 31
ACDNEG P3.2/AD2/PWM1H/PLAI[10]
C10 AGND P3.3/AD3/PWM1L/PLAI[11]
32
69 38
DACREF P3.4/AD4/PWM2H/PLAI[12]
39
P3.5/AD5/PWM2L/PLAI[13]
BUTTON_YELLOW 43 P0.7/ECLK/XCLK/SPM8/PLAO[4] P3.6/AD6/PWMTRIP/PLAI[14]
46
21 47
P0.6/T1/MRST/PLAO[3]/AE P3.7/AD7/PWMSYNC/PLAI[15]
BUTTON_BLUE 41
IRQ1/P0.5/ASCBUSY/PLAO[2]/MS0
40 55
IRQ0/P0.4/PWMTRIP/PLAO[1]/MS1 P4.0/AD8/PLAO[8]
TRST 34 56
P0.3/TRST/A16/ADCBUSY P4.1/AD9/PLAO[9]
BUTTON_GREEN 24 63
P0.2/PWM2L/BHE# P4.2/AD10/PLAO[10]
BUTTON_RED 16 64
20
P0.1/PWM2H/BLE# P4.3/AD11/PLAO[11]
65
ZIGBIT_STATUS
BM/P0.0/CMPOUT/PLAI[7]/MS2 P4.4/AD12/PLAO[12]
66 DGND
P4.5/AD13/PLAO[13]
BUTTON_DOWNLOAD
18
P4.6/AD14/PLAO[14]
19
DGND P4.7/AD15/PLAO[15]
DACGND
DACVDD
IOGND
IOGND
IOVDD
IOVDD
DGND
AGND
AGND
AVDD
AVDD
VREF
LVDD
SERIALDOWNLOAD
R9
1k
ADUC7026
27
28
68
26
54
25
53
70
75
73
74
71
72
1
DGND
2
VCC
C11 C12
100nF 100nF
C6
100nF
VDD
C5
470nF 470nF
DGND
C4
AGND
54
5.2. MANVNode
ZigBit
1 JP1
1 43
SPI-CLK IRQ6
2 42
2
3
4
SPI-MISO IRQ7
3 41
SPI-MOSI PE3
4 40
ZDM-A1281-A2
PB5 USART0-EXTCLK
VDD
DGND 5 39
PB6 USART0-TX
6 38
PB7 USART0-RX
7 37
32K-OUT(PG3) UART-DTR
ZIGBIT_RESET 8 RESET PG5
36
9 35
U$3
DGND AGND
10 34
CPU-CLK AREF
11 33
I2C-CLK(PD0) BAT(VCC/3,PF0)
S1
ZIGBIT_TXD DGND 12 I2C-DATA(PD1) ADC-IN1(PF1)
32
UART_RXD 1 2 13
UART-TX ADC-IN2(PF2)
31 AGND
UART_TXD 3 4 ZIGBIT_RXD 14 30
ZIGBIT_RTS UART-RX ADC-IN3(PF3)
UART_RTS 5 6 15
UART-RTS JTAG-TCK
29
UART_CTS 7 8 ZIGBIT_CTS 16 28
1
UART-CTS JTAG-TDO
SJ1
17 27
PD6 JTAG-TDI
DGND
DGND
DVCC
DVCC
18 26
PG0
PG1
PG2
PD7 JTAG-TMS
2
19
20
21
22
23
24
25
DGND
2
1
ENABLE_ZIGBEE
470nF
C9
VDD
DGND
• Rot: Simulation eines Patienten in kritischem Zustand mit Puls zwischen 0 und
10 (entsprechend Kammerflimmern oder Kreislaufstillstand) sowie Atmung zwi-
55
5. Entwurf
4
2
4
2
4
2
4
ZDM-A1281-A2
12pF
470nF
1
3
1
3
1
3
1
3
100k
1JS
100nF
LP2980IM5
100pf 1Q 100k
4 3
12pF
10µF 100k
1 2 3 4 2 1
ES2D
470nF
ADUC7026
7R
100nF
470nF
8R
0
10µF
470nF
0
100
100nF 1k
4 3 2 1 1 2
100
1k
3 4
Zur Einstellung und zum Wechsel der Zustände befinden sich 3 Taster an der Plati-
ne. Der Zustand wird mit Hilfe von drei farbigen LEDs visualisiert. Zusätzlich kann
über einen Piezo-Summer ein Alarm auch akustisch wiedergegeben werden. Durch die
Kombination der drei LEDs werden zusätzlich Status- und Fehlerinformationen der
Platine während des Initialisierungsvorgangs ausgegeben.
56
5.2. MANVNode
5.2.1. Hardware
Die MANVNode wird als Platine in SMD-Bausweise realisiert. Das Layout dieser
Platine wurde mit Hilfe des Programms Cadsoft Eagle entworfen. In Abbildung 5.4 ist
der Entwurf dieser Platine zu sehen. Im Folgenden werden die einzelnen Aspekte des
Entwurfs erläutert.
5.2.1.1. Spannungsversorgung
power
VCC
VDD
AVDD
POWER1
R5
1
2
100
R4
100
VDD
DGND
C2
PWR
C3
10µF
10µF
GND
AGND
DGND
ES2D
D1
1
3 ON IN OUT 5
GND
ADP1
2
C1 LP2980IM5
100pf
GND
R7 R8
0 0
AGND
DGND
POWER
1
2
Um die Platine möglichst vielseitig einsetzen zu können, wurde Wert auf eine mög-
lichst flexible Spannungsversorgung gelegt. Diese soll möglichst robust gegenüber Span-
nungsschwankungen sein. Kern der Spannungsversorgung ist ein Low-Dropout-Span-
nungsregler des Typs LP2980-3.3 der Firma National Semiconductor. Dieser liefert
57
5. Entwurf
eine stabile 3,3-V-Spannung bei einem maximalen Strom von 50 mA. Die Eingangs-
spannung kann zwischen 2,1 V und 16 V variiert werden. Die Spannungsversorgung
kann damit z.B. über USB (5 V-Versorgungsspannung), ein externes Netzteil oder
eine 9 V-Blockbatterie gespeist werden. Durch die hohe maximale Versorgungsspan-
nung von 9 V sind Schäden durch versehentliches Anschließen eines falschen Netzteils
weitestgehend ausgeschlossen. Die Spannungsversorgung ist zusätzlich mit einem 10-
mF-Kondensator stabilisiert.
Zusätzlich wurde die die Spannungsversorgung weiter stabilisiert. Hierzu wurde jeder
Spannungseingang aller Bauteile der Platine mit einem 100nF Kondensator gepuffert.
Diese sind möglichst nahe an den entsprechenden Versorgungspins angebracht. Kurz-
zeitige Spannungsabfälle, wie sie z.B. beim Schalten von LEDs, des Piezo-Summers
oder des Aufwachens des ZigBee-Moduls aus dem Stromsparmodus auftreten kön-
nen, werden so zuverlässig abgefangen. Der Schaltplan der Spannungsversorgung der
MANVNode findet sich in Abbildung 5.5.
5.2.1.3. JTAG
Die MANVNode-Platine verfügt neben der seriellen auch über eine JTAG-Schnittstelle.
Die Beschaltung dieser ist in Abbildung 5.6 zu sehen. Diese ermöglich einen Zugriff
mit gängigen Programmierwerkzeugen wie z.B. Eclipse, Crossworks oder Kyle µVision.
Über die Schnittstelle kann sowohl Programmierung als auch Debugging des ADuC-
58
5.2. MANVNode
JTAG
VDD
TCK R3
100k
TDI R2
100k
R1
TRST
100k
JTAG
1 2
TRST 3 4
TDI 5 6
TMS 7 8
TCK 9 10
11 12
TDO 13 14
15 16
17 18
19 20
DGND
7026-Mikrocontrollers durchgeführt werden. Ein Zugriff auf das ZigBit Modul ist al-
lerdings nur indirekt möglich1 . Ein Zugriff über JTAG ist nicht vorgesehen.
5.2.1.4. LED-Anzeige
Die MANVNode-Platine verfügt insgesamt über 6 LEDs, die zur Anzeige des aktuellen
Zustands sowie zur Fehlerdiagnose dienen. Die Beschaltung dieser LEDs findet sich in
Abbildung 5.7.
1
Einige Werkzeuge bieten die Möglichkeit, eine Konsolenverbindung über den UART des ADuC-
7026-Mikrocontrollers zu öffnen, um direkt mit dem ZigBit-Modul zu kommunizieren.
59
5. Entwurf
BYELLOW
user interface
2
BUTTON_YELLOW
1
LED_RED
DGND RED
BBLUE
2
LED_YELLOW
YELLOW
BUTTON_BLUE
1
LED_GREEN
GREEN
DGND
LED_BLUE
BGREEN
2
BLUE
BUTTON_GREEN PIEZZO 2 1
1
PIEZZO
DGND DGND
BRED
2
BUTTON_RED
1
DGND
• PWR: Diese LED befindet sich direkt in der Spannungsversorgung der Platine.
Sie leuchtet, sobald die Platine mit Spannung versorgt wird.
• GREEN, YELLOW, RED: Diese LEDs sind direkt an den Mikrocontroller an-
geschlossen und visualisieren den Zustand des Zufallszahlengenerators entweder
durch dauerhaftes Leuchten (GREEN, YELLOW) oder im Alarmzustand durch
schnelles Blinken (RED).
60
5.2. MANVNode
5.2.1.4.1 Diagnosecodes
Neben den oben dargestellten einfachen Signalisierungen hat die Firmware der MANV-
Node-Platine die Möglichkeit, über die Kombination obiger LEDs Diagnose- und Feh-
lercodes auszugeben. Hierbei gilt folgende Codierung:
5.2.2. Firmware
Die Firmware der MANVNode dient dem Entwickeln und Testen eines Treibers für das
ZigBit-Modul. Dieser Treiber wird später in den Erste-Hilfe-Sensor integriert werden.
Zusätzlich bietet die MANVNode Funktionalität, die zur Simulation des Erste-Hilfe-
Sensors gegenüber der MANVSuite dient. Hierzu sollen neben dem ZigBit-Treiber
folgende Funktionalitäten integriert werden:
61
5. Entwurf
Zur Vermeidung von Busy-Waiting 2 soll der Treiber für den UART s als Interrupt-
Service-Routine3 (ISR) realisiert werden. Die Kommunikation zwischen Firmware und
UART -Treiber erfolgt über Ringpuffer: Zu sendende Daten werden von der Firmware
in den Sendepuffer gelegt. Sobald der UART sendebereit ist, soll der UART -Treiber
die zu sendenden Daten zeilenweise aus dem Ringpuffer entnehmen und an den UART
übertragen. Analog dazu funktioniert das Empfangen von Daten: Diese werden vom
UART -Treiber gelesen und zeilenweise in den Empfangspuffer gelegt. Die Firmware
kann diese nun zeilenweise aus dem Puffer lesen. Dies entspricht der Semantik einer
gepufferten, nicht blockierenden Ein-/Ausgabefunktion.
Das ZigBit-Modul ist via UART mit der MANVNode verbunden und wird über das
SerialNet-Protokoll angesprochen. Der Ablauf ist hierbei wie folgt:
1 Uebertrage aktuellen Status
2 Werte Antwort aus
3 Arbeite empfangene Befehle ab
4 Aktiviere den Energiesparmodus
Diese Schritte können entweder periodisch mittels eines Timer-Interrupts oder als
Hauptprogramm in einer Endlosschleife ausgeführt werden. Wichtig hierbei ist die Be-
rücksichtigung der in Abschnitt 4.4 beschriebenen Synchronisationsprobleme. Hierbei
soll wie folgt vorgegangen werden:
• Behandlung asynchron auftretender Ereignisse: Hierbei ist vor allem das DA-
TA-Ereignis wichtig, über das der Empfang von Befehlen von der MANVSuite
2
Warten auf ein Ereignis unter Verschwendung von Prozessorleistung.
3
Ein Interrupt ist eine von der Hardware ausgelöste Unterbrechungsanforderung der Software, welche
zum sofortigen Aufruf einer entsprechenden Interrupt Service Routine führt. Nach Beendigung
dieser Routine wird die Bearbeitung an der Stelle der Unterbrechung fortgesetzt.
62
5.2. MANVNode
commandBuffer initialisieren
Status = OK
Nein
Statusnachricht verschicken
Ja
Commandbuffer abarbeiten
Energiesparmodus aufrufen
63
5. Entwurf
64
5.3. ZigBee-USB-Stick
5.3. ZigBee-USB-Stick
In Verbindung mit einer Stromquelle wie z.B. einer Batterie oder eines USB -Netzteil
dient der ZigBee-USB-Stick gleichzeitig auch als ZigBee-Router. Der Betriebsmodus
65
5. Entwurf
ZDM-A1281-A2
U$1
100nF
4 3 C1
2 1
JP1
kann hierzu einfach mit Hilfe des Befehls AT+WROLE=1 auf den Routerbetrieb um-
gestellt werden.
5.4. MANVSuite
In der vorliegenden Diplomarbeit wird der Java-Treiber (MANVConnector ) entworfen
und implemtiert, der die Schnittstelle zwischen MANV-Suite und ZigBee-USB-Stick
bildet. Entwurf und Implementierung der MANVSuite selbst erfolgt in [Tepe10]. Ab-
bildung 5.11 beschreibt den Datenfluss zwischen MANVSuite, MANVConnectors und
MANVNode: Der MANVServer ist Teil der MANVSuite. Er dient als Vermittlungs-
stelle zwischen den einzelnen Softwarekomponenten, die mittels Corba an diesen ange-
bunden sind. Eine dieser Komponenten ist der MANVConnector, der in Abschnitt 5.5
genauer beschrieben wird. Dieser greift mittels einer seriellen Schnittstelle (in der
66
5.5. MANVConnector
MANVSuite
MANVServer
Corba
MANVConnector
(Java)
MANVConnector
TCP/IP - Socketverbindung
Serial2Socket
(Python)
TTY-Verbindung
USB-Serial
(Linux Kerneltreiber)
USB
ZigBee-USB-Stick
USB-zu-RS232
Wandler (CP2102)
UART-Verbindung
ZigBit-Modul
ZigBee-Verbindung
ZigBit-Modul
MANVNode
UART-Verbindung
ADuC-Microcontroller
67
5. Entwurf
MANVConnector
new()
new()
new()
resultQueue commandQueue eventQueue
new()
new()
socketWriter
socketReader
initCORBA
take()
readLine()
return command
writeLine()
return data
put(event)
new()
getLastResult() corbaSender
return result
take()
return event
return result
put(result)
5.5. MANVConnector
Der MANVConnector hat einerseits die Aufgabe, Daten, die von dem ZigBee-USB-
Connector empfangen wurden, in Corba-Events umzusetzen und an den MANVServer
68
5.5. MANVConnector
5.5.1. Threads
Wie aus Abbildung 5.17 zu entnehmen ist, verfügt der MANVConnector neben dem
Hauptthread über drei weitere Threads:
• CorbaSender : Dieser Thread ist für die Kommunikation mit MANVServer zu-
ständig. Befehle, die vom MANVServer empfangen werden, werden für das Sen-
sornetz aufbereitet und in die CommandQueue eingestellt. Außerdem werden
Ereignisse aus der EventQueue entnommen, in Corba-Events übersetzt und an
den MANVServer zugestellt.
Die Kommunikation der Threads untereinander findet komplett über die oben genann-
ten Warteschlangen statt. Das Zusammenwirken der Threads ist in Abbildung 5.12
dargestellt:
69
5. Entwurf
Beim Starten der Threads wird sichergestellt, dass diese alle Zugriff auf alle drei Warte-
schlangen haben. Die konsequente Verwendung der Warteschlangen zur Kommunika-
tion der Threads untereinander löst bereits viele Synchronisierungsprobleme. Grund-
sätzlich findet Kommunikation zwischen den Threads rein über die Warteschlangen
statt. Einzige Ausnahme ist das Abrufen des Ergebnisses eines gesendeten Komman-
dos.
ZigBit readonlyZigBit
zigBitMap: HashMap<Integer, ZigBit> id: int
macMap: HashMap<Integer, Integer> readOnlyZigBit(nodeID: int)
ZigBit(nodeID : int) getNodeID: int
getNodeID: int getMacID: int
getMacID: int sendData(data: String): MANVResult
setCommandQueue(commandQueue: BlockingQueue<MANVCommand>) toggleAlertStatus: void
get(id: int): iZigBit enableAlertStatus: void
getByMacID(macID: int): iZigBit disableAlert: void
discover: iZigBit muteAlert: void
sendData(data: String): MANVResult
sendUntilSuccess(data: String): MANVResult
toggleAlertStatus: MANVResult
enableAlertStatus: MANVResult
disableAlert: MANVResult
mutAlert: MANVResult
requestMacID: int
70
5.5. MANVConnector
• Die Command Queue: In dieser Queue werden alle zu sendenden Befehle gespei-
chert.
• Die Event Queue: In dieser Queue werden alle empfangenen Ereignisse gespei-
chert.
• Die Result Queue: In dieser Queue werden alle bereits gesendeten Befehle zu-
sammen mit dem Resultat, das dieser Befehl hatte, gespeichert.
Jedes Element der einzelnen Queues verfügt über eine Priorität; die Queues sorgen
dafür, dass der Zugriff nach Priotität sortiert erfolgt. Hierdurch wird sicher gestellt,
dass wichtige Ereignisse wie z.B. Alarme bevorzugt ausgeliefert werden.
Bei der Befehlsübertragung muss darauf geachtet werden, dass ein Befehl erst dann
gesendet werden darf, wenn die Abarbeitung aller vorherigen Befehle erfolgt ist, da
sonst die Synchronität mit dem ZigBit-Modul nicht mehr gewährleistet ist. Da inner-
halb des MANVConnectors das Senden in einem anderen Thread geschieht als das
Empfangen, erfordert dies besondere Maßnahmen:
Um die Synchronisation zu gewährleisten, bietet der Thread SocketReader eine Schnitt-
stelle, über die der SocketSender das Ergebnis des letzten gesendeten Befehls abholen
kann. Diese Schnittstelle verwendet ein sogenanntes Latch, also eine Art von Barriere,
um den abholenden Thread so lange zu blockieren, bis eine Antwort vorliegt. Von dem
SocketSender wird nun verlangt, dass er nach jedem gesendeten Befehl diese Schnitt-
stelle verwendet, um das Ergebnis des gerade gesendeten Befehls abzuholen. Da der
Sender nun so lange, bis das Ergebnis vorliegt, blockiert ist, kann er auch keine wei-
teren Befehle senden. Hierdurch wird die geforderte Synchronisierung erreicht. Durch
71
5. Entwurf
die JVM ist ein korrektes Verhalten des Latches sowie der zur Priorisierung verwende-
ten Warteschlangen garantiert. Dieser Sachverhalt ist auch nochmal in Abbildung 5.12
dargestellt.
Die vom SocketReader gelesenen Ergebnisse und Ereignisse werden selbst wieder durch
Objekte repräsentiert.
MANVPrioritized
priority: int
compareTo(o: MANVPrioritized): int MANVChildJoined
compareTo(o: object): int
source: iZigBit
MANVChildLost(raw: String)
isImportant: boolean
createCorbaMessages: AbstractList<CorbaMessageContainer>
MANVCommand MANVEvent
command: String raw: String
result: MANVResult MANVEvent(raw: String)
id: int isResult: boolean
maxId: static int MANVChildLost
isImportant: boolean
resultLatch: CountDownLatch fromString(raw: String): MANVEvent source: iZigBit
MANVCommand(command: String, priority: int) createCorbaMessages: AbstractList<CorbaMessageContainer> MANVChildLost(raw: String)
getCommand: String toString: String isImportant: boolean
getUniqueId: int getRaw: String createCorbaMessages: AbstractList<CorbaMessageContainer>
setResult(result: MANVResult)
getResult: MANVResult
MANVResult MANVDataReceived
status: boolean source: iZigBit
subResult: MANVResult data: String
MANVResult(raw: String, subResult: MANVResult) MANVDataReceived(raw: String)
getData: String isImportant: boolean
isResult: boolean parseRaw(raw: String)
isImportant: boolean
isComposite: boolean
getChildList(commandQueue: BlockingQueue<MANVCommand>): AbstractList<CorbaMessageContainer>
getSubResult(result: MANVResult, toString: String): MANVResult
Wie aus Abbildung 5.14 zu entnehmen ist, wird zwischen folgenden Ergebnissen und
Ereignissen unterschieden:
72
5.5. MANVConnector
• MANVChildrenList: Enthält eine Liste mit Kindknoten als Ergebnis auf den
Befehl AT+WCHILDREN.
Eine genauere Beschreibung der Attribute und Methoden dieser Klassen erfolgt in
Abschnitt A.1.3.3.
73
5. Entwurf
SocketReader
eventQueue: BlockingQueue<MANVEvent>
lastResult: MANVResult
result
resultSemaphore: Semaphore
serialIn: BufferReader
SocketReader(serialIn: BufferedReader, eventQueue: BlockingQueue<MANVEvent>)
setLastResult(MANVResult: result)
getLastResult(MANVResult: result)
run: void
eventQueue
<<Interface>>
iZigBit
getNodeID: int
getMacID: int
sendData(data: String): MANVResult
isendData(data: String)
toggleAlertStatus: MANVResult
disableAlert: MANVResult
enableAlert: MANVResult
muteAlert: MANVResult
itoggleAlertStatus: void
idisableAlert: void
ienableAlert: void
imuteAlert: void
readonlyZigBit
id: int
readOnlyZigBit(nodeID: int)
<<interface>> getNodeID: int
Comparable getMacID: int
compareTo(o: object): int sendData(data: String): MANVResult
toggleAlertStatus: void
enableAlertStatus: void
disableAlert: void
muteAlert: void
MANVPrioritized
priority: int
compareTo(o: MANVPrioritized): int
compareTo(o: object): int
MANVCommand MANVEvent
command: String raw: String
result: MANVResult MANVEvent(raw: String)
id: int isResult: boolean corbaMessages
maxId: static int isImportant: boolean
resultLatch: CountDownLatch fromString(raw: String): MANVEvent
MANVCommand(command: String, priority: int) createCorbaMessages: AbstractList<CorbaMessageContainer>
getCommand: String toString: String
getUniqueId: int getRaw: String
setResult(result: MANVResult)
getResult: MANVResult
result
MANVResult
status: boolean
subResult: MANVResult
MANVResult(raw: String, subResult: MANVResult)
getData: String
isResult: boolean
isImportant: boolean
isComposite: boolean
getChildList(commandQueue: BlockingQueue<MANVCommand>): AbstractList<CorbaMessageContainer>
getSubResult(result: MANVResult, toString: String): MANVResult
MANVChildrenList MANVGsn
MANVChildrenList(raw: String) myRaw: String
isComposite: boolean MANVGsn(raw: String)
getChildList(commandQueue: BlockingQueue<MANVCommand> isCcomposite: boolean
addSubResult(result: MANVResult) getData: String
addSubResult(result: MANVResult)
74
5.5. MANVConnector
Thread
run: void
SocketWriter CorbaSender
commandQueue: BlockingQueue<MANVCommand> eventQueue: BlockingQueue<MANVEvent>
resultQueue: BlockingQueue<MANVCommand> serverIncoming: Incoming
serialOut: PrintWriter CorbaSender(eventQueue: BlockingQueue<MANVEvent>, serverIncoming: Incoming)
reader: SocketReader run: void
lastResult: MANVResult
SocketWriter(serialOut: PrintWriter, commandQueue: <MANVCommand>, reader: SocketReader)
writeLine(line: String)
run: void
commandQueue
eventQueue
result
eventQueue
MANVConnector CommandsImpl
commandQueue
commandQueue: BlockingQueue<MANVCommand> disableAlert(node: CORBA_Node)
eventQueue: BlockingQueue<MANVEvent> enableAlert(node: CORBA_Node)
resultQueue: BlockingQueue<MANVCommand> toggleAlert(node: CORBA_Node)
commandsImpl
corbaSender: CorbaSender mute(node: CORBA_Node)
commandsImpl: CommandsImpl
main(args: String[]): void
ZigBit
zigBitMap: HashMap<Integer, ZigBit>
macMap: HashMap<Integer, Integer>
ZigBit(nodeID : int)
getNodeID: int
getMacID: int
setCommandQueue(commandQueue: BlockingQueue<MANVCommand>)
get(id: int): iZigBit
getByMacID(macID: int): iZigBit
discover: iZigBit
sendData(data: String): MANVResult
sendUntilSuccess(data: String): MANVResult
toggleAlertStatus: MANVResult
enableAlertStatus: MANVResult
disableAlert: MANVResult
mutAlert: MANVResult
requestMacID: int
source source
CorbaMessageContainer
send(serverIncoming: Incoming)
75
Thread
run: void
SocketReader SocketWriter CorbaSender
eventQueue: BlockingQueue<MANVEvent> commandQueue: BlockingQueue<MANVCommand> eventQueue: BlockingQueue<MANVEvent>
lastResult: MANVResult resultQueue: BlockingQueue<MANVCommand> serverIncoming: Incoming
resultSemaphore: Semaphore serialOut: PrintWriter CorbaSender(eventQueue: BlockingQueue<MANVEvent>, serverIncoming: Incoming)
serialIn: BufferReader reader: SocketReader run: void
SocketReader(serialIn: BufferedReader, eventQueue: BlockingQueue<MANVEvent>) lastResult: MANVResult
setLastResult(MANVResult: result) SocketWriter(serialOut: PrintWriter, commandQueue: <MANVCommand>, reader: SocketReader)
getLastResult(MANVResult: result) writeLine(line: String)
run: void run: void
commandQueue
eventQueue
eventQueue BlockingQueue<MANVEvent> BlockingQueue<MANVCommand>
eventQueue
CorbaMessageContainer
MANVConnector CORBA_Node
send(serverIncoming: Incoming) commandQueue
commandQueue: BlockingQueue<MANVCommand>
eventQueue: BlockingQueue<MANVEvent>
resultQueue: BlockingQueue<MANVCommand>
commandsImpl
corbaSender: CorbaSender
commandsImpl: CommandsImpl
main(args: String[]): void CommandsImpl
disableAlert(node: CORBA_Node)
enableAlert(node: CORBA_Node)
toggleAlert(node: CORBA_Node)
CorbaDataMessageContainer CorbaEventMessageContainer mute(node: CORBA_Node)
message: CORBA_DataMessage message: CORBA_EventMessage
CorbaDataMessageContainer(message: CORBA_DataMessage) send(serverIncoming: Incoming)
send(serverIncoming: Incoming) toString: String)
toString: String
Abbildung 5.17.: Klassendiagramm der Threads des MANVConnectors
5. Entwurf
76
6. Praktische Realisierung des
Sensornetzes
In diesem Kapitel wird die Implementierung des Sensornetzes, dabei auftretende Pro-
bleme sowie deren Lösungen, beschreiben.
6.1. Hardware
Nachfolgend wird die praktische Umsetzung der zwei verschiedenen Hardwarekom-
ponenten, also des MANV-USB-Sticks (Abbildung 6.1) und der MANVNode (Abbil-
dung 6.2) beschrieben. In beiden Fällen musste hierzu ein ZigBit-Modul mit einer
anderen Hardwarekomponente verbunden werden. Dies kann grundsätzlich entweder
über SPI oder UART erfolgen. Bei SPI handelt es sich um einen seriellen Bus, der
besonders im Bereich der Mikrocontroller verbreitet ist, und zur Anbindung von wei-
terer Peripherie dient. UART war hingegen vor allem als serielle Schnittstellen an
PCs verbreitet, und wurde hauptsächlich für die Anbindung von Modems verwendet.
Heutzutage wurde diese Schnittstelle weitestgehend von USB verdrängt. Beim Einsatz
der SerialNet-Firmware scheidet die Anbindung über SPI jedoch aus, da dies von der
Firmware nicht unterstützt wird.
einen USB-Bus angebunden werden kann. Auf Seiten des Betriebssystems präsentiert
sich der IC wie ein serieller Port und kann softwareseitig wie ein solcher angespro-
chen werden. Die Firma Embedded Projects bietet mit der USB-UART-Bridge eine
fertige Lösung an, auf der ein entsprechender IC, ein Spannungsregler für 3.3 V-
Versorgungsspannung sowie ein USB-Anschluss bereits integriert sind. Das ZigBit-
Modul wird nun auf die in Abbildung 5.10 dargestellte Platine aufgelötet. Diese Pla-
tine kann nun selbst mit Hilfe einer Stiftleiste huckepack auf die USB-UART-Bridge
aufgelötet werden, um die nötige Formstabilität zu erhalten.
6.2. Firmware
Die Firmware des Erste-Hilfe-Sensors wurde um einen Treiber für das ZigBit-Modul
ergänzt. Die Firmware wurde in der Programmiersprache C geschrieben, und setzt
direkt auf die Hardware des ADuC auf. Es wurde lediglich die von Rowley Cross-
works angebotene Standardbibliothek verwendet, die einige praktische Funktionen wie
Stringmanipulation, einen Interrupthandler und einen fertigen Startup-Code bietet.
Die Entwicklung von Software für einen Microcontroller zeichnet sich durch die Ab-
wesenheit eines Betriebssystems aus. Ein Großteil der Funktionalität, die man von
der Entwicklung von Software für einen gewöhnlichen Mikrocomputer gewohnt ist, ist
78
6.2. Firmware
79
6. Praktische Realisierung des Sensornetzes
80
6.2. Firmware
Timer1 : Dieser Interrupt führt einige periodische Aufgaben durch. Zunächst werden
die am Sensor vorhandenen Taster abgefragt (Alarm stumm schalten, Alarm manuell
auslösen etc.). Danach wird überprüft, in welchem Zustand der Sensor sich aktuell
befindet, also z.B. ob ein Alarm aufgetreten ist oder ob der Patient sich in einem
guten Zustand befindet. Abhängig hiervon werden nun LEDs und ein angeschlosse-
ner Piezo-Summer geschaltet, um den Zustand nach außen zu signalisieren. Zuletzt
wird noch überprüft, wann zuletzt eine Übertragung des Zustands des Sensors an die
MANVSuite erfolgt ist. Liegt dies länger als ein konfiguriertes Zeitintervall zurück,
so wird eine Übertragung des aktuellen Zustands veranlasst. Ein sinnvolle Länge für
dieses Zeitintervall ist ein Wert von 5-10 s.
Der ADuC verfügt über einen UART-Interrupt, welcher eine Statusänderung des
UARTs signalisiert. Im Register COMIEN0 wird konfiguriert, welche Zustände über
den Interrupt signalisiert werden sollen. Tritt nun einer dieser Zustände auf, so wird
der UART-Interrupt ausgelöst. In der ISR muss nun überprüft werden, welches Er-
eignis zum Auslösen des Interrupts geführt hat. Diese Information ist im Register
COMSTA0 gespeichert. Wichtig ist an dieser Stelle, dass auch mehrere Ereignisse
gleichzeitig auftreten können. Dies muss in der ISR berücksichtigt werden, da sonst
Ereignisse verloren gehen können.
Das eigentliche Senden und Empfangen erfolgt über die beiden Register COMRX und
COMTX. Zum Senden wird hierzu ein einzelnes Zeichen in COMTX gelegt. Nun muss
eine gewisse Zeit gewartet werden, bis das Zeichen gesendet wurde und das nächs-
te Zeichen in COMTX gelegt werden kann. Für das Empfangen wird das Register
COMRX in analoger Weise verwendet. Ob das nächste Zeichen empfangen bzw. ge-
sendet werden kann, kann mit Hilfe der Bits DR ( Data Ready“ - Daten liegen vor)
”
bzw. TEMT ( Transmit Buffer empty“ - Daten können gesendet werden) bestimmt
”
werden.
81
6. Praktische Realisierung des Sensornetzes
Zum Senden und Empfangen von Daten werden zwei Ringpuffer verwendet. Möchte ein
Unterprogramm Daten senden, so greift es nicht direkt auf die UART -Schnittstelle zu,
sondern legt diese Daten lediglich in den Sendepuffer. Das eigentliche Senden wird nun
vom UART-Interrupthandler durchgeführt; das Unterprogramm kann weiter arbeiten,
ohne auf das fertige Senden der Daten warten zu müssen.
Das Empfangen von Daten erfolgt analog. Jedesmal, wenn ein Zeichen von der se-
riellen Schnitstelle empfangen wurde, wird dieses in den Empfangspuffer gelegt. Das
Abarbeiten des Empfangspuffers erfolgt nun als Idle-Task : Immer dann, wenn der Mi-
krocontroller gerade keine anderen Aufgaben erfüllen muss, wird der Empfangspuffer
abgearbeitet und eventuell empfangene Befehle werden ausgeführt. Dies kann natürlich
jederzeit durch die Behandlung von Interrupts unterbrochen werden.
6.3. MANVConnector
Die folgenden Abschnitte beschreiben, wie der Zugriff vom MANVConnector auf den
MANV-USB-Stick konkret erfolgt. Der MANV-USB-Stick verhält sich hierbei dem
Betriebssystem gegenüber wie eine serielle Schnittstelle.
82
6.3. MANVConnector
8 class MA N V S e r i a l T o S o c k e t H a n d l e r ( SocketServer .\
9 BaseRequestHandler ):
83
6. Praktische Realisierung des Sensornetzes
64 if data :
65 self . serial . write ( data )
67 else :
68 # # EOF empfangen -> shutdown
69 end = True
84
6.3. MANVConnector
73 # # -> shutdown
74 else :
75 data = " "
76 end = True
98 # # Einstiegspunkt
99 if __name__ == ’ __main__ ’:
100 server = ReusableServer (( ’ localhost ’ , PORT ) ,
101 MANVSerialToSocketHandler )
102 server . serve_forever ()
Für die Überwachung von Socket und seriellem Port wird in diesem Programm der
Systemaufruf select() verwendet. Wird dieser aufgerufen, gibt das Programm so lange
den Prozessor für andere Programme frei, bis Daten empfangen wurden. Sobald dies
der Fall ist, kehrt der select()-Aufruf zurück und liefert eine Liste mit allen Quellen,
von denen Daten empfangen wurden. Diese können nun mit den entsprechenden Auf-
85
6. Praktische Realisierung des Sensornetzes
rufen von recv() (im Falle von Sockets) bzw. read() (für den seriellen Port) abgeholt
werden. Diese Lösung funktioniert jedoch in dieser Form nur unter UNIX. Unter Win-
dows steht der select()-Aufruf zwar zur Verfügung, jedoch ist es hier nicht möglich,
diesen zur Überwachung des seriellen Ports zu verwenden. Das obige Programm lässt
sich hier jedoch recht einfach durch die Verwendung von Threads anpassen, indem
für jede Richtung (also Seriell → Socket und Socket ← Seriell) jeweils ein eigener
Thread verwendet wird. Alternativ empfiehlt sich eine Implementierung mit Hilfe der
Programmiersprache C++.
86
6.3. MANVConnector
Wenn am USB-Bus kein entsprechendes Gerät gefunden wurde, kann bereits jetzt
die Suche abgebrochen werden. Wird jedoch ein passendes Gerät gefunden, müssen
zunächst alle passenden Device-Nodes 1 im /dev -Verzeichnis gefunden werden. Hierzu
bietet sich eine Suche im /sys-Dateisystem an. Hierfür sind keine externen Module not-
wendig, es können die normalen Dateisystem-Operationen des OS -Moduls verwendet
werden:
1 import os
2 def searchSYS ( self ):
7 for device in \
8 os . listdir ( ’/ sys / bus / usb - serial / devices ’ ):
9 # # Alle Geraete in Rueckgabe einfuegen
10 devices . append ( device )
12 return devices
1
Unter UNIX verhalten sich Hardwaregeräte grundsätzlich wie Dateien und finden sich daher im
Dateisystem unterhalb des Verzeichnisses /dev als virtuelle Datei wieder. Eine solche Datei wird
als Device-Node bezeichnet.
87
6. Praktische Realisierung des Sensornetzes
1 import serial
2 def testDevice ( self , deviceName ):
3 ret = []
2
Während der Entwicklung was es nicht ungewöhnlich, dass bis zu 3 Geräte angeschlossen waren: Bei
einem handelte es sich um den ZigBit-USB-Stick, zwei weitere dienten zum Flashen und Debuggen
der angeschlossenen Mikrocontroller.
88
6.3. MANVConnector
42 else :
43 # # Keine Antwort empfangen
44 return False
6.3.3. CORBA-Anbindung
Die CORBA-Anbindung des MANVConnectors an den MANVServer erfolgt über die
in [Tepe10] spezifizierten Interfaces. Diese müssen über den Java Classpath einge-
bunden werden. Dies geschieht über den Parameter -cp auf der Kommandozeile der
JVM bzw. des Java-Compilers. Der Connector schickt über die Server Incoming-
Schnittstelle eingehende Daten und Ereignisse an den MANVServer. Damit der MANV-
Server umgekehrt auch Befehle an den MANVConnector schicken kann, muss dieser
selbst die Connector Commands-Schnittstelle implementieren. Dies geschieht in der
Klasse CommandsImpl 3 .
Die Interfaces der einzelnen Komponenten sind in Abbildung 6.3 dargestellt.
3
Eine genaue Beschreibung der einzelnen Dateien, Klassen und Funktionalitäten findet sich in An-
hang A.
89
6. Praktische Realisierung des Sensornetzes
4
Wenn z.B. Nameserver, MANVServer und MANVConnector auf dem selben Rech-
ner laufen, so lautet der entsprechende Parameter: –ORBInitRef NameSer-
”
vice=corbaloc::localhost:1771/NameService“.
90
6.3. MANVConnector
stellen des Servers, also Server Incoming und Server Control. Zuletzt muss sich der
MANVConnector noch beim MANVServer registrieren, damit dieser weiß, an wen
er zu sendende Befehle zustellen muss. Hierzu wird die Methode registerConnector()
der Server Control -Schnittstelle verwendet. Nach diesem Schritt ist die Initialisierung
der CORBA-Anbindung abgeschlossen, und der CorbaSender -Thread, der eingehende
Ereignisse an den MANVServer sendet, kann gestartet werden.
91
7. Ergebnisse
In diesem Kapitel wird die entwickelte Lösung einer ausführlichen Evaluation unterzo-
gen. Die sich hierbei ergebenden Ergebnisse werden lediglich faktisch dargestellt, eine
Bewertung erfolgt an dieser Stelle nicht; diese wird in Kapitel 8 separat vorgenommen.
7.1. Realisierbarkeit
7.1.1. Integrierbarkeit in den Erste-Hilfe-Sensor
Die MANVNode dient – neben ihrer Funktion als Test- und Entwicklungsplatine für
die Firmware zur Ansteuerung der ZigBit-Module – als Nachweis der Integrierbarkeit
der in dieser Arbeit vorgestellten Lösung in den Erste-Hilfe-Sensor. Hierzu wurde beim
Entwurf darauf geachtet, dass neben dem ZigBit-Modul keine weiteren Hardwarebau-
teile notwendig sind, die nicht auf der Platine des Erste-Hilfe-Sensors vorhanden sind.
Darüber hinaus wurde die selbe Mikrocontroller-Architektur verwendet, die auch im
Erste-Hilfe-Sensor zum Einsatz kommt, so dass die entsprechenden Teile der Firmware
1:1 übernommen werden können.
Crosscable
Notebook 1 Notebook 2
ZigBee
ZigBee-USB-Stick ZigBee-Router 1
ZigB
ee
ZigBee-Router 2
Bee
Zig
Zig
Bee
ZigBee-Router 5 ZigBee-Router 3
ZigBee ZigB ee
ee ZigB
MANVNode 1 Zig
ZigBee-Router 4 Be
e
ZigBee
ee
gB
MANVNode 5
Zi
MANVNode 4
MANVNode 2 MANVNode 3
7.1.2.1. Durchführung
In einem ersten Test wurde eine MANVNode über den MANV-USB-Stick an den
MANV-Connector angeschlossen und die MANVSuite ausgeführt. Nun wurde gezeigt,
dass sowohl die Übertragung von der MANVNode zur MANVSuite als auch umgekehrt
die Übertragung von Befehlen von der MANVSuite zu der MANVNode funktionieren.
In einem zweiten Test wurde nun obiges Setup durch das Hinzufügen von 4 weiteren
MANVNodes erweitert. Hierzu wurden auch wieder Daten in beide Richtungen über-
tragen. Hierbei wurde insbesondere darauf geachtet, dass sich die einzelnen MANV-
Nodes nicht untereinander stören, sowie dass alle Daten in der MANVSuite korrekt
zugeordnet und dargestellt wurden.
Obiges Setup wurde nun um 5 ZigBee-Router erweitert und alle Tests wurden erneut
durchgeführt.
Im letzten Schritt wurde nun noch die Skalierbarkeit des Systems überprüft. Hierzu
94
7.1. Realisierbarkeit
wurde mit Hilfe zweier Notebooks sowie dem Einsatz von Hardwarevirtualisierung jede
Softwarekomponente auf eine eigene Virtuelle Maschine installiert. Diese wurden nun
abwechselnd über beide Notebooks verteilt, so dass jede Kommunikation zwangsläu-
fig über das Netzwerk stattfinden musste. Nun wurden alle obigen Tests noch einmal
wiederholt. Der genaue Aufbau dieses Versuchs kann dem Diagramm in Abbildung 7.1
entnommen werden.
7.1.2.2. Ergebnisse
Alle Tests konnten erfolgreich durchgeführt werden. Die Interoperabilität aller Kom-
ponenten sowie die Verteilbarkeit über verschiedene Rechner konnte gezeigt werden.
95
7. Ergebnisse
über die zum einen Ereignisse von Hand ausgelöst, zum anderen empfangene Befehle in
einem Fenster dargestellt werden können. Die Übertragung von Daten wurde in beide
Richtungen erfolgreich getestet, die Austauschbarkeit des MANVConnectors damit
erfolgreich demonstriert.
7.1.4.1. Durchführung
Zum Nachweis der Anbindbarkeit von externer Software über die Corba-Schnittstelle
wurde entschieden, eine Schnittstelle zu einem Webinterface zu implementieren. Das
Webinterface selbst ist eine einfache HTML-Seite, die über Javascript eine graphische
96
7.2. Leistungsaufnahme des ZigBit-Moduls
7.1.4.2. Ergebnisse
Die Anbindung des Webinterfaces an die MANVSuite konnte erfolgreich gezeigt wer-
den. Die Ergebnisse lassen sich ohne weiteres auf andere Schnittstellenformate übertra-
gen. Über die Anbindung des Symbian basierten Mobiltelefons konnte darüber hinaus
gezeigt werden, dass eine solche Anbindung sogar über Plattform- und Programmier-
sprachengrenzen hinweg realisiert werden kann.
97
7. Ergebnisse
des Oszilloskops auszuschliessen. Es wurde ein Widerstand mit einem Wert von 20, 1 Ω
verwendet.
Als Normalbetrieb wurde der Zustand angenommen, in dem das ZigBit-Modul ei-
nem ZigBee-Netzwerk beigetreten ist und der Energiesparmodus nicht zur Anwendung
kommt. Bei der Messung wurde schnell klar, dass sich hierbei die Funktionsweise von
eines FFD (also Router und Connector ) drastisch von der eines RFDs (also eines
Clients) unterscheiden. Ein FFD befindet sich immer im Empfangsmodus, d.h. es hat
immer eine maximale Leistungsaufnahme. Die entsprechende Messung ist in Abbil-
dung 7.4 zu erkennen. Hier wurde ein Spannungsabfall von 473 mV gemessen, was bei
dem verwendeten Messwiderstand einem Strom von 23,5 mA oder einer Leistungsauf-
nahme ca. 70 mW entspricht.
Komplett anders ist hingegen das Verhalten eines Clients. Betrachtet man die ent-
sprechende Messung in Abbildung 7.5, ist eine Basislinie von 215 mV mit periodischen
Peaks erkennbar. In Abbildung 7.7 ist eine Detailmessung eines solchen Peaks zu se-
hen. Gut zu erkennen ist zum einen der Betrag des Spannungsabfalls von rund 473 mV
98
7.2. Leistungsaufnahme des ZigBit-Moduls
0
t
215mV
1s
470mV
40ms
sowie einer Dauer von genau 40 ms. Zwischen den Peaks kehrt der Spannungabfall für
genau eine Sekunde auf den Wert der Basislinie, also 215 mV zurück, auf die wieder
ein Peak folgt. Der Wert von 473 mV legt die Vermutung nahe, dass es sich bei den
Peaks um einen periodischen Empfangsvorgang handelt, d.h. das das ZigBit-Modul
jede Sekunde für genau 40 ms empfangsbereit ist. Diese Vermutung konnte durch wei-
99
7. Ergebnisse
tere Tests bestätigt werden. Zur Bestimmung des Strombedarfs eines Clients ergibt
sich daher folgende Rechnung:
100
7.2. Leistungsaufnahme des ZigBit-Moduls
tBasislinie = 1000 ms, tP eak = 40 ms, UBasislinie = 215 mV, UP eak = 473 mV
RShunt = 20, 1 Ω
ein Wert von 11,19 mA für IClient ergibt. Dies entspricht bei einer Versorgungsspannung
von 3,0 V einer Leistungsaufnahme von ca. 33,6 mW.
101
7. Ergebnisse
Aufwachen aus
Energiesparmodus
0 t
215mV
1s
470mV
40ms
Abbildung 7.9.: Analyse des Spannungsverlaufs eines Clients bei Nutzung des Energiesparmodus.
Abbildung 7.10.: Client, der das periodische Aufrufen des Energiesparmodus nutzt.
102
7.2. Leistungsaufnahme des ZigBit-Moduls
sinkt der Strombedarf während des Energiesparmodus auf praktisch 01 . Sobald das
Modul aus dem Energiesparmodus in den Normalbetrieb zurückkehrt, wird sofort ein
Empfangsvorgang gestartet. Bis zum nächsten Aufrufen des Energiesparmodus verhält
sich das Modul wie in Abschnitt 7.2.1 beschrieben. Der Energiesparmodus kann entwe-
der manuell2 oder in einem einstellbaren Intervall periodisch aufgerufen werden. Der
Spannungsabfall während des periodischen Aufrufens ist in Abbildung 7.10 zu sehen.
Bei der Betriebsart des periodischen Aufrufens wird über zwei Parameter, tsleep und
tawake , die Dauer der Schlaf- bzw. Wachphase angegeben. Der Parameter tawake darf
hierbei die Dauer einer Empfangsphase, also 40 ms, nicht unterschreiten. Für tsleep gilt
eine Mindestdauer von 100 ms.
Interessant ist nun die Bestimmung des durchschnittlichen Strombedarfs bei Verwen-
dung des Energiesparmodus in Abhängigkeit von den Parametern tawake und tsleep . In
erster Näherung kann für den Strombedarf im Wachzustand Gleichung 7.2 verwendet
werden3 . Insgesamt ergibt sich der Strombedarf zu:
IClient · tawake
IP owersave = (7.3)
tawake + tsleep
In Tabelle 7.1 ist der Strombedarf für einige exemplarische Werte von tsleep und tawake
aufgeführt.
7.2.3. Sonderfälle
So lange ein Client keinem Netzwerk beigetreten ist befindet er sich dauerhaft im Emp-
fangsmodus. Das selbe Verhalten liegt vor, wenn eine bestehende Netzwerkverbindung
verloren gegangen ist. Wie in Abbildung 7.13 zu sehen ist, steigt der Strombedarf in
diesem Fall dauerhaft auf 23,4 mA an. Dazu kommt, dass keine Nutzung des Energie-
sparmodus möglich ist, so lange keine Verbindung zu einem Netzwerk besteht. Dies
kann eine Steigerung des durchschnittlichen Strombedarfs um mehr als den Faktor
1
Im Datenblatt ist ein Strombedarf von weniger als 6 µA angegeben.
2
z.B. mit dem Befehl AT+WSLEEP bei Verwendung der Serialnet-Firmware.
3
Dies ist eigentlich nicht ganz korrekt. Zur genauen Bestimmung des Strombedarfs müssten die
einzelnen Intervalle eigentlich einzeln betrachtet werden. Allerdings ist der sich hieraus ergebende
Fehler so gering, dass er in der Praxis zu vernachlässigen ist.
103
7. Ergebnisse
Tabelle 7.1.: Berechnung von IP owersave für exemplarische Werte von tsleep und tawake .
7.2.4. Batterielaufzeit
In Abschnitt 4.5 wurde bereits eine grobe Überschlagsrechnung der Batterielaufzeit
Anhand der Werte aus dem Datenblatt vorgenommen. Diese sollen nun mit den oben
104
7.2. Leistungsaufnahme des ZigBit-Moduls
Abbildung 7.13.: Client, der die Verbindung zum Netzwerk verloren hat.
105
7. Ergebnisse
quelle soll eine Knopfzelle vom Typ CR2032 mit einer Kapazität von 240 mAh dienen4 .
Unter idealen Bedingungen ergibt sich für den Erste-Hilfe-Sensor alleine eine Laufzeit
von 14,3 Stunden.
Ohne Verwendung des Energiesparmodus wurde für den Strombedarf des ZigBit-
Moduls ein mittlerer Strombedarf von 11,2 mA. In Verbindung mit dem Erste-Hilfe-
Sensor ergibt sich ein Gesamtstrombedarf von 28 mA, was einer Laufzeit von 8,5
Stunden entspricht.
Für den Energiesparmoduses in einer 5:1-Konfiguration ergibt sich laut Tabelle 7.1
eine Absenkung des Strombedarfs des ZigBit-Moduls auf 1,86 mA, woraus sich in Ver-
bindung mit dem Erste-Hilfe-Sensor ein Gesamtbedarf von rund 18.7 mA ergibt. Dies
entspricht einer Laufzeit von ca. 12,8 Stunden.
7.3. Reichweite
Zur Bestimmung der Reichweite wurden sowohl innerhalb von Gebäuden als auch im
Freien Messungen durchgeführt. Es wurde schnell klar, dass die Ergebnisse sehr stark
von den Gegebenheiten der Umgebung sowie der Höhe von Sender und Empfänger ab-
hängig sind. Die größte Reichweite ist bei direkter Sichtverbindung sowie einer Höhe
von mindestens 1 m über dem Boden für Sender und Empfänger zu erreichen. Unter-
halb des Senders sollten sich möglichst keine Metalle befinden, als besonders schlecht
hat sich die Positionierung des Senders auf dem Dach eines PKW erwiesen.
106
7.4. Maximale Teilnehmerzahl des Netzwerke
wurden. Nun wurde der Abstand wieder so lange verringert, bis wieder 100% der ge-
sendeten Pakete empfangen wurde. Außerdem wurde als Gegenprobe ein Befehl an die
MANVNode gesendet und die Antwort empfangen. Als maximale Reichweite wurde
nun die Entfernung gewertet, bei der gerade noch alle Pakete empfangen, sowie alle
Befehle erfolgreich gesendet werden konnten. Die Entfernung zwischen Notebook und
MANVNode wurden nun mittels GPS vermessen. Als maximale Reichweite ergab sich
hierbei eine Entfernung von etwas über 50 m.
Im nächsten Schritt wurde an die Position des Notebooks ein ZigBee-Router aufgestellt
und die Entfernung zu diesem so lange vergrößert, bis gerade noch alle Pakete empfan-
gen werden konnten. Insgesamt konnte durch die Verwendung von zwei Routern eine
Gesamtreichweite von ca. 180 m erreicht werden, so dass von einer durchschnittlichen
Reichweitenverlängerung von 50-70 m pro Router ausgegangen werden kann.
Deutliche Einschränkungen bei der Reichweite traten auf, sobald sich Hindernisse wie
Container, Häuser oder PKW in der Sichtverbindung zwischen Sender und Empfänger
befanden. Diese ließen sich jedoch durch geschicktes Positionieren der Router sehr gut
umgehen, so dass auch hier hohe Reichweiten erzielbar waren.
107
7. Ergebnisse
DatenrateN etzwerk
AnzahlT eilnehmer = (7.4)
DatenrateT eilnehmer
In dem Szenario überträgt jeder Teilnehmer alle 5 Sekunden ein Datenpaket, das den
aktuellen Zustand beinhaltet. Laut [Alli07] hat ein ZigBee-Datenpaket eine maximale
Größe von 128 Byte. Damit ergibt sich für die benötigte Datenrate eines Teilnehmers:
250 kBit/s
AnzahlT eilnehmer = = 1250 (7.6)
0, 2 kBit/s
Unter Worst-Case-Bedingungen ergibt sich also eine maximale Anzahl von 1250 Teil-
nehmern.
108
8. Diskussion
Darüber hinaus wurde gezeigt, dass eine Verbindung des verwendeten ZigBee-Modul
mit dem ADuC -Mikrocontroller möglich ist, und dass das so entstehende Gesamtsys-
tem in der Lage ist, die zu überwachenden Vitaldaten zuverlässig an die Basistati-
on zu übermitteln. Es wurde ebenfalls gezeigt, dass es möglich ist, Befehle über das
ZigBee-Netzwerk an den Mikrocontroller zu senden. Da der für diese Tests eingesetz-
te ADuC-7026 -Mikrocontroller der selben Familie wie der in dem Erste-Hilfe-Sensor
verwendete Mikrocontroller angehört, können diese Ergebnisse ohne weiteres auf die
Hardware des Erste-Hilfe-Sensors übertragen werden; die Integrierbarkeit in diesen
konnte somit gezeigt werden.
Die durch die Integration des ZigBit-Moduls in den Erste-Hilfe-Senosr erhöhte Leis-
tungsaufnahme, insbesondere bei Lastspitzen (Peaks), muss beachtet werden. Even-
tuell muss hier eine Anpassung der Stromversorgung des Erste-Hilfe-Sensors erfolgen.
Die genaue Analyse auftretender Lastspitzen findet sich in Abschnitt 7.2.1. Insbe-
sondere sollten hierbei auch die Ergebnisse in Abschnitt 7.2.3 beachtet werden, die
auftretende Sonderfälle beschreiben.
Softwareseitig konnte gezeigt werden, dass eine vollständige Kapselung aller hard-
8. Diskussion
Durch die in Abschnitt 7.1.4 durchgeführte schnelle Umsetzung eines Adapters zur An-
bindung der MANVSuite an eine Weboberfläche konnte gezeigt werden, dass durch die
hohe Modularität und Einsatz der Komponententechnologie Corba ein hohes Maß an
Flexibilität und Adaptierbarkeit der Gesamtlösung erreicht wird und eine Anbindung
an bestehende Systeme mit geringem Aufwand realisiert werden kann. Eine genauere
Analyse und Evaluation der MANVSuite inkl. der beschriebenen Schnittstellen findet
sich in [Tepe10]. In dieser verwandten Arbeit wird unter anderem gezeigt, wie eine
Anbindung der MANVSuite an ein Mobiltelefon des Herstellers Nokia erfolgen kann.
Als besonders positiv ist die Skalierbarkeit der Gesamtlösung zu bewerten: Zwar muss-
te aus Kostengründen der praktische Skalierbarkeitstest auf 12 Module beschränkt
werden. Durch eine analytische Betrachtung konnte jedoch gezeigt werden, dass das
ZigBee-Netzwerk zumindest theoretisch in der Lage ist, mindestens 1250 Sensoren zu
unterstützen, was selbst für ein sehr großes MANV -Szenario ausreichen würde. Ent-
sprechende praktische Tests müssen vor dem Praxiseinsatz natürlich nachgeholt wer-
den. Auch auf Softwareseite sind keine Lastprobleme zu erwarten, da die die Verbin-
dung der Softwarekomponenten untereinander netzwerkfähig ist; im Extremfall kann
jede Komponente auf einem eigenen Rechner betrieben werden. Hierbei skaliert die
Anforderung an die Hardware mit der Größe des zu verwaltenden Netzwerkes. Im
Prinzip ist jedes linuxfähige Gerät mit mindestens 16 MB Speicher und einer USB-
Schnittstelle, für die eine Implementierung der Java Virtual Machine 1 verfügbar ist,
in der Lage, als Server für das Sensornetzwerk zu dienen. Dies kann z.B. ein Android
basiertes Handy oder ein offener DSL-Router in Verbindung mit dem Betriebssystem
OpenWRT sein. Sollte keine JVM für die Plattform verfügbar sein, besteht sogar
die Möglichkeit, dass nur der in Python geschriebene, hardwarespezifische Teil des
1
Hierbei muss es sich nicht zwangsläufig um die Implementierung von Oracle/Sun handeln. Die
MANVSuite kann z.B. auch mit der JVM des Eclipse-Projektes ausgeführt werden.
110
MANVConnectors auf dem Gerät selbst ausgeführt wird2 . Alle restlichen Teile der
MANVSuite können nachgelagert auf einem Server im Internet ausgeführt werden; die
Verbindung der beiden Teile erfolgt über eine einfache Socketverbindung. Diese Lösung
bietet sich insbesondere für die Überwachung einzelner Patienten als eine Art intelli-
genter Hausnotruf an. Eine nähere Betrachtung dieser Anwendung erfolgt in [NoJa11].
Vom bisherigen Stand der Technik hebt sich die hier vorgestellte Lösung in vielen
Punkten ab:
111
8. Diskussion
nahme des Erste-Hilfe-Sensors um ca. 10%. Laut der Analyse in Abschnitt 7.2.4
ist selbst mit einer einfachen Knopfzelle eine Laufzeit von über 12 Stunden zu
erreichen, was für einen MANV -Einsatz mehr als ausreichend ist.
• Anzahl Teilnehmer: Laut der Betrachtung in Abschnitt 7.4 wird eine ausreichend
große Anzahl von Teilnehmern zu unterstützen. Dies reicht selbst für sehr große
MANV -Szenarien gut aus.
In dieser Arbeit nicht betrachtet wurde das Thema Datensicherheit und Verschlüs-
selung, welches alleine bereits umfangreich genug wäre, eine eigene Diplomarbeit zu
rechtfertigen. Ursprünglich war geplant, die hardwareseitige Verschlüsselung der Zig-
Bit-Module einzusetzen. Leider ist diese Funktion jedoch nicht in die SerialNet-Firmware
integriert und es standen auch keine fertig nutzbaren SerialNet-Alternativen zur Ver-
fügung. Daher wäre für die Verwendung der Verschlüsselung eine Neuimplementierung
der ZigBit-Firmware notwendig, was den Rahmen dieser Arbeit sprengen würde. Da-
her beschränkt sich diese Arbeit darauf, in Abschnitt 9.2 eine Analyse des Problems
3
UART RTS sollte auf Seite des ZigBit-Moduls auf GND geführt werden.
4
General Purpose Input/Output: Generische Ein/Ausgabe-Leitung
5
Die Virtualisierung dient dazu, die eingesetzte Software auf einer möglichst großen Palette von
Systemen ausführbar zu machen. Sie soll aber auch den Installationsaufwand für die Software
verringern, der insbesonders durch den eingesetzten Datenbankservern relativ hoch ist. Für den
späteren produktiven Einsatz wäre zu überlegen, diesen Datenbankserver direkt als Bibliothek in
die Software einzubetten. Eine genauere Diskussion dieses Themas findet sich in [Tepe10].
112
und Vorschläge zur Lösung vorzustellen. Diese können dann bei einer späteren Um-
setzung in ein Produkt als Grundlage dienen, die notwendigen Sicherheitsmaßnahmen
zu implementieren.
113
9. Zusammenfassung und Ausblick
9.1. Zusammenfassung
In dieser Arbeit wurde ein kabelloses Sensornetzwerk zur Überwachung von Patien-
ten bei einem Massenanfall von Verletzten (MANV ) entworfen und implementiert. Es
wurden mehrere kabellose Sensornetzprotokolle vorgestellt und es fand eine Tauglich-
keitsprüfung dieser statt. Bereits in diesem Schritt wurde die Entscheidung getroffen,
eine Lösung auf Basis des ZigBee-Protokolles zu implementieren. Hierfür sprachen der
geringste Strombedarf aller verfügbaren Lösungen, die hohe Störsicherheit sowie die
gute Verfügbarkeit passender Hardware auf dem Markt. Es wurde weiterhin festge-
stellt, dass sich die Marktsituation in den kommenden Jahren auf Grund der Einfüh-
rung neuer Standards wie ANT+, Bluetooth Low Energy sowie Wireless USB ändern
könnte, so dass beim späteren Entwurf insbesondere auf die Austauschbarkeit des
Netzwerkprotokolles zu achten ist. Im Anschluss daran wurden verschiedene aktuell
auf dem Markt erhältliche Lösungen zur kabellosen Patientenüberwachung betrach-
tet und mit den Erkenntnissen aus der Analyse der verschiedenen Netzwerkprotokolle
auf ihre Eignung untersucht. Hierbei wurde festgestellt, dass alle betrachteten Lösun-
gen eher für den Einsatz im Krankenhaus gedacht und für den Einsatz während eines
MANVs nicht geeignet sind. Weiterhin wurden verwandte Projekte vorgestellt, die sich
ebenfalls mit der technischen Patientenversorgung während eines MANVs beschäfti-
gen und die Ähnlichkeiten und Unterschiede gezeigt.
Mit den aus der Betrachtung der Stand der Technik gewonnenen Erkenntnissen konnte
9. Zusammenfassung und Ausblick
nun zur Analyse übergegangen werden. Hier wurde zunächst eine Reihe von Anforde-
rungen erarbeitet, die die zu entwerfende Lösung erfüllen soll. Als besonders wichtig
sind hierbei eine hohe Teilnehmerzahl (mehrere hundert), ein geringer Strombedarf so-
wie eine ausreichend hohe Reichweite zu nennen. Außerdem wurde die für den späteren
Einsatz ausgewählte ZigBee-Hardware der Firma Atmel untersucht, und es wurde ei-
ne Reihe von Eigenheiten im Kommunikationsprotokoll zwischen ZigBee-Modul und
Mikrokontroller entdeckt, für die jeweils eine passende Lösung in allgemeiner Form
vorgestellt wurde. Außerdem wurden kurz die zwei verschiedenen Arten, den Ener-
giesparmodus der Module aufzurufen, erläutert, und der manuelle Aufruf als bessere
Lösung ausgewählt.
Nach der Analyse folgte der Entwurf eines Systems zur Lösung der gestellten Aufgabe.
Dieser erfolgte in 3 Schritten: Zunächst erfolgte der Entwurf des Gesamtsystems im
Groben. In Hinblick auf die in der Analyse gewünschte Austauschbarkeit des Funk-
protokolls wurde entschieden, wichtige Designentscheidungen zu kapseln und so das
System aus einzelnen, austauschbaren Komponenten aufzubauen. Im Groben erfolgte
eine Aufteilung in einer Kontrollsoftware (MANVSuite), einer Test- und Entwurfplati-
ne (MANVNode), dem MANV-USB-Stick, sowie der Schnittstelle zwischen Hard- und
Software (MANVConnector ).
Nach dem groben Entwurf folgt der Entwurf im Feinen. Hierbei wurden Hardware
(MANVNode und USB-Stick ) sowie Software (MANVConnector und Firmware der
MANVNode) getrennt betrachtet.
Auf Grundlage dieses Entwurfs wurde nun eine Implementierung durchgeführt. Bei
der Bestückung der Platine der MANVNode sind einige Probleme mit der Stromver-
sorgung aufgetreten, die jedoch durch eine Änderung des Platinenlayouts behoben
werden konnten. Außerdem waren praktische Probleme, wie die automatische Erken-
nung des MANV-USB-Sticks, sowie der Zugriff auf den seriellen Port mittels Java zu
lösen. In beiden Fällen konnte durch die Kapselung von betriebssystemspezifischem
Code in Python-Skripte Abhilfe geschaffen werden.
116
9.2. Sicherheit des Netzwerkes
Die Implementierung wurde einer Reihe von Tests unterzogen. Ziel hierbei war es,
festzustellen, wie gut die vorgestellte Lösung die in der Analyse aufgestellten Anfor-
derungen erfüllt. Neben Reichweite, Strombedarf und Erweiterbarkeit des Funknetz-
werks wurde hierzu auch die Leistungsfähigkeit der Software in Hinblick auf Anzahl der
Teilnehmer, Austauschbarkeit des MANVConnectors und Interoperabilität zwischen
MANVSuite, MANVConnector und Sensornetzwerk intensiv untersucht. Besondere
Augenmerk lag bei dieser Untersuchung auf der Interoperabilität aller Komponenten,
die durch Integrationgstests und Austausch einzelner Teile gezeigt werden konnte. Au-
ßerdem wurde die Strombedarf der ZigBee-Module sowie deren Reichweite eingehend
untersucht. Eine Betrachtung der Anzahl der Benutzer erfolgte analytisch anhand
des ZigBee-Standards. Durch diese Tests konnte gezeigt werden, dass die Lösung die
anfangs Erhobenen Anforderungen erfüllen kann. Lediglich bei der Datensicherheit
innerhalb des ZigBee-Netzwerkes müssen Einschränkungen hingenommen werden, da
die Firmware des Herstellers Atmel nicht den versprochenen Funktionsumfang bereit
stellt. Dies wird in Abschnitt 9.2 genauer untersucht. Hier werden auch mehrere Vor-
schläge gemacht, wie dieses Problem gelöst werden kann. Die Arbeit wird abgerundet
durch ein umfangreiches Softwarepaket inkl. Quellcode und Dokumentation, die die
zeitnahe Realisierung als Produkt ermöglichen.
117
9. Zusammenfassung und Ausblick
9.2.2. Angriffsszenarien
Zur Beurteilung der Gefahrenlage, sowie zur Entwicklung von Abwehrmaßnahmen
erfolgt zunächst eine Betrachtung von möglichen Angriffsszenarien.
Aktuell werden über das Netzwerk Vitaldaten von Patienten (Puls und Atmung)
pseudonym versendet. Als Pseudonym dient hierbei die Hardware-Adresse des ver-
sendenden ZigBee-Moduls. Passives Mitschneiden der Daten ist so lange kein Pro-
blem, so lange sich keine Zuordnung zwischen der Identität des Patienten und der
Hardware-Adresse des verwendeten Moduls herstellen lässt. Hierfür ist eine direkte
räumliche Nähe zwischen Patient und Angreifer notwendig. Während eines MANV -
Szenarios sollte dies jedoch aktiv durch die Rettungskräften, insbesondere durch die
Absperrung durch die Polizei vor Ort verhindert werden. Sollte es einem Angreifer ge-
lingen, nahe genug an das entsprechende Modul heranzukommen, um eine Zuordnung
vorzunehmen, ist sowieso davon auszugehen, dass er auch in der Lage wäre, Bild oder
Videoaufnahmen des Patienten herzustellen, was im Zweifelsfall eine deutlich größeren
Eingriff in die Privatsphäre darstellen würde.
Ein größeres Problem als vom passiven Belauschen des Datenverkehrs geht von akti-
ven Angriffen gegen das Netzwerk aus. Innerhalb eines unverschlüsselten Netzwerkes
kann ein Angreifer die Identität eines beliebigen ZigBee-Moduls übernehmen; er hat
somit die Möglichkeit, entweder falsche Vitaldaten oder aber Befehle an die einzel-
ne Sensoren zu versenden. Dies könnte im schlimmsten Falle bedeuten, dass Alarme
im Netzwerk verloren gehen, und somit Patienten zu Schaden kommen. Da selbst bei
aktivierter ZigBee-Verschlüsselung kein Schutz gegenüber Replay-Angriffen besteht,
hätte ein Angreifer weiterhin die Möglichkeit, eine aufgefangene Statusnachricht oder
einen aufgegangen Befehl beliebig oft wieder in das Netzwerk einzubringen und so eine
Störung zu erreichen.
118
9.2. Sicherheit des Netzwerkes
unverschlüsselten Netzwerkes kann dies einfach dadurch geschehen, dass der Angreifer
die Identität des Netzwerkkoordinators annimmt, und somit die Statusnachrichten
ins Leere geleitet werden. Eine andere Möglichkeit besteht darin, das Netzwerk mit
Paketen zu überfluten und so den Datenverkehr der anderen Teilnehmer zu blockieren.
Aber auch bei Einsatz von Verschlüsselung ist eine Störung des Netzwerkes möglich.
Hierzu muss ein Angreifer einfach mit sehr großer Sendeleistung auf allen ZigBee-
Frequenzen senden, um diese somit zu blockieren.
9.2.3. Abwehrmaßnahmen
Zur Abwehr der vorgestellten Angriffsszenarien kommen eine Reihe von Abwehrmaß-
nahmen in Betracht. Diese werden im folgenden kurz vorgestellt und auf Ihre Eignung
untersucht.
9.2.3.1. ZigBee-Verschlüsselung
9.2.3.2. Befehlszähler
119
9. Zusammenfassung und Ausblick
Alternativ zur Modifikation der ZigBit-Firmware besteht auch die Möglichkeit, auf An-
wendungsebene zu verschlüsseln. Sowohl für Java (OpenSSL) als auch für den ADuC-
Mikrocontroller (WAKAN-Crypto-Toolkit) sind entsprechende Bibliotheken verfügbar.
Eine Implementierung auf Applikationsebene hätte den Vorteil, dass keine Änderung
an der ZigBit-Firmware notwendig wären und sie daher ggf. einfacher durchzufüh-
ren ist. Von Nachteil ist jedoch, dass diese Lösung keinen Schutz gegen den Beitritt
fremder Teilnehmer in das Netzwerk bietet. Zwar können diese keine Befehle schicken
oder Daten ausspähen, allerdings ist es immer noch möglich, durch die Verwendung
von gefälschten Absenderadressen eine Denial-Of-Service-Angriff gegen das Netzwerk
durchzuführen.
120
9.3. Verbesserung der Reichweite und Störsicherheit
121
A. Beschreibung der beigelegten
Software
In diesem Kapitel wird die beigelegte Software beschrieben. Außerdem wird eine kurze
Erläuterung gegeben, welche Funktionalität wo implementiert ist, und an welcher Stelle
für den produktiven Einsatz ggf. noch Anpassungen erfolgen müssen.
A.1. MANV-Connector
Im Verzeichnis connector“ auf der beigelegten CD befinden sich Quellcode und Bina-
”
ries des MANV-Connectors. Zum Kompilieren und Starten des Connectors wird das
Script start.sh“ verwendet.
”
Verzeichnis Beschreibung
commands/ Befehle, die an den USB-Stick gesendet werden.
corba/ Implementierung der CORBA-Schnittstelle.
events/ Ereignisse, die von dem USB-Stick empfangen wurden.
results/ Antworten auf gesendete Befehle.
lib/ Klassen, die thematisch nicht in andere Pakete passen.
Tabelle A.1.: Struktur des Quellcodeverzeichnisses
Kompilieren sind die IDL-Dateien der MANV-Suite von Jan Tepelmann erforderlich,
die auf der CD im Verzeichnis jan“ mitgeliefert werden. Evtl. müssen hierfür die
”
Pfade im start.sh“-Skript angepasst werden.
”
In dem Verzeichniss corba/ findet sich der Quellcoode der Implementierung der Corba-
Schnittstelle zum MANV -Server. Die einzelnen Dateien haben folgende Funktion:
124
A.1. MANV-Connector
• isResult(): Gibt zurück, ob es sich bei dem Ereignis um das Ergebnis eines ge-
sendeten Befehls handelt.
• isImportant(): Unterscheidet wichtige von unwichtigen Ereignissen. Nur wichtige
Ereignisse werden über die CORBA-Schnittstelle an den MANV-Server weiter-
geleitet. Unwichtige Ereignisse sind nur für die interne Verarbeitung im MANV-
Connector relevant.
• fromString(): Factory1 -Methode, die aus einem SerialNet-String ein MANV-
Event erstellt. Liefer automatisch eine Instanz einer Unterklasse von MANV-
Event zurück.
• createCorbaMessages(): Bereitet ein MANVEvent für den Transport über die
CORBA-Schnittstelle zum MANV-Server vor. Hierzu werden ein oder mehrere
CorbaEvent-Objekte erstellt, die wiederum in einen passenden CorbaContainer
verpackt werden.
1
Eine Fectory-Methode übernimmt das Erstellen von Objekten.
125
A. Beschreibung der beigelegten Software
• getRaw(): Liefert den rohen SerialNet-String zurück, auf Basis dessen das MAN-
VEvent-Objekt erzeugt wurde; dies ist vor allem für Debugging-Zwecke inter-
essant.
In dem Verzeichnis results/ befinden sich alle Klassen, die auf gesendete SerialNet-
Befehle empfangene Antworten repräsentieren. Diese sind von der Basisklasse MAN-
VResult abgeleitet, welche wiederum eine Unterklasse von MANVEvent ist. Damit
besitzt diese Klasse alle Eigenschaften und Methoden, die auch die Klasse MANVE-
vent besitzt; insbesondere handelt es sich hierbei selbst wieder um eine Unterklasse von
MANVPrioritized. Zusätzlich zu den von den Oberklassen ererbten Methoden werden
folgende Methoden neu eingeführt:
126
A.1. MANV-Connector
• MANVChildrenList: Repräsentiert eine Liste von Kindknoten, die von der SerialNet-
Firmware empfangen wurde.
• MANVGsn: Liefert die Global Subscriber Number (GSN) einer Node zurück.
Entspricht in etwa einer MAC -Adresse.
In dem Verzeichnis lib/ finden sich alle die Klassen, welche nicht in obiges Einord-
nungsschema passen. Hierbei handelt es sich insbesondere um Helferklassen, die in
den obigen Klassen verwendet werden:
• SocketReader : Definiert einen Thread, der von dem Socket liest, der die Verbin-
dung zum MANV-USB-Stick beinhaltet. Dieser Thread empfängt Ereignisse und
Ergebnisse, wandelt sie in Instanzen vom Typ MANVEvent und MANVResult
um und sortiert in die Ereigniswarteschlange (eventQueue) ein. Empfangene Er-
gebnisse werden automatisch dem passenden Objekt vom Typ MANVCommand
zugeordnet.
• SocketWriter : Definiert einen Thread, der zu sendende Befehle aus der Befehls-
warteschlange (commandQueue) entnimmt und über die Socketverbindung zum
MANV-USB-Stick an das ZigBee-Netzwerk weiterleitet. Sobald ein Befehl abge-
arbeitet ist, wird er von dem SocketWriter -Thread automatisch in die Ergebnis-
warteschlange (resultQueue) einsortiert.
127
A. Beschreibung der beigelegten Software
• sendData(): Sendet Daten an einen Knoten. Blockiert so lange, bis die Bear-
beitung des Befehls abgeschlossen ist. Wird diese Operation auf einem Readon-
lyZigBit wird kein Versand der Daten ausgeführt und statt dessen ein Fehler
zurückgegeben.
• isendData(): Senden von Daten an einen Knoten. Kehrt sofort zurück, ohne auf
die Bearbeitung des Befehls zu warten.
A.2. Serial-To-Socket
In dem Verzeichnis serial to socket befinden sich eine Reihe von Python-Skripten, die
die Verbindung zwischen MANVConnector und MANV-USB-Stick herstellen. Hierzu
wird zunächst mit Hilfe des Skriptes serial to socket.py eine automatische Suche nach
dem MANV-USB-Sticks (vgl. Abschnitt 6.3.2) durchgeführt. Der Status dieser Suche
wird graphisch ausgegeben. Sobald ein MANV-USB-Stick erfolgreich erkannt wurde,
wird das Skript serial to socket/start.sh gestartet und die Adresse des seriellen Ports
als Parameter übergeben. In diesem Skript wird dann unter anderem das Pythonskript
serial to socket.py“ gestart. Dieses leitet einen angegebenen seriellen Port auf den
”
Netzwerkport 4711 um, über den dann der MANVConnector eine Verbindung zu dem
USB-Stick herstellen kann.
128
A.3. Firmware
A.3. Firmware
In dem Verzeichnis firmware/ befindet sich der Quellcode der Firmware für die MANV-
Node. Diese besteht aus folgenden Dateien:
• uart.c: Beinhaltet die Routinen, die zur Interaktion mit dem als ISR implemen-
tierten Treiber für den UART notwendig sind. Im wesentlichen handelt es sich
um Routinen, die die entsprechenden Ringpuffer befüllen oder auslesen.
• zigbit.c: Beispiel einer Interaktion mit dem ZigBit-Modul. Enthält unter ande-
rem Routinen zur Befehlsverareitung, Extraktion von Rückgabewerten, Initiali-
sierung des ZigBit-Moduls sowie ein Beispiel, wie die Übertragung von Status-
informationen realisiert werden kann.
Bei der Firmware handelt es sich um eine Demonstration, wie die Kommunikation zwi-
schen ADuC -Mikrocontroller und ZigBit-Modul realisiert werden kann. Zur späteren
Verwendung auf dem Erste-Hilfe-Sensor müssen einige Anpassungen vorgenommen
werden. Hierzu wird folgende Vorgehensweise vorgeschlagen:
129
A. Beschreibung der beigelegten Software
4. Anpassung der Funktion initZigBit() aus der Datei zigbit.c: Zu beachten ist
hierbei Zeile 154: Hier wird eine GPIO-Leitung des ADuC Mikrocontrollers da-
zu verwendet, die Resetleitung des ZigBit-Moduls zu betätigen. Dies ist für die
Synchronisierung zwingend erforderlich und muss im Hardwarelayout entspre-
chend berücksichtigt werden. Nach Zeile 154 sollten alle Zeilen mit Zugriff auf
GP2DAT entfernt werden, da diese dazu dienen, die LEDs der MANVNode an-
zusteuern. Diese LEDs sind auf dem Erste-Hilfe-Sensor nicht vorhanden. Die
Aufrufe von sleep() sind zur Synchronisierung zwingend erforderlich und dürfen
nicht entfernt werden.
5. Anpassung der Funktion zigBitLoop() aus der Datei zigbit.c Hier werden aktuell
noch Dummy-Informationen übertragen, die durch einen Zufallszahlengenerator
erzeugt werden. Diese müssen durch die tatsächlich gemessenen Werte des Erste-
Hilfe-Sensors ersetzt werden.
A.4. MANV-Web
Im Verzeichnis manvweb/ befinden sich die Quelldateien des Webinterfaces der MANV-
Suite. Dabei verteilt sich die Funktionalität auf folgende Unterdateien:
A.5. Platine
In dem Verzeichnis platine/ befinden sich die Eagle-Dateien, in denen Schaltplan und
Platinenlayout des MANV-USB-Sticks und der MANV-Node spezifiziert sind.
130
A.6. Simulator
A.6. Simulator
In dem Verzeichnis simulator/ befindet sich ein in Python programmierter MANVNo-
de-Simulator. Dieser kann dazu verwendet werden, mit Hilfe eines MANV-USB-Sticks,
MANVNodes zu simulieren. Beim Start des Simulators muss diesem die Adresse des
seriellen Ports, auf dem sich der USB-Stick befindet, übergeben werden. Das Format
ist Betriebssystem spezifisch. Unter Linux wird einfach der Dateiname der entspre-
chenden Device-Node (z.B. /dev/ttyUSB1 ) angegeben, unter Windows der Name des
COM-Ports (z.B. COM1:).
131
Literatur
[Alli07] ZigBee Alliance. Latest ZigBee specification including the pro feature
set. Technischer Bericht, ZigBee Alliance, 2007. http://www.zigbee.
org/Products/Overview.aspx.
[Atme09] Atmel. ZigBitTM 2.4 GHz Amplified Wireless Modules Datasheet, 2009.
www.atmel.com/dyn/resources/prod_documents/doc8228.pdf.
[Cheu05] Humphrey Cheung. How To: Building a BlueSniper Rifle, 2005. http://
www.tomsguide.com/us/how-to-bluesniper-pt1,review-408.html.
[GMSC+ 07] Tia Gao, Tammara Massey, Leo Selavo, David Crawford, Bor rong Chen,
Konrad Lorincz, Victor Shnayder, Logan Hauenstein, Foad Dabiri, Ja-
mes Jeng, Arjun Chanmugam, David White, Majid Sarrafzadeh und
Matt Welsh. The Advanced Health and Disaster Aid Network: A Light-
Weight Wireless Medical System for Triage. IEEE Transactions on Bio-
medical Circuits and Systems, Band 1(3), 2007, S. 203–216.
[IEEE07] WLAN Working Group IEEE 802.11. IEEE Std 802.11TM-2007 - Wi-
reless LAN Medium Access Control (MAC) and Physical Layer (PHY)
Specifications, Institute of Electrical and Electronics Engineers, 2007.
http://standards.ieee.org/about/get/802/802.11.html.
[KG10] Corscience GmbH & Co. KG. Corscience Homepage, 2010. http:
//www.corscience.de/de/medizintechnik/produkte-systeme/
telemedizin/sensoren/event-recorder.html Abegerufen am
1.10.2010.
134
Literatur
[LSTW+ 09] Stefan Lucks, Andreas Schuler, Erik Tews, Ralf-Philipp Weinmann und
Matthias Wenzel. Attacks on the DECT authentication mechanisms.
Cryptology ePrint Archive, Report 2009/078, 2009. http://eprint.
iacr.org/.
[NeBD06] Luca Negri, Jan Beutel und Matthias Dyer. The Power consumption of
Bluetooth Scatternets. In Consumer Communications and Networking
Conference. Computer Engineering and Network Lab, ETH Zuerich, IE-
EE, 2006, S. 519–523.
135
Literatur
[Ulle09] Christian Ullenboom. Java ist auch eine Insel : Programmieren mit der
Java Plattform, Standard Edition 6. Galileo Computing. Galileo Press,
Bonn. 8. Auflage, 2009.
136