1 Seminar zum Programmierprojekt (TI) Sommersemester 2007 (Lehrstuhl für Technische Informatik) Aufgabe A2: Anleitung und Fragen Einführung in Sensornetze. Der Sensor/Aktor Knoten BTnode Sensornetzwerke Sensornetzwerke bestehen aus einer Menge von Sensorknoten, die über ein Netzwerk verbunden sind. Die einzelnen Sensoren sind meist direkt an die Sensorknoten angeschlossen. Die möglichen Aufgaben eines Sensorknotens sind u. a. • Messen einfacher physikalischer Parameter • Speichern der Sensordaten • Bearbeiten von Sensordaten • Weiterleiten der Sensordaten Die zunehmende Miniaturisierung von Prozessoren führte zu extrem kleinen, kostengünstigen und autonomen Sensorknoten, die drahtlos miteinander kommunizieren und sich selbständig organisieren. Diese können beispielsweise in großer Zahl und in einem großen Gebiet ausgebracht werden und überwachen ihre Umgebung solange, bis ihre Energiereserven erschöpft sind. Die Attribute klein, billig, in großer Zahl verfügbar und autonom haben die Idee unter dem Schlagwort smart dust (intelligenter Staub) bekannt gemacht. Sensor-Netzwerke können als preiswerte Alternative zu klassischen Sensoranordnungen dienen, wie sie etwa bei Testfahrten der Fahrzeugindustrie eingesetzt werden. Denkbar ist, dass tausende von Sensorknoten in einem Gebiet von Interesse oder innerhalb eines Objektes platziert werden und Ad-hoc-Netzwerke bilden, die eine Überwachung komplexer physikalischer Systeme gestatten. Somit würden sich Sensornetze besonders zur Überwachung großer Flächen eignen. Sie werden eingesetzt bei: • Militärischen Aufgaben • Umweltschutz durch Messung von Schadstoffkonzentrationen in Gewässern • Katastrophenschutz (frühzeitige Erkennung von Waldbränden, Lawinen, Tsunamis) • Tierbeobachtung mit Hilfe von Bewegungssensoren, oder mit Miniatur-Sendern, welche die Tiere tragen • Gebäude- oder Geländesicherung durch Erkennen von Geräuschen Sensornetze übernehmen hauptsächlich Überwachungs- und Kontrollfunktionen. Falls die Knoten zusätzlich mit Aktoren ausgestattet sind, können sie auch Steuerungsaufgaben übernehmen. 2 Der verwendete Sensor/Aktorknoten Eine BTnode ist eine vielseitige, autonome, kabellose Datenübertragungs- und bearbeitungs-Plattform, die in ad-hoc- und Sensor-Netzwerken verwendet wird. Sie wurde an der ETH Zürich entwickelt und liegt zurzeit in der Version 3.22 vor. Abbildung 1: Die BTnode v3.22 Die Plattform besteht aus einem Bluetooth-Subsystem, einem Low-Power Funk-Subsystem (Radio) und einem Mikrokontroller. Dank des Low-Power Radio ist die BTnode kompatibel zu den Berkeley Mica2 Motes, die ebenfalls als Knoten in drahtlosen ad-hoc Netzwerken verwendet werden. Abbildung 1 zeigt eine BTnode v3.22. Aufbau der BTnode Das BTnode-System enthält den Mikrokontroller Atmel ATmega128l. Die neueste Version beinhaltet ein neues Zeevo ZV4002 Bluetooth-System, welches bis zu 4 unabhängige Piconetze mit je 7 Slaves unterstützt. Zusätzlich wurde ein Chipcon CC1000 Funk-System integriert, was die Kompatibilität zu den „Mica2 Motes“ gewährleistet. Neben einem SRAM Modul gibt es ein 126 KB Flash ROM, sowie ein 4 KB EEPROM. Die Stromversorgung wird entweder durch einen Gleichstromanschluss gesichert, kann aber auch durch 2 AA Batterien, welche direkt in das BTnode eingesetzt werden, erfolgen. Die Stromzufuhr sowohl zum Bluetooth-SXSystem, als auch zum CC1000 kann softwareseitig gesteuert werden. Durch die sehr kleinen Maße von 58.15x32.5mm aufgesetzt auf einen 2 AA-Batterie-Halter, eignen sich BTnodes hervorragend für den Einsatz in Sensor- und ad-hoc-Netzwerken. Bei Bedarf können die Funk-Subsysteme unabhängig voneinander oder auch gleichzeitig senden und empfangen, aber auch unabhängig voneinander vollständig ausgeschalten werden, was den Blindleistungs-Verbrauch des Gerätes nennenswert reduziert. 3 Abbildung 2: Aufbau der BTnode Die technischen Daten des BTnode v3.22 im Überblick: • Atmel Atmega 128L (8 MHz @ 8 MIPS) Mikrokontroller • 64 + 180 KB SRAM, 126 KB FLASH ROM, 4 KB EEPROM • Zeevo ZV4002 Bluetooth-Subsystem mit Unterstützung für AFH/SFH Scatternets, Bluetooth v1.2 kompatibel • Chipcon CC1000 Low-Power Funk-Subsystem, ISM Band (433 - 915 MHz) • ISP, UART, SPI, I2C, GPIO, ADC Schnittstellen • Stromversorgung entweder durch 2 AA Batterien oder Gleichstrom Anschluss von 3,6 bis 5,0 V • Größe: 58,15 x 33 mm, aufgesetzt auf einen 2 AA Batterie-Halter Abbildung 2 gibt einen Überblick über den Aufbau der BTnode. Die BTnode System-Software ist ein einfaches Betriebssystem, aufgebaut aus interruptgesteuerten low-level Treibern und einem einfachen Dispatcher/Scheduler, um multiple Threads behandeln zu können. Dieses Betriebssystem ist gut geeignet für Anwendungen solch kleiner Netzwerkgeräte, die größtenteils aus einfachen Input/Output und Überwachungsanwendungen bestehen. Es gibt hier zwei Programmier-Modelle: Ein sequenzielles Modell und ein Event-basiertes Model mit kooperativem Multitasking. Es gibt daher auch verschiedene System-Software für beide Modelle. Das sequenzielle Modell erlaubt zwar die genaue Kontrolle aller Ressourcen, führt aber zu erhöhtem Aufwand bei der AnwendungsProgrammierung. Dagegen bietet das Event-basierte Modell komfortable Funktionen für das Ressourcen-Management, jedoch nur eingeschränkten Zugriff auf die Hardware Ressourcen. Unterstützt werden die opensource BTnut System-Software und die Standard C Programmierung. BTnodes sind TinyOS kompatibel und unterstützen die AVR-GCC Tool Chain unter Windows/Linux/MacOS/BSD. Nut/OS ist ein bewusst einfach gehaltenes EchtzeitBetriebssystem für kleine eingebettete Systeme die auf dem Atmel ATmega 128 Mikrokontroller basieren. Es stellt die wichtigsten Funktionen des Nut/Net TCP/IP Stacks zur Verfügung: • Kooperatives Multithreading • Events 4 • Periodische und One-Shot Timer • Dynamische Speicherverwaltung • Interruptgesteuertes Stream I/O Die Eigenschaften des TCP/IP Stacks sind: • Basisprotokolle ARP, IP, ICMP, UDP und TCP • Benutzerdefinierte Protokolle DHCP, DNS und HTTP • Socket API • Host, Net und default Routing • Interruptgesteuerter Ethernet-Treiber NUT/OS ist modular aufgebaut, so dass nur die Module im finalen Kernel-Image zu finden sind, die auch tatsächlich benötigt werden. Dies hat zur Folge, dass das Image des NUT/OS sehr klein ist. Dies ist wünschenswert, da eingebettete Systeme über eingeschränkte Speicherkapazitäten verfügen. NUT/OS unterstützt kooperatives Multithreading, dadurch wird das Scheduling vereinfacht. Der aktive Prozess gibt die Kontrolle an die CPU ab, sobald er z.B. auf Ressourcen warten muss. BTNUT/OS erweitert das herkömmliche NUT/OS Betriebssystem um BTnode-spezifische Treiber und einen Bluetooth-Stack. BTNUT/OS besteht aus dem Systemkern, einer Reihe von Bibliotheken, Include-Dateien und einer API-Dokumentation (Application Programming Interface). Der Suchassistent oder "Research Agent" In Abbildung 3 ist die "Inquiry Prozedur" dargestellt. Bevor ein Bluetooth-Gerät eine Verbindung zu einem anderen Gerät aufbauen kann, muss es zunächst feststellen, ob sich ein BTGerät in seiner Kommunikationsreichweite befindet. Sobald also ein Bluetooth-fähiges Gerät aktiviert wird, sendet dieses Suchsignale aus, um weitere Netzknoten zu finden. Dieses Gerät übernimmt hier die Rolle eines Suchassistenten (Research Agent). Dies geschieht mittels der Inquiry Prozedur (dt. Erkundigung, Anfrage). Der Inquiry Befehl ist die einzige broadcastähnliche Funktion im Bluetooth-Standard, die die Suche nach Bluetooth-Geräten in der Umgebung ermöglicht. Hierbei sendet das Gerät periodisch ID-Pakete aus, die einen so genannten Inquiry Access Code (IAC) enthalten und signalisiert den anderen Stationen damit, dass nach ihnen gesucht wird. Das ID-Paket enthält keine Informationen über die sendende Quelle, wodurch die Anonymität gewahrt wird. 5 Abbildung 3: Inquiry Prozedur Die ID-Pakete werden nacheinander auf verschiedenen Frequenzen gesendet. Dabei werden die Frequenzen 3200-mal in der Sekunde gewechselt, um in kürzester Zeit so viel Frequenzen wie möglich abzudecken und damit schnell Bluetooth-fähige Geräte zu entdecken. Als Initiator dieser Verbindung übernimmt dieses Gerät die Rolle des Masters. Die Gegenseite (inquiry scanning device), also der Slave, wechselt die Frequenzen im Vergleich zum Master nur alle 1,28 Sekunden und somit langsamer. Diese unterschiedlichen Geschwindigkeiten im Frequenzwechsel führen dazu, dass sich früher oder später beide Geräte auf derselben Frequenz befinden. Das Inquiry-scannende Gerät kann sich nicht nur auf einer festen Frequenz befinden, da durch Interferenzen der Umgebung oder durch andere Sender im ISM Band (z. B. WLAN) diese Frequenz gestört werden kann. Auf die Inquiry-Nachricht antwortet der Slave mit einem "Frequency Hopping Synchronisation" Paket. Das Antwortpaket enthält die Informationen wie die Bluetooth MAC-Adresse, sowie Informationen über den aktuellen Wert der Systemuhr und die Stärke des empfangenen Inquiry Signals. Die MAC-Adresse ist die eindeutige Kennung des Gerätes und wird für die Identifizierung der Kommunikationspartner benötigt. Zusätzlich kann man einem Gerät auch einen Klartextnamen zuweisen. Nach dem Inquiry erfolgt eine Page-Prozedur, die eine Verbindung zwischen dem Master und dem Slave aufbaut. Befinden sich zwei Geräte bereits in einem Piconetz, so entfällt die Inquiry-Prozedur. Das Dienstangebot des Sensor/Aktorknotens BTnode 6 In unserem System bietet der Sensor/Aktorknoten Dienste an, die vom Mobilen Knoten (MK) über Bluetooth aufgerufen werden können. Dafür soll der MK eine Verbindung mit dem Aktor/Sensorknoten öffnen und die entsprechende Kennung des Dienstes schicken. Der Knoten soll in der Lage sein, diese Verbindung zu akzeptieren und die Kennung des Dienstes zu interpretieren. Dieser Prozess kann mit Hilfe der L2CAP-Schicht und des „Serial Port Profils“ von Bluetooth in der BTNode leicht implementiert werden. L2CAP steht für Logical Link Control and Adaptation Protocol. Dieses Protokoll ist, wie in der Abbildung 4 gezeigt, im Bluetooth Protokoll-Stack direkt über der HCI-Schnittstelle (Host Controller Interface) angesiedelt. Es beruht auf dem Konzept von Channels. Abbildung 4: L2CAP Schicht Im Gegensatz zu einer Stream-Connection auf der HCI-Ebene, sendet und empfängt die L2CAP-Schicht Pakete. Diese werden entweder zwischen L2CAP und HCI oder aber direkt zwischen L2CAP und dem Link Manager ausgetauscht. Das Letztere ist der Fall auf Systemen ohne Host. L2CAP stellt verbindungsorientierte und verbindungslose Dienstleistungen (Services) für Protokolle höherer Schichten zur Verfügung. Dies ermöglicht den Protokollen höherer Ebenen Datenpakete (L2CAP Service Data Units, SDU) von bis zu 64 Kilobytes zu empfangen und zu senden. L2CAP unterstützt das Multiplexen zwischen den Services und den darüberliegenden Protokollen. Wenn ein Kommunikationskanal eingerichtet wird, wird das Multiplexen zum Routen zwischen der Verbindungsanfrage und dem korrekten höheren Protokoll benutzt. Zusammen mit dem L2CAP-Protokoll werden wir unsere Dienste über „Serial Port Profile (SPP)“ anbieten. Das ist der Standard Operationsmodus in BTNodes. SPP erlaubt Bluetooth Geräten RS232 (oder ähnliche) serielle Kabelverbindungen zu emulieren. Die von diesem Profil überdeckten Szenarios zielen auf Legacy-Anwendungen, die Bluetooth als Kabelersatz verwendet. Wie in Abbildung 5 gezeigt, wird eine Abfrage von Diensten vom MK gestartet. Zuerst baut der MK eine Verbindung mit die Sensor-/Aktorknoten auf, und schickt einen String ab. Dieses String soll vom Sensor-/Aktorknoten interpretiert werden als eine Anfrage für Dienste. Der Sensor-/Aktorknoten antwortet dann mit einem String der alle Dienste beinhaltet. Die Namen der Dienste sind durch Kommata getrennt (ohne Zwischenraum). 7 BT Verbindung aufbauen „SERVICES“ „LAMPE ANSCHALTEN, LAMPE AUSCHALTEN“ Abbildung 5: Anfordern des Dienstangebots ACHTUNG: Die Strings, die hier festgelegt werden, müssen mit dem MK abgestimmt werden, da sie vom MK interpretiert werden müssen. Fragen 1. Was sind Sensornetze und wozu werden sie verwendet? 2. Wie bilden sich die Verbindungen in ad-hoc Netzwerken? 3. Was ist NUT/OS? Welche Erweiterung von NUT/OS führt zur Variante BTNUT/OS? 4. NUT/OS hat mehrere Charakteristika, die in modernen eingebetteten Systemen erwünscht sind. Erklären Sie die in NUT/OS verwendeten folgenden Konzepte: a. Die NUT/OS hat einen "Small Footprint". Erläutern Sie diesen Begriff. b. NUT/OS implementiert ein kooperatives Multithread Schema. Was bedeutet das? Was ist der Unterschied zum "preemptive Multithread"? c. NUT/OS ist Event-orientiert. Erklären Sie diesen Aspekt! 5. Erklären Sie anhand des Blockschaltbilds den Hardware-Aufbau der BTnodes. 6. Zu welcher BT-Klasse zählt die BTnode? 7. Für welche Anwendungen kann die BTnode eingesetzt werden? 8. Welches Betriebssystem wird für die BTnode verwendet? 9. Über welche Schnittstelle und in welchen Speicher wird das BTnode Programm geladen? 10. Erklären Sie die grundlegende Funktionalität des L2CAP Protokolls 8 Anhang Literatur und Quellen [1] http://oss.kernelconcepts.de/nutos/ [2] http://www.btnode.ethz.ch/ [3] http://www.btnode.ethz.ch/static_docs/doxygen/btnut/ [4] http://ethernut.de/en/software/index.html [5] http://e-collection.ethbib.ethz.ch/ecol-pool/incoll/incoll_869.pdf