Sensornetzwerk – Planung und Recherche – Teil 1

Als Werkstudent bei generic.de konnte ich bereits einen Einblick in das Thema Sensornetzwerk bekommen und erste Erfahrungen in diesem Bereich sammeln. Meine Erfahrungen mit dem Sensornetzwerk und vor allem den damit verbundenen Technologien habe ich bereits in zwei Beiträgen kurz zusammengefasst (Sensornetzwerk – Aufbau und Einsatz – Teil 1Sensornetzwerk – Aufbau und Einsatz – Teil 2).
Nun als Hard- und Softwareentwickler bei generic.de wird die Planung und Realisierung etwas konkreter und es soll ein fertiges Sensornetzwerk entstehen. Das anfängliche Ziel ist der Aufbau eines Sensornetzwerkes mit ca. 30 Sensoren, einem Border-Router und einem Raspberry Pi als Gateway.
In dieser Beitragsreihe möchte ich euch bei der Planung und Realisierung mitnehmen. Beginnend bei der Planung und Recherche bis hin zum fertigen Sensornetzwerk.

Im Einführungsbeitrag (Sensornetzwerk – Aufbau und Einsatz – Teil 1) bin ich bereits ein bisschen auf die Recherche eingegangen. In diesem Teil werde ich nun etwas ausführlicher auf die Planung und Recherche eines Sensornetzwerkes eingehen. Meiner Meinung nach ist dies nämlich ein wichtiger Punkt bei der Umsetzung eines Projektes und sollte nicht zu kurz geraten. Klar, das eigentliche Umsetzen und Programmieren macht viel mehr Spaß. Aber ein Projekt kann nur bei einer soliden Planung und Recherche gelingen.

Was soll das Sensornetzwerk können?

Bevor man mit der eigentlichen Recherche beginnt, sollte man sich Gedanken machen, was das Sensornetzwerk alles können soll und wie es aufgebaut sein soll. Dabei ist nicht nur die eventuelle räumliche Anordnung der Sensoren wichtig, sondern auch schon die Überlegung, welche Protokolle zum Einsatz kommen sollen und mit welchen Sensoren die Sensorknoten ausgestattet sein sollen.
Die Vorüberlegungen teilt man am besten in drei Gruppen ein:

Ausmaße des Sensornetzwerkes

  • Wie viele Sensoren werden benötigt?
  • Größe der Sensoren? Stationäre Sensoren? Batteriebetriebene Sensoren?
  • Topologie der Sensoren? Sternförmig?

Verwendete Protokolle

  • IPv6, 6lowPAN, IEEE 802.15.4
  • RPL
  • CoAP, MQTT, UDP
  • I2C, SPI, UART

Welche Sensoren?

  • Temperatur, Luftfeuchtigkeit
  • Luftqualität
  • Aktoren

In meinem Fall hatte ich folgende Anforderungen an das Sensornetzwerk:

  • Ca. 30 funkbasierte, batteriebetriebene Sensoren, um das Bürogebäude ausstatten zu können
  • Ein Border-Router mit einem Raspberry Pi als Gateway
  • (stationäre) Batteriebetriebene Sensoren mit langer Batterielaufzeit (mind. 1 Jahr)
  • Eventuelle stationäre (dauerhaft an) Sensoren, um die Reichweite zu erhöhen
  • Anordnung abhängig vom Grundriss
  • I2C, SPI, UART, IPv6, 6lowPAN, IEEE 802.15.4
  • CoAP, JSON für die Datenübermittlung
  • Überwachung der Batteriespannung
  • Zunächst nur Temperatur- und Luftfeuchtigkeitssensor

Skizze: Aufbau des Sensornetzwerks und die Anordnung der Sensoren

Hat man sich darüber Gedanken gemacht, kann man gezielt das passende Betriebssystem und die passende Hardware suchen.

Welches Betriebssystem?

Entweder man fängt mit dem Betriebssystem an und sucht dann kompatible Hardware oder man hat bereits seine Wunsch-Hardware und sucht ein Betriebssystem, welches diese unterstützt.
Meiner Erfahrung nach, ist es einfacher zunächst das Betriebssystem auszusuchen, da hier die Auswahl kleiner ist und es im Grunde unzählige Mikrocontroller gibt, welche den Anforderungen entsprechen.
Die immer stärkere Verbreitung von IoT bringt auch immer neuere Betriebssysteme zum Vorschein, welche für den Einsatz in Sensornetzwerken optimiert sind. Hier eine kleine Auswahl:

 

 

Bei der Recherche zum passenden Betriebssystem sollte man seine wichtigsten Punkte auflisten und schauen, welches Betriebssystem am besten passt. Nach kurzer Recherche konnte ich relativ schnell meine Auswahl auf TinyOS, ContikiOS und RiotOS beschränken. Die anderen kommen aufgrund der geringen Verbreitung oder Funktionsumfang nicht in Betracht.

Meine Recherche-Ergebnisse habe ich in diesem PDF zusammengefasst. Entschieden habe ich mich für RiotOS. Der Hauptgrund war vor allem die große Unterstützung von diversen Protokollen und die weite Verbreitung. Auch die gute Dokumentation und die große Auswahl an unterstützter Hardware hat mich überzeugt. Des Weiteren liefert das Betriebssystem bereits eine große Auswahl an Treibern für Sensoren. Genauere Infos zu RiotOS könnt ihr in einem späteren Blogbeitrag von mir nachlesen.

Welche Hardware?

Nachdem man sich für ein Betriebssystem entschieden hat, kann man sich Gedanken über die Hardware machen. Dazu sollte man zunächst schauen, welche Hardware das Betriebssystem unterstützt. Im Grunde kann man durch die Erstellung eigener Treiber-Dateien jeden Mikrocontroller verwenden. Um jedoch Zeit zu sparen und Kompatibilitätsprobleme zu umgehen, empfehle ich die Verwendung bereits unterstützter Hardware oder zumindest Mikrocontroller der gleichen Reihe.
RiotOS bietet eine gute Auflistung unterstützter Entwicklerboards und Mikrocontrollern
Um einen Einblick in das Betriebssystem zu bekommen, sollte zunächst mit Entwicklerboards experimentiert werden. Gute Boards sind die Discovery-Boards von STMicroelectronics. Diese sind in Deutschland gut zu bekommen und relativ preiswert.

Links: STM32F051 Discovery Kit – Rechts: STM32F303 Discovery Kit

 

Probiert ruhig die vielen Beispielprogramme aus und lernt das Betriebssystem kennen.

 

 

Nachdem ich mich mit Hilfe der Boards intensiv mit RiotOS auseinandergesetzt habe, habe ich mich auch für meine Sensorplatinen für einen Mikrocontroller von STM entschieden. Sie sind vielfältig, bieten eine große Anzahl an Schnittstellen (UART, I2C, SPI) und werden von RiotOS unterstützt. Da die Sensoren später alle batteriebetrieben sein sollen, habe ich mich für den STM32L452RE entschieden. Dieser ultra-low-power ARM Cortex Controller ist dank seinem geringen Stromverbrauch ideal für batteriebetriebene Schaltungen geeignet.

 

In Teil 2 geht es weiter mit der Frage, welcher Funkchip verwendet werden sollte.