Sensornetzwerk – Riot OS – Teil 1

Bereits in vorigen Blogbeiträgen habe ich des Öfteren erwähnt, dass ich als Betriebssystem Riot OS verwende. Die Gründe habe ich auch bereits kurz genannt. In diesem Blogbeitrag möchte ich nun näher auf Riot OS eingehen und euch erklären, warum ich mich für dieses Betriebssystem entschieden habe. Des Weiteren werde ich auf die Funktionsweise von Riot OS eingehen und euch anhand einiger Beispiele das Betriebssystem näherbringen.

Was ist Riot OS?

Riot OS ist ein Betriebssystem, welches von der Freien Universität Berlin extra für das Internet der Dinge (Internet of Things) entwickelt wurde. Seine Entwicklung begann im Jahr 2008. Angefangen hat noch alles unter dem name „Feuerware“. Das ursprüngliche Ziel war die Überwachung von Feuerwehrmännern. Nach der Abspaltung von „Feuerware“ entstand im Jahre 2010 „µkleos“. In diesem Zusammenhang wurden diverse Protokolle wie 6loWPAN, RPL und TCP implementiert, um das Betriebssystem für den Einsatz im Internet anzupassen. 2013 kam dann die Umbenennung in Riot OS.

Heute hat sich Riot OS als Betriebssystem für funkbasierte Sensornetzwerke etabliert und findet immer häufiger Anwendung.

Warum Riot OS?

Die wichtigste Frage ist nun aber – warum habe ich mich für Riot OS entschieden? Einen Punkt habe ich bereits im vorigen Kapitel genannt. Das System ist „Made in Germany“ und relativ neu. Die Community ist deswegen noch sehr aktiv und das Betriebssystem wird stetig weiterentwickelt. Auch die Implementierung neuer Treiber ist eher dem deutschen Markt angepasst. So lassen sie alle unterstützten Sensoren problemlos aus Deutschland beziehen.

Die Dokumentation von Riot OS und die Kommunikation der Community untereinander findet dennoch auf Englisch statt. Dies hat den Vorteil, dass die Größe der Community nicht auf Deutschland beschränkt ist.

Da kommen wir auch schon zu dem nächsten Punkt – die Dokumentation. Diese ist im Vergleich zu anderen Betriebssystemen hervorragend. Neben der Github-Seite mit vielen Beispiel- und Testprogrammen gibt es auch eine ausführliche Dokumentation der API. Dies erleichtert den Einstieg enorm. Treten dennoch Fragen auf, so bekommt man dank der aktiven Community schnell eine Lösung.

Eine gute Dokumentation und Community bringen jedoch nichts, wenn das Betriebssystem selbst nichts taugt. Doch auch beim Thema Funktionsumfang kann sich Riot OS sehen lassen. Es sind alle wichtigen Protokolle für ein funkbasiertes Sensornetzwerk vorhanden. Beginnend bei der Unterstützung des Übertragungsprotokolls IEEE 802.15.4, über das Routingprotokoll RPL, bis hin zum Kommunikationsprotokoll CoAP.

Auch die Anzahl von Riot OS bereits unterstützten CPUs, Sensoren und Funkchips ist groß. So findet man für jeden Einsatz die passende Hardware, ohne selber groß Treiber programmieren zu müssen.

 

Eine genaue Auflistung meiner Recherche zum Thema Betriebssysteme für Sensornetzwerke findet ihr in diesem PDF.

Zusammengefasst haben mich folgende Punkte dazu gebracht, mich für Riot OS zu entscheiden:
– Relativ neues Betriebssystem
– Große und aktive Community
– Gute und ausführliche Dokumentation
– Große Auswahl an bereits unterstützter Hardware, welche gut in Deutschland zu beziehen ist
– Alle wichtigen Protokolle werden unterstützt (IPv6, 6loWPAN, IEEE 802.15.4, RPL, CoAP)
– Kostenlos und unter der LPGL Lizenz
– Programmiert mit C/C++

Wie funktioniert Riot OS?

Damit ihr das System besser versteht, möchte ich nun auf die Funktionsweise des Betriebssystems eingehen.
Das Betriebssystem ist überwiegend in C programmiert. Es kann aber auch C++-Code verwendet werden.
Das Betriebssystem ist Modul-Basierend aufgebaut. Benötigt man ein bestimmtes Modul, so wird dieses über ein Makefile eingebunden. Des Weiteren werden benötigte Treiber oder Protokolle alle über das Makefile eingebunden. So lassen sich unkompliziert alle benötigte Komponente in das eigene Projekt einbinden.

RiotOS Modul RPL einbinden-22082018-Mobile-17KB , generic.de AG

Beispiel: Einbinden des Routingprotokolls RPL

 

Beispiel: Einbinden des Funkchip-Treibers

Genauere Infos über die benötigten Module erfahrt ihr im nächsten Teil über die Beispielprogramme, sowie in einem späteren Blogbeitrag, wenn es über die eigentliche Software geht.
Wird nun das Betriebssystem gestartet, so werden alle eingebundenen Module, Protokolle und Treiber automatisch eingebunden und können im eigenen Projekt verwenden werden.
Der „Startpunkt“ jedes Projekts ist die sogenannte Main-Funktion, welche im Grunde bei jeder Software vorhanden ist. Von hier aus könnt ihr nun euer eigentliches Programm ausführen.

Main-Funktion

Im obigen Bild sieht ihr die Main-Funktion von Rios OS aus dem Beispiel-Programm „Default“. Sie stellt sozusagen den Mindestaufbau einer Main-Funktion da. Wie der Programmierer unter euch erkennen wird, wird am Ende der Main-Funktion eine Shell gestartet. Mit Hilfe dieser Shell kann man später über einer seriellen Verbindung mit dem Sensorboard kommunizieren. Neben den Modulabhängigen Befehlen lassen sich auch eigene Befehle erstellen, um mit seinem eigenen Programm interagieren zu können.
Alle vorhanden Befehle lassen sich später mit Hilfe des Befehles „help“ anzeigen.

Erlaubte Shell-Befehle

 

Wie ihr eigene Shell-Befehle erstellen könnt, erfahrt ihr im nächsten Teil, wenn ich näher auf die Beispielprogramme des Betriebssystems eingehe.
Die Module und die Shell für die Interaktion mit Riot OS stellen im Groben die eigentliche Funktionsweise von Riot OS da. Es werden die benötigten Module eingebunden und später mit Hilfe der Shell mit Riot OS kommuniziert.
Wie genau ein Riot OS Programm aufgebaut ist, erfahrt ihr im nächsten Teil. Dort werde ich näher auf die Beispielprogramme eingehen und euch anhand dieser den Aufbau eines Riot OS Programms zeigen.