ZigBee Lab

aus Nomads, der freien Wissensdatenbank

Diese Seite beschreibt unser ZigBee Labor, das für Experimente zur Verfügung steht.

Ansprechpartner ist Michael Kreikenbaum

Inhaltsverzeichnis

Verfügbare Hardware

  • ZigBee Development Kit CC2431DK von Texas Instruments (TI hat Chipcon aufgekauft) mit zwei Entwicklungsboards, die über USB an einen Rechner angeschlossen werden können, dazu 10 batteriebetriebene, mobile Knoten.

Software

  • Entwicklungsumgebung IAR Embedded Workbench bzw. Eclipse
    • Im IAR Workbench kann man ein externes Programm zum flashen verwenden. Die Einstellungen für den SmartRF Flash Programmer stehen im Handbuch.
  • Embedded-Betriebssystem TinyOS
  • Anleitung für die Installation von TinyOS auf den im CC2431 verwendeten 8051 Microcontrollern findet sich hier.
  • Tools: Hier sind u.a. Beispielapplikationen und der "TI Flash Programmer" zum Flashen der Module zu finden.
    • Der SmartRF Flash Programmer überträgt Programme (im hex-Format) auf die motes. Mit ihm kann auch die IEEE ID gesetzt werden.

Erfahrungen

  • TinyOS scheint auf den cc2431 Motes zu laufen, allerdings wird für die Programmierung mit TinyOS vor allem der KEIL-Compiler unterstützt, der am Lehrstuhl nicht vorhanden ist.

Bisherige Arbeiten am Lehrstuhl ROK

  • Diplomarbeit von Johannes Zapotoczky, 2006: Hybride Funkortung (PDF)
  • EMES Projektarbeit WS 2007/08 von Erik Neumann und Matthias Müller: MagicMap ZigBee Integration (PDF)
  • EMES Projektarbeit WS 2008/09 von Jan Birkholz, Julian Godesa, Stefan Keidel und Martin Werner: Drahtlose_Ortung_in_Sensornetzen

weitere Links

EMES-Projekt: Low-Power optimierte Ortung in Sensornetzen

siehe auch EMES-Projektauschreibung: EMES-ZS_Projekte_09/10

Szenario

Übersicht ZigBee-Szenario
vergrößern
Übersicht ZigBee-Szenario
  • Mobile Knoten senden periodisch "I'm-alive-message" (IAM) als single Hop Broadcast und gehen zwischendurch zum Stromsparen in einen Sleep-Mode. Diese Periodendauer soll von aussen konfigurierbar sein
  • stationäre Knoten in Reichweite empfangen diese IAM-Signale, messen die Signalstärke und senden diese zum Gateway
  • der Gateway-Knoten ist per USB an einen Rechner angeschlossen. Auf dem Gateway werden die Nachrichten mit den jeweiligen Signalstärken empfangen an den Rechner übertragen bzw. von dort aus periodisch abgefragt, und schließlich an das Funkortungssystem MagicMap weitergeleitet.
  • in MagicMap wird aus den Signalstärkeinformationen die Position der mobilen Knoten berechnet
  • über das MagicMap User Interface kann man die knotenindividuellen Perioden der IAM-Signale konfigurieren.
  • Alternativ lässt sich das Umschalten der Periodendauern über bestimmte Ereignismuster automatisieren, siehe MagicTracker-Plugin

Spezielle Fragen bei diesem Szenario

  • die Broadcast werde ohne Acknowledge gesendet, da stromeffizienter
  • der Knoten kann sich dann sofort schlafen legen
  • alle n Nachrichten kann die Periodendauer konfiguriert werden
  • dazu wartet der Mobile Knoten auf eine Konfigurationsnachricht bzw ein leeres Acknowledge

Aufgabenstellung

Obiges Szenario umsetzen. Messungen und Analyse zu Stromverbrauch und zu Latenzzeit (Verzögerungszeit bis Messungen am Server vorliegen) bei unterschiedlichen IAM-Periodendauern erstellen.

Anbindung an MagicMap

Realisierung als Plugin in MagicMap.

  • Die Entwicklung von eigenen Plugins für MagicMap ist hier beschrieben: PluginHowTo.
  • Es existiert bereits ein Plugin des EMES Projektes 2007. Das funktionierte, basiert aber auf relativen Koordinaten, die die Positioning Engine der cc2431 autark berechnen (genaues Verfahren ist in diesem PDF von TI beschrieben).
  • dieses muss so umgeschrieben werden, dass es Signalstärken zu den einzelnen Knoten an MagicMap sendet
  • die Plugins können dazu die Signalstärkewerte direkt in die jeweiligen Knotenattribute schreiben:
    • für jeden ZigBee Knoten, von dem das Gateway Daten bekommt, muss vom Plugin ein neuer ClientNode angelegt werden, sofern er im Nodemodel noch nicht vorhanden ist
    • jeder ClientNode hat ein MeasurementModel, in dem die Daten von allen anderen Knoten, die er sieht gespeichert werden
    • Ein entsprechender Aufruf, um die Messwerte für einen Knoten zu setzen, könnte so aussehen:
ClientNode client;
//Testen ob der Knoten schon exisitiert
client = Controller.getInstance().getNodeModel().findClient("eindeutiger_Name_zB_Mac");
if (client == null){
    //neuen Knoten anlegen und
    client = new ClientNode(Controller.getInstance().getNodeModel());
    client.setName("eindeutiger_Name_zB_MAC");
    client.setDisplayName("Anzeigename_in_MagicMap");
    //ins Knotenmodell packen
    Controller.getInstance().getNodeModel().addNode(client);
    //explizites angeben, dass dieser Knoten vom aktuellen MagicMap Client berechnet werden soll 
    client.setCalculation(true);
}
client.getMeasurementModel().updateScanResult(apMac, ssid, signalLevel, lastSeen, technology);
  • Berechnung der Positionen und Visualisierung geschieht dann in MagicMap
  • die IAM-Perioden können über das User Interface von MagicMap verändert werden (todo@Florian)
    • wie man einen Eintrag zum Rechtsklickmenü hinzufügt ist hier beschrieben.
    • Dabei gilt es zu berücksichtigen, dass die Konfiguration erst verzögert auf den Knoten geschrieben wird und ggf. auch fehlschlagen kann. Dies ist ein generelles Problem beim Editieren von Knotenattributen und müsste in alter- und neuer Wert getrennt werden. Dazu wird in der actionPerformed-Methode des Rechtsklickmenüs ein Dialogfeld geöffnet in dem auf folgende Weise das Attribut "NEW_IAM_PERIOD" gesetzt wird.
node.addAttribute("NEW_IAM_PERIOD, wert, true, true);

wenn das Setzen des neuen Updateintervalls erfolgreich war, wird das Attribut "CURRENT_IAM_PERIOD" auf den aktuellen Wert gesetzt.

node.addAttribute("CURRENT_IAM_PERIOD, wert, true, true);
  • das MagicMap-Plugin muss diese Periodendauern an den mobilen Knoten übertragen

Vorgehensweise

  • Software vom EMES Projekt 2007 ans laufen bringen und Funktion testen
    • Image auf die Knoten flashen
    • das damals entwickelte MagicMap Plugin installieren und starten
    • Messungen/Überlegungen zum Stromverbrauch

Sourcen

Die Sourcen verwalten wir im MagicMap-SVN:

Siehe auch SVN_Struktur

Stromverbrauch messen

  • Auf der TI-Website gibt es ein PDF, in dem beschrieben ist, wie man den Stromverbrauch der Motes näherungsweise bestimmt.