Azure IoT Services auf einem Raspberry Pi 3

| Autor / Redakteur: Marcel Bösing, Johannes Förner, Rudi Swiontek, Gerhard Biebl * / Margit Kuther

Installation von Visual Studio 2017 Community

Die Community-Version von Visual Studio 2017 ist eine kostenfreie Version, die auf dem Entwicklungsrechner installiert werden kann, um IoT-Anwendungen in Form von „Apps“ für Raspberry Pi 3 zu entwickeln.

Für die Entwicklung von Apps für den Raspberry Pi (oder andere IoT-Geräte) steht zunächst der Projekttyp „Windows Universal App“ zur Verfügung. Damit werden Apps entwickelt, die immer über eine mit WPF programmierbare, sichtbare Benutzeroberfläche verfügen. Diese Apps werden nach dem Übertragen auf den Raspberry als „Foreground Apps“ bezeichnet.

Alternativ dazu können auch sog. „Background Apps“ entwickelt werden; dies setzt aber voraus, dass zunächst die dafür benötigten zusätzlichen Visual Studio Projekt Templates installiert werden. Diese stehen als Download zur Verfügung unter: „Windows IoT Core Project Templates“.

Wichtig: Um eigene Apps zu entwickeln ist das Entwicklungssystem in den sogenannten „Entwickler-Modus“ umzustellen.

Windows Universal App erstellen und debuggen

Visual Studio 2017 wird zum Erstellen und Debuggen der Windows Universal App verwendet. Zunächst werden neue Foreground-Projekte wie folgt erzeugt. Unter File->New->Project... wird ein Visual C# Windows Universal Projekt mit dem Template „Blank App (Windows Universal)“ ausgewählt (Bild 5). In diesem leeren Rahmenprojekt unter TODO kann der eigene Programmcode hinzugefügt werden. Das Testen und Debuggen erfolgt remote über die Ethernet-Schnittstelle.

Windows IoT Core Background Application erstellen

Eine Background Application für Windows IoT Core wird erstellt unter File->New->Projects->Windows IoT Core->Background Application (Bild 6). Dieses Project Template ist nur dann verfügbar, wenn zuvor die Windows IoT Core Project Templates installiert wurden.

Ansteuerung externer Hardware wie Sensoren mittels Raspberry Pi

Neben den vier USB-Schnittstellen und der HDMI-Schnittstelle bietet der Raspberry Pi 3 die Möglichkeit, externe Geräte wie Sensoren, LC-Displays, LEDs, usw. über eine 40-polige Steckerleiste anzusteuern.

Diese Steckerleiste stellt an Pin 1 und 17 eine Spannung von 3,3 V bereit. Pin 2 und 4 führen dagegen 5 V. Insgesamt acht Ground-Anschlüsse stehen mit den Pins 6, 9, 14, 20, 25, 30, 34 und 39 zur Verfügung. Damit verbleiben 28 Pins für die externe Kommunikation (Bild 7). Der Gesamtstrom aller GPIOs sollte 50 mA nicht übersteigen.

Sowohl GPIO als auch SPI, I2C und UART werden durch eine Anzahl von Klassen in entsprechenden Namespaces (Windows Devices) unterstützt. Hierzu muss allerdings zuerst mit Nuget die Bibliothek „Windows.Devices“ in Visual Studio installiert werden. Dadurch werden auch eine Reihe weiterer interessanter Namespaces eingefügt, z.B.

Praxisbeispiel:Einlesen und Abfragen von Telemetriedaten

Zunächst sollen Temperatur- und Luftfeuchte-Messwerte von einem Sensor eingelesen, auf dem Userinterface angezeigt, auf der SD-Karte zwischengespeichert und letztlich in Microsoft Azure als Messages an ein Azure IoT Hub weitergeleitet werden. Hiervon aus sollen diese Telemetriedaten dann von beliebigen Endgeräten abgefragt werden können.

Anschluss des Temperatursensors DHT11 an Raspberry Pi 3

Der DHT11-Sensor ist in zwei Varianten, mit 3 oder 4 Anschlüssen verfügbar (Bild 8). Bei der 3-poligen Bauform, bei welcher der Sensor auf einer kleinen Platine untergebracht ist, ist meist bereits ein Vorwiderstand mit verbaut, welcher bei der alternativen Bauform extern beschaltet werden muss. Der nicht beschaltete 4. Anschluss sollte auf Gnd gelegt werden (Bild 9)

Ansteuerung des Sensors durch die Software

Die meisten Sensoren verwenden, soweit diese nicht einfach binär über GPIO angesteuert werden können, entweder das SPI- oder I2C-Protokoll. Es gibt aber auch Sensoren, wie den weit verbreiteten kombinierten Temperatur- und Luftfeuchte-Sensor DHT11 bzw. DHT22, die ein abweichendes, proprietäres serielles Protokoll einsetzen, das von .Net nicht unterstützt wird. Dieses Protokoll kann mit C# nicht in voller Bandbreite zuverlässig umgesetzt werden, da es mit sehr engen zeitlichen Kommunikationsfenstern arbeitet (zwischen 2 und 80 Microsekunden).

Datensicherung auf SD-Karte und Azure IOT Hub

Die SD-Karte, von der das Betriebssystem des Raspberry gebootet wurde, kann auch als Speichermedium für Messdaten verwendet werden.

Das eigentliche Ziel ist es aber, die gemessenen Telemetrie-Daten möglichst unmittelbar über eine Internetverbindung an das Azure IoT Hub in Form von sog. „Messages“ weiterzuleiten. Von dort lässt sich weltweit auf diese Messages von verschiedensten Endgeräten aus zugreifen.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44829310 / Raspberry & Co.)