Microsoft Azure auf dem Raspberry Pi3

Himbeere in der Cloud

31. August 2017, 11:13 Uhr | Von Marcel Bösing, Johannes Förner, Rudi Swiontek und Gerhard Biebl
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Ansteuerung externer Hardware durch den Raspberry Pi

Die 40 I/O-Pins vom Raspberry Pi 3
Die 40 I/O-Pins vom Raspberry Pi 3
© Avnet Silica

Neben den vier USB-Schnittstellen und der HDMI-Schnittstelle bietet der Rasp­berry Pi 3 die Möglichkeit, externe Geräte wie zum Beispiel Sensoren, LC-Displays und LEDs über eine 40-polige Steckerleiste anzusteuern. Die Stecker stellen verschiedene Spannungen und Anwendungsmöglichkeiten bereit. An Pin 1 und 17 liegt eine Spannung von +3,3 V an. 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.

Die Pins mit fest definierter Spannung eignen sich nicht zur Stromversorgung. Externe Schaltungsteile, insbesondere Relais und Motoren, sollten über ein eigenes Netzteil versorgt werden. In Ausnahmefällen mag es möglich sein, dass ein Relais oder auch ein Lüfter direkt am +3,3 V- oder +5 V-Kreis funktionieren kann. Aber das sollte nicht die Regel sein, denn von einem dauerhaft sicheren Betrieb kann man nicht ausgehen. Die Stromentnahme an einem GPIO-Ausgang muss in jedem Fall begrenzt werden. Wenn ein GPIO-Ausgang etwas schalten soll, verstärkt man das Ausgangssignal mit einer Transistorstufe oder einer Treiberschaltung, um den GPIO zu entlasten. Der Gesamtstrom aller GPIOs sollte 50 mA nicht übersteigen. Die gesamte Elek­tronik eines einzelnen Anschlusses ist für maximal 16 mA ausgelegt, bis dorthin treten keine Schäden auf. Alles darüber ist unsicher.

Eine gute Regel
ist, die Ausgangsendstufen eines GPIO zwischen 2 mA und 16 mA zu halten.
Neben den sog. GPIO Pins zur parallelen Kommunikation stehen insgesamt drei unterschiedliche serielle Kommunikationsprotokolle zur Verfügung:

  • SPI (Pin 9, 10 und 11)
  • I2C (Pin 27 und 28)
  • UART (Pin 8 und 10)

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, wie z.B. Bluetooth, Sensors und WIFI.

passend zum Thema

Anwednung in der Praxis

eim vierpoligen Sensor muss ein Widerstand mitverbaut werden
Beim vierpoligen Sensor muss ein Widerstand mitverbaut werden.
© Avnet Silica

ine Anwendungsmöglichkeit des Ras­perry Boards mit Windows 10 IoT Core ist die Nutzung als Messapparat für das Raumklima. Dazu werden Temperatur- und Luftfeuchtigkeitsmesswerte von einem Sensor eingelesen, auf dem User Interface angezeigt, auf der SD-Karte zwischengespeichert und letztlich in Microsoft Azure als Messages an ein Azure IOT Hub weitergeleitet. Von dort können die Telemetriedaten von beliebigen Endgeräten abgefragt werden.

Der DHT11-Sensor ist in zwei Varianten, mit drei oder vier Anschlüssen, verfügbar. Bei der dreipoligen Bauform, bei welcher der Sensor auf einer kleinen Platine untergebracht ist, ist meist ein Vorwiderstand mit verbaut. Bei der alternativen Bauform mus dieser extern beschaltet werden. Der nicht beschaltete vierte Anschluss sollte auf Gnd gelegt werden.

Die meisten Sensoren verwenden, soweit diese nicht einfach binär über GPIO angesteuert werden können, 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 zwei und 80 Microsekunden. Diese Werte können nicht immer zuverlässig eingehalten werden, da C# nicht deterministisch arbeitet. In diesem Fall wählt man den Weg über eine in C++ geschriebenen Bibliothek, die das Protokoll implementiert.

Ein einfaches in WPF verfasstes User Interface übernimmt die Anzeige der gemessenen Daten. Diese können zeitgleich auf einem über I2C angesteuerten zweizeiligen LC-Display sichtbar gemacht werden.

Die SD-Karte von der das Betriebssystem des Raspberry gebootet wurde, kann auch als Speichermedium für Messdaten benutzt werden. In Fällen, in denen ein Internetanschluss nur temporär verfügbar ist, kann es sehr sinnvoll sein, die Daten zu puffern. Das Speichern von Daten auf der SD-Karte ist allerdings nicht direkt vergleichbar mit dem Arbeiten mit Dateien in einer »normalen« .NET-Desktop-Anwendung, da der Zugriff auf den Datenträger nur eingeschränkt über eine virtuelle »Sandbox« möglich ist. Aus diesem Grund kann man auch nicht die üblichen Klassen des Namespace System.IO einsetzen.

Das eigentliche Ziel ist aber, die gemessenen Telemetrie-Daten möglichst unmittelbar über eine Internetverbindung an den Azure IOT Hub in Form von sogenannten „Messages“ weiterzuleiten. Dann können weltweit von allen möglichen Endgeräten aus auf diese Messages zugegriffen werden.

Microsoft Azure

Schematische Darstellung des Azure IoT Hubs
Schematische Darstellung des Azure IoT Hubs
© Avnet Silica

