Letzte Änderung |
20.12.2010 |
|
|
|
|
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.
|
|