Programmieren von Microcontrollern am Beispiel eines Sensornetzwerkes

In dieser Vorlesung üben wir das Programmieren von Sensornetzwerken an einem Beispiel. Nachfolgend ist das Anwendungsszenario des aktuellen Vorlesungszeitraumes aufgeführt.

Szenario

  • Ein Deich ist zur Verstärkung bei einer Flut mit Sandsäcken belegt
  • Sandsäcke enthalten Sensorknoten bestehend aus Prozessor, Speicher, Batterie und Sensoren
  • Sensoren messen Feuchtigkeit in Sandsack (Gefahr des Deichbruchs)
  • Bei Überschreiten einer Grenze wird Alarm an Basisstation geschickt
  • Position der Sensorknoten muss dazu bekannt sein




Es ergeben sich folgende Teilaufgaben

  • Software für Sensorknoten (BIOS)
  • Sichere Übertragung von Nachrichten
  • Routing
  • Sensoransteuerung und Messdatenauswertung inkl. Datenaggregation
  • Positionierung der Sensorknoten
  • Verbindung des Netzwerkes zum PC (Basisstation)
  • Visualisierung des Alarms

Was wird benötigt?

  • GPS-Bluetooth-Mäuse
  • IPAQ'S
  • Development-Boards (Chipcon)
  • Sensorknoten (Chipcon)
  • PC

Wir bilden Teams

1) Visualisierung

Bearbeiter: Michael Zornow, Tim Eickelberg, Roland Lück
Betreuer: Jan Blumenthal
  • Empfängt per Kanal (COM, Socket) Nachrichten (Events, Positionen, Daten)
  • Darstellung aller Informationen in einem Window
  • Automatische Skalierung mit Anzeige (siehe Spyglass)
  • Sprache: JAVA oder QT
  • Konfiguration von Zeitintervallen

2) Software auf einfachen Knoten

Bearbeiter: Christoph Becker, Martin Kusserow
Betreuer: Jan Blumenthal
  • Notfall abtesten
  • Messungen
  • Daten übertragen
  • Senden von Events
  • Implementierung: SensornodeTask()
  • ISR für Messwerterfassung
    • Signal,Flag,TimerRingpuffer whatever setzen und sich beenden
    • Eigentlich Arbeit wird in SensornodeTask() erledigt
    • Vorteil. nebenläufige Bed. werden eliminiert+ISR schnell beendet

3) IPAQ+GPS

Bearbeiter: Petro Bravermann, Mirko Gerber, Jens Schulz
Betreuer: Frank Reichenbach
  • Positionierung des Beacons
  • Verbindung zw. Developmentboard und GPS herstellen
  • Daten auslesen (EMEA Protokoll auslesen, vorverarbeiten) aus GPS und abspeichern (GPS_POSITION)
4) Koordinatenumwandlung Bearbeiter: Petro Bravermann, Mirko Gerber, Jens Schulz
Betreuer: Frank Golatowski
  • Koordinaten der Beacons werden durch Abziehen eines Fixpunktes (FIRST_BEACON) normiert !
  • Kommunikation nicht notwendig
  • Umwandlung in kartesische Koordinaten
  • laeuft auf jedem IPAQ
  • Absprache mit Team 1 erforderlich
  • Implementierung der Funktion MessagePosition() und Ablegen der Positonsdaten in stat. Variablen vom Typ (POSITION)
  • Daten auf COM-Port schieben (Datentyp POSITION), Absenderadresse ist ID_LOCALE_POSITION_MODULE

5) Positionsbestimmung auf Sensorknoten

Bearbeiter: Petro Bravermann, Mirko Gerber, Jens Schulz
Betreuer: Jan Blumenthal
  • abstrakte Funktion, die in Abh. der installierten HW die Position bestimmt
  • GPS installiert -> GPS-Daten werden verwendet
  • GPS nicht installiert -> Beaconnachrichten (POSITION_MESSAGE) werden ausgewertet
  • Positionierung mit WCL

6) Gateway/MessageHandling

Bearbeiter: Machen wir.
Betreuer: Jan Blumenthal
  • Programm, dass Daten weiterleitet (Router)
  • mehrere Schnittstellen z.B. Messageloop zu anderen Komponenten
  • Messageformat ist im ganzen Netzwerk konstant
  • Implementierung der Funktionen MessageLoop() und MessageBasestation()
  • Implementierung des Ringbuffers

7) Routing

Bearbeiter: Sebastian Vorkörper, Ralph Hänsel
Betreuer: Frank Reichenbach
  • Fluten in Initialisierungsphase (z.B. Positionsbestimmung)
  • Geocast im Normalbetrieb
  • Erneutes Versenden von bereits gesendeten Paketen verhindern
  • Routing/Sende-Interface zu oberen und unteren Schichten
  • Priorisierung von Notfallnachrichten (NODE_EVENT)
  • hardwareunabhängig (welche Nachricht kommt/geht wohin)
  • Abstimmung mit Communication erforderlich !

8) Nachrichtensendung/empfang

Bearbeiter: Martin Simroth, Mathias Rulf
Betreuer: Frank Reichenbach
  • Receive-Funktion (möglichst kein Funk über HAL)
  • serieller und Funkempfang (ISR)
  • Empfang von Nachrichten in ISR
  • Weiterleiten der Nachrichten ans Routing-Modul

Projektstatus

Hier findet ihr die aktuellen Sourcecodes zu dem Projekt.
Copyright 2015 by Jan Blumenthal, University of Rostock
Imprint