Microsoft Azure ist aus IT-Sicht ein fast schon omnipotentes Konglomerat aus verschiedenen Dienstleistungen, die bei Bedarf gebucht werden können und weltweit zur Verfügung stehen. Von der Bereitstellung von IT-Infrastruktur über Datenbank-, Website- und Webservice-Hosting bis hin zu einfachen Telemetrie-Messaging-Diensten wie Azure IOT Hub wird alles angeboten. Microsoft arbeitet dabei mit dem »Pay as you go«-Modell, bei dem nur in Anspruch genommene Leistungen bezahlt werden.

Azure IoT ist Microsofts Public-Cloud-Plattform für Entwickler und Administratoren, die eigene Software-Anwendungen in der Cloud ausführen möchten. Die Plattform umfasst eine Reihe von Diensten, die einzeln oder in Kombination genutzt werden können. Azure IoT Hub bietet dabei eine einfache und sichere Möglichkeit, Millionen von IoT-Geräte anzuschließen, bereitzustellen, zu verwalten und mit diesen bidirektional zu kommunizieren (Bild 9). Der IoT Hub ist die Brücke zwischen Geräten und entwickelten Lösungen in der Cloud, sodass Daten in Echtzeit gespeichert und analysiert werden können. Dabei werden eine beliebig große Speicherkapazität sowie andere Dienstleistungen bereitgestellt und nutzungsabhängig abgerechnet (automatische Skalierung).

Beim IoT Hub erfolgt die Authentifizierung auf Gerätebasis, damit in jeder IoT-Lösung die gewohnte Vertraulichkeit sowohl von Cloud-zu-Gerät- als auch von Gerät-zu-Cloud-Nachrichten beibehalten wird. Des Weiteren unterstützt die Microsoft Azure Cloud sichere Kommunikationsstandards. TLS (Transport Layer Security) wird immer vorausgesetzt, sodass man sich über HTTPS (HyperText Transfer Protocol Secure) und AMQPS (Advanced Message Queuing Protocol) direkt mit dem Azure IoT Hub verbinden kann. Ist dies nicht möglich, hat man die Möglichkeit, seine Kommunikation mit Hilfe eines Gateways in die entsprechenden Protokolle zu übersetzen.

Alle Geräte können mithilfe der Open-Source-Geräte-SDKs mit Azure IoT verbunden werden. Dabei unterstützen die SDKs verschiedene Betriebssysteme wie Linux, RTOS, Windows und Echtzeitbetriebssysteme sowie mehrere Programmiersprachen wie C++, Node.js, Java, C#, .NET und Python.

Voraussetzung für die Nutzung der Microsoft-Azure-Service-Plattform ist eine Registrierung und die Hinterlegung einer Kreditkarte.

Avnet - Der starke Partner für Azure IoT

Avnet Silica verfügt bereits über ein Konto und stellt sich damit als Azure Cloud Solution Provider (CSP) für industrielle Zwecke zur Verfügung. Mit der Avnet-Lösung erhalten Kunden den kompletten Zugriff auf die Microsoft-Azure-Services und bekommen eine detaillierte monatliche Abrechnung.

Ebenfalls stellt sich Avnet Silica als Partner für Lösungen im Bereich des Azure IoT Hubs oder der IoT Suite bereit und, um die einzelnen Geräte bei Azure anzumelden. Natürlich sind weiterhin die Microsoft-Embedded / IoT-Lizenzen sowie Sever-Lizenzen für den industriellen Gebrauch über Avnet Silica beziehbar.

Die Sicherheit der IoT-Lösungen ist durch eine Authentifizierung auf Geräteebene gewährleistet, sodass nur unter Verwendung der richtigen Anmeldeinformationen mit diesen Geräten kommuniziert werden kann. So lassen sich die Möglichkeiten des IoT voll ausschöpfen.

Die im Beitrag dargestellte Beispielanwendung kann über www.hackster.com im Quellcode heruntergeladen werden. 

Marcel Boesing
Marcel Bösing ist Technical Manager beim Microsoft Embedded Distributor Avnet Silica und dort unter anderem für Design-In-Unterstützung und Beratung zuständig. Avnet Silica vertreibt die genannten Windows-10-IoT-Lizenzen.
© Avnet Silica
Johannes Foerner
Johannes Förner leitet die Bereiche Marketing und Vertrieb bei der Private ptm-Akademie in München. Er verantwortet auch die Entwicklung neuer Schulungsprodukte, wie den Kurs „Windows 10 IoT Core für Raspberry Pi 3 und Anbindung an Azure IoT Hub“, der in Zusammenarbeit mit Rudi Swiontek und Gerhard Biebl entstand.
© Avnet Silica
Rudi Swiontek
Rudi Swiontek ist im Bereich Schulung und Entwicklung tätig. Als erfahrener Produktspezialist ist er auch für die Windows-Embedded-Betriebssysteme zuständig und bietet u.a. Windows-10-IoT-Trainings an.
© Avnet Silica
Gerhard Biebl
Gerhard Biebl ist seit mehr als 37 Jahren als Software-Entwickler und Dozent freiberuflich tätig und ist spezialisiert auf die OOP-Programmiersprachen C++ und C#, für die er eine Reihe von Schulungen anbietet.
© Avnet Silica

  1. Himbeere in der Cloud
  2. Inbetriebnahme des Raspberry Pi 3
  3. Ansteuerung externer Hardware durch den Raspberry Pi

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Avnet Silica

Weitere Artikel zu Microsoft

Weitere Artikel zu Maker-Boards

Weitere Artikel zu IIoT-Protokolle (OPCUA, MQTT, ...)

Weitere Artikel zu IoT / IIoT / Industrie 4.0

Weitere Artikel zu Industrie-Computer / Embedded PC