Teil 1: Internet of Things und Windows 10

Kleine Hardware, große Möglichkeiten mit dem Raspberry Pi & Windows 10 IoT
Keine Kommentare

Der Hype um das Internet der Dinge reißt nicht ab. Im Fokus steht dabei oft der Minicomputer Raspberry Pi. Durchaus interessante Anwendungen lassen sich aber auch mit Windows 10 IoT erstellen. Der Kioskmodus erlaubt es nämlich, stets eine App exklusiv im Vordergrund anzuzeigen. In einer kleinen Artikelserie geben wir Ihnen einen Überblick über den Stand der Dinge und die aktuellen Einsatzmöglichkeiten von Windows 10 IoT auf dem Raspberry Pi.

Das Thema Internet of Things zählt nun schon seit einigen Jahren zu den Hypethemen der IT-Branche. Am Anfang wurde das Interesse stark durch die Aktivitäten der Maker-Szene geprägt. Man könnte es auch als Basteln für die Großen bezeichnen. Auch heute hat das Thema immer noch viel mit Experimentieren und Forschen zu tun, dennoch haben sich in vielen Bereichen funktionierende Anwendungsszenarien etabliert. Gut bekannt sind beispielsweise die vielfältigen Verwendungen im Bereich der Heimautomation. Auch im kommerziellen Umfeld nden sich immer mehr Einsatzmöglichkeiten. Häufig kommt dabei der Minicomputer Raspberry Pi zum Einsatz und als Betriebssystem Raspbian, eine für diese Umgebung spezialisierte Linux-Variante.

Ebenso steht seit einiger Zeit eine spezielle Windows-Variante, Windows 10 IoT, zur Installation auf dem Raspberry Pi zur Verfügung. Dabei handelt es sich nicht um ein herkömmliches Windows, denn es gibt weder einen grafischen Desktop noch die Möglichkeit, klassische Windows-Anwendungen auf diesem System auszuführen. Das würde auch keinen Sinn ergeben, denn der Raspberry Pi ist eher dazu gedacht, spezielle Steuerungsoder Informationsaufgaben zu übernehmen. Und dafür ist Windows 10 IoT unserer Meinung nach, dank der Kioskmodus genannten Darstellungsweise, bestens geeignet. Direkt ausführbar sind die Apps für die Universal Windows Platform (UWP), in der die Anwendungen im Vollbildmodus erscheinen.

Artikelserie

  • Teil 1: Internet of Things und Windows 10
  • Teil 2: Eine UWP-App für den Raspberry Pi

Orientieren werden wir uns dabei an der Fragestellung, wie gut Windows 10 IoT auf den Modellen Raspberry Pi 2 und 3 läuft, wie komfortabel der Entwicklungsprozess mithilfe von Remotezugriff und Visual Studio 2017 ist und ob das System sich noch im Versuchsstadium befindet oder sich bereits produktionsfähige Anwendungen mit ihm bauen lassen. Ebenso sehen wir uns an, welche Möglichkeiten existieren, um externe Hardware an den Raspberry Pi anzuschließen und mit ihnen über ein Netzwerk zu kommunizieren. Beginnen werden wir mit den Systemvoraussetzungen und der Installation des Betriebssystems. Danach interessiert uns, wie man Apps für den Raspberry Pi mithilfe von Visual Studio 2017 programmiert und auf dem Minicomputer installiert und testet. Konkret wollen wir im zweiten Teil eine Beispiel-App für den Raspberry Pi mit Windows 10 IoT entwerfen. Bevor jedoch die technische Seite im Vordergrund steht, sollte man beim Thema IoT genau überlegen, was die konkreten Anforderungen an das Zielsystem sind. Hiernach sind die Hardware und das Betriebssystem auszuwählen und auf der Basis dieser Entscheidungen ist dann die App zu programmieren.

Anforderung im IoT-Umfeld

Die Anforderungen sind natürlich je nach Einsatzzweck des IoT-Vorhabens unterschiedlich. Ein Raspberry Pi wird meist dann einsetzt, wenn am Ort des Geschehens eine gewisse Rechenpower benötigt wird. Mit seinen Anschlussmöglichkeiten bietet ein solcher Minicomputer nahezu die gleichen Möglichkeiten, wie man sie von einem größeren Computer gewohnt ist. Ein externer Monitor kann über den HDMI-Anschluss hinzugefügt werden. Zwar lassen sich über die USB-Schnittstellen Tastatur und Maus anschließen, sind aber spätestens nach der Installation und Konfiguration meist nicht mehr vorhanden. Weitere Hardware kann zusätzlich über die I/O-Schnittstellen angesteckt werden, oft externe Bildschirme oder Displays wie ein kleines grafikfähiges LCD sowie für die Eingabe, sofern notwendig, ein Touchmonitor. Der obligatorische Netzwerkzugang funktioniert über die vorhandene LAN-Buchse, ersatzweise über einen externen WLAN -Stick (Raspberry Pi 2 Model B) oder über das auf der Platine verbaute WLAN-Modul (Raspberry Pi 3 Model B).

Raspberry Pi: Ein kleiner Überblick

Der Raspberry Pi ist ein wirklich kleiner Computer, seine Fläche umfasst kaum mehr als eine Kreditkarte. Als Grundausstattung für die Inbetriebnahme benötigt man weiterhin ein Netzteil (5 V und mindestens 1 A), Tastatur, Maus, Monitor mit HDMIAnschluss (Full-HD), HDMI-Kabel, LAN-Kabel, einen WLANStick und eine microSD-Karte. Diese sollte mindestens 8 GB Speicherplatz aufweisen. Die Geschwindigkeit bemisst sich nach einer Klasseneinteilung (Class 4, 6 oder 10). Ein höherer Wert steht dabei für eine höhere Übertragungsgeschwindigkeit. Da diese bei einer SD-Karte gegenüber einer Festplatte bereits stark reduziert ist, sollte man auf ein möglichst schnelles Modell zurückgreifen. Aus Beschaffungs- und Kostengründen kann es sich lohnen, ein Gesamtpaket zu erwerben. Auf dem Markt sind mehrere Versionen des Raspberry Pi vorhanden. Das aktuelle Modell Raspberry Pi 3 Model B empfiehlt sich bei einem Neueinstieg, für die meisten Vorhaben sind aber auch die Versionen ab Raspberry Pi Model 2 B geeignet. Wichtig ist, dass Windows 10 IoT erst ab diesem Modell lauffähig ist. Die aktuellen Modelle verfügen über folgende externe Anschlüsse (Abb. 1).

  • Micro-USB-Anschluss zur Stromversorgung (5 V, 600 mA bis 2 A, ergibt 3 bis 10 W). Der Stromverbrauch hängt vom Leistungsbedarf der USB-Geräte ab.
  • Viermal USB-2.0-Anschlüsse für Tastatur, Maus und andere USB-Geräte. Die Modelle ab Raspberry Pi 2 B und Raspberry Pi 1 B+ können über diese USB-Anschlüsse insgesamt 600 mA weitergeben, mit einer Zusatzoption 1 200 mA. Das erfordert ein entsprechend dimensioniertes Netzteil sowie eine spezielle Option in der Datei /boot/config.txt.
  • HDMI-Ausgang für Bild und Ton, Auflösung bis zu 1 920 x 1 200 Pixel, d. h. Full-HD.
  • Kombinierter Audio-/Videoausgang über einen vierpoligen 3,5-mm-Klinkenstecker. Wird das Videosignal nicht benötigt, kann das Audiosignal mit jedem handelsüblichen dreipoligen 3,5-mm-Klinkenstecker übertragen werden.
  • microSD-Slot (SDHC)
  • Ethernetanschluss (10/100 Mbit).
  • Steckerleiste mit 40Pins, der sogenannte J8-Header, für allgemeine Zwecke (General Purpose Input/Output inklusive UART, I2C-Bus, SPI-Bus, I2SAudio).
Abb. 1: Der Raspberry Pi bietet alle wichtigen Anschlussmöglichkeiten eines richtigen PCs: hier das Modell 2 B mit eingestecktem externen WLAN-Modul

Abb. 1: Der Raspberry Pi bietet alle wichtigen Anschlussmöglichkeiten eines richtigen PCs: hier das Modell 2 B mit eingestecktem externen WLAN-Modul

Der beschriebene Systemaufbau ist in Abbildung 2 zu sehen. Dargestellt ist die Verwendung eines Raspberry Pi als Informationssystem. Auf einem großen externen Monitor erscheinen automatisch unterschiedliche Informationen. Denkbar sind aktuelle Termine, die Raumbelegung in einem Gebäudekomplex und die aktuellen Finanzdaten genauso wie eine Fotogalerie mit aktuellen Bildern aus dem letzten Urlaub, die Wetteranzeige, lokale Nachrichten oder die Abfahrtszeiten der Straßenbahn. Alle Informationen werden nicht fest verdrahtet, sondern dynamisch über Cloud-Dienste bereitgestellt. Eine solche Aufgabe basiert natürlich auf eigens dafür programmierter und auf dem Raspberry Pi eingerichteter Software. Wie aber werden Anpassungen an der Konfiguration der App vorgenommen – ohne Tastatur und Maus? Hier ist zwischen einer Systemkonfiguration und Anpassungen zu unterscheiden, die der Anwender vornimmt. Der Zugriff auf die Systemeinstellungen des Raspberry Pi ist via Remote, Webinterface oder SSH möglich. Dazu gehören die Einbindung in ein neues Netzwerk und die Installation oder der Neustart einer App. Für Anpassungen seitens der Benutzer gibt es ebenfalls unterschiedliche Optionen, beispielsweise über Touch interaktionen direkt am Bildschirm, der dann gut erreichbar sein und über solch eine Funktion verfügen muss. Auch setzt dies eine entsprechend programmierte App voraus. Eine andere Option ist die Steuerung über ein mobiles Gerät, ein Smartphone oder ein Tablet, um damit die Konfigurationsdateien für die App auf dem Raspberry Pi zu ändern. Im einfachsten Fall lassen sich neue Dateninhalte allerdings über eine Webschnittstelle hinzufügen.

Abb. 2: Systemaufbau für eine Infoscreen-Anwendung

Abb. 2: Systemaufbau für eine Infoscreen-Anwendung

Wir meinen, dass für derartige oder ähnliche Anforderungen das Betriebssystem Windows 10 IoT gut geeignet ist und durchaus entscheidende Vorteile gegenüber einem Linux-Derivat besitzt, die wir im folgenden Abschnitt aufzählen möchten. Darunter fällt, dass auf dem Raspberry Pi ab Modell 2 B Apps für die UWP laufen, die sich bezüglich User Interface und User Experience bestens an die Belange von IoT-Szenarien anpassen lassen. Beispielsweise sind die UI-Controls auch für eine Touchbedienung optimiert. Das User Interface wird mittels XAML deklarativ erstellt. Vielfältige grafische Optionen und eine erprobte Programmstruktur auf der Basis des Model-View-Controller-Musters sind damit möglich. Auch die fokussierte und alleinige Anzeige einer einzigen App im Kioskmodus ist für viele Anforderungen ideal, da der Nutzer direkt meist nur mit einer App arbeiten möchte und nicht wie bei einer klassischen Desktopoberfläche eine komplette Arbeitsumgebung braucht. Apps für die UWP basieren auf .NET Core und damit auf einer leistungsfähigen Plattform. Alle Möglichkeiten der Programmierung, die für eine App der UWP auf den großen Geräten zur Verfügung stehen, existieren auch für Windows 10 IoT. Als Entwicklungsumgebung ermöglicht das erprobte Toolset mit Visual Studio und Blend for Visual Studio ein effizientes Entwickeln. Mithilfe leistungsfähiger und unkomplizierter Tools gelingt eine einfache Fernsteuerung durch Remoteadministration von Raspberry Pi und Windows 10 IoT. An den Raspberry Pi über den GPIO-Port angeschlossene zusätzliche Hardware kann relativ leicht über die App angesprochen werden. Für die Programmierung steht dazu eine eigene Bibliothek bereit.

Praxistipp

Windows 10 IoT und der Raspberry Pi werden stetig weiterentwickelt. Erst ab Raspberry Pi 3 Model B ist WLAN mit auf dem Board verbaut. Haben Sie jedoch einen Raspberry Pi 2 Model B, ist dieser für Windows 10 IoT genauso geeignet. Meist ist jedoch auch hier WLAN gewünscht, um im Praxiseinsatz kein Kabel zum Netzwerk zu benötigen. Es gibt sehr kleine USB-WLAN-Dongles zu einem geringen Preis. Unsere Erfahrungen haben gezeigt, dass diese, in Abhängigkeit von Treiber und Modell, nicht immer direkt von Windows 10 IoT erkannt werden. Daher sollte für die Erstkonguration stets eine LAN-Verbindung hergestellt werden, um den jeweils aktuellen Treiber von der Herstellerseite, z. B. den häufig verwendeten USB-WLAN-Dongle von Edimax, herunterzuladen. Einen Treiber für den WLAN-Stick kann man über die Kommandozeile installieren. Die einzelnen Schritte sind beispielhaft auf der Edimax-Webseite beschrieben. Hier gilt: Geben Sie nicht gleich auf, in den meisten Fällen bekommt man den WLANStick auch unter Windows 10 IoT zum Laufen.

Windows 10 auf dem Raspberry Pi

Grundsätzlich laufen Inbetriebnahme und Installation eines Betriebssystems auf einem Raspberry Pi, oder präziser ausgedrückt, auf die ausgewählte SD-Karte, wie nachfolgend beschrieben ab. Zunächst steht die Verkabelung des Zwerges an, also der Anschluss von Stromversorgung, Monitor, Tastatur und Maus. Für den Zugriff auf das Internet verwenden wir eine feste LAN-Verbindung. Da wir das Betriebssystem noch nicht auf die SD-Karte geschrieben haben, verbinden wir das Netzteil noch nicht mit der Steckdose, denn der Raspberry Pi verfügt über keinen Ein-/Ausschalter und startet sofort, wenn wir ihn mit Strom versorgen. Die Formatierung der SD-Karte ist theoretisch nicht nötig, jedoch hat die Praxis gezeigt, dass Tools wie Image Writer seltener Probleme verursachen, wenn die Karte formatiert ist. Wir downloaden die Installationsdatei, die für das gewählte Betriebssystem benötigt wird, und erstellen anschließend eine Image-Datei. Der für Windows am häufigsten genutzter Image Writer ist das Programm Win32 Disk Imager, das mit Administrationsrechten ausgeführt werden sollte, wobei aufgrund der Formatierung des Zielmediums eine entsprechende Sorgfalt notwendig ist. Zur Überprüfung der Integrität des Downloads klickt man auf die Option Md5Hash. Nach dem erfolgreichen Übertragen des Betriebssystems auf die SDKarte wird diese in den Aufnahmeschacht eingesetzt. Der Raspberry Pi kann jetzt gestartet werden. Nachdem die Stromversorgung angeschlossen wurde, lädt der Raspberry Pi das Betriebssystem, und die LEDs beginnen zu leuchten. Je nach Betriebssystem können Installationsvorgang und Ersteinrichtung mehrere Minuten dauern. Anschließend steht Ihr Raspberry Pi für die weitere Arbeit zur Verfügung.

Sehen wir uns diese Schritte nun konkret für Windows 10 IoT an. Zum Download gehen Sie auf die Developer-Seite von Windows 10 IoT und laden dort das Dashboard herunter. Nach dem Herunterladen der Set-up-Datei wird die komplette Anwendung nachgeladen. Installieren Sie das Dashboard und verdrahten Sie den Raspberry Pi zwischenzeitlich in der Testumgebung. Dazu wird er an Tastatur, Maus, LAN und Monitor (über HDMI) angeschlossen. Ein Hinweis: Achten Sie darauf, dass es sich um einen Raspberry Pi 2 Model B oder höher handelt, denn der Raspberry Pi 1 ist hierfür nicht geeignet. Bereiten Sie dann die SD-Karte zur Installation von Windows 10 IoT vor. Starten Sie dazu das Dashboard und wählen Sie den Menüpunkt Neues Gerät einrichten (Abb. 3). Wählen Sie den richtigen Gerätetyp (Raspberry Pi 2 oder 3) und das Ziellaufwerk, in diesem Fall die Speicheradresse der SD-Karte. Hilfreich ist, dass Sie Ihr aktuelles WLAN-Profil direkt mit auf die SD-Karte schreiben lassen können. Nachdem Sie einen Namen für den Raspberry Pi und ein neues Administratorkennwort vergeben haben, akzeptieren Sie noch die Lizenzbedingungen und starten den Download. Das Beschreiben der SD-Karte erfolgt komfortabel aus dem Dashboard, Zusatztools sind nicht notwendig. Legen Sie danach die SD-Karte in den Raspberry Pi und starten Sie ihn. Die Ersteinrichtung dauert einige Augenblicke. Wählen Sie als Sprache Deutsch. Danach sehen Sie den Startbildschirm von Windows 10 IoT. Die Konfiguration des Raspberry Pi erfolgt vom PC aus über das Dashboard bzw. die Weboberfläche. Funktioniert Windows 10 IoT auf Ihrem Raspberry Pi, sind Sie bereits ein großes Stück weiter. Viel zu sehen gibt es aber noch nicht.

Abb. 3: Die Konfiguration von Windows 10 IoT im Dashboard

Abb. 3: Die Konfiguration von Windows 10 IoT im Dashboard

Apps auf dem Großen für den Kleinen bauen

Jetzt kommen wir dazu, Apps für die UWP zu bauen. Das Ganze ist nicht kompliziert. Unser Entwicklungsrechner muss nur unter Windows 10 laufen. Erledigen Sie noch offene Updates. Das ergibt mehr Sinn als man zuerst vermutet, denn auf diese Weise bekommen Sie gleich auch die notwendigen Systembibliotheken, um für die richtige Version der Universal Windows Platform programmieren zu können. Als Entwicklungsumgebung verwenden wir Visual Studio 2017, hier genügt die kostenfreie Community-Edition. Um Probleme mit der Kompatibilität zu vermeiden, sind auch an dieser Stelle nach Möglichkeit alle Updates einzuspielen. Starten Sie nochmalig den Installer von Visual Studio (Abb. 4) und stellen Sie sicher, dass das Workload Entwicklung für die universelle Windows-Plattform ausgewählt ist. Am rechten Rand des Dialogfelds können Sie zusätzlich noch weitere SDK-Versionen für die UWP installieren. Das kann dann notwendig sein, wenn die SDK-Version des Entwicklungsrechners von der unterstützten Version des Projekts abweicht. Je mehr größere Updates Windows 10 bereitstellt, desto genauer ist auf die SDKVersion zu achten.

Abb. 4: Entwicklungsumgebung über den Visual Studio Installer einrichten

Abb. 4: Entwicklungsumgebung über den Visual Studio Installer einrichten

Nach dem Start von Visual Studio 2017 müssen Sie noch die Vorlage zum Erstellen von Apps für Windows 10 IoT installieren. Dazu gehen Sie in den Menüpunkt Extras | Extensions and Updates, suchen nach den Windows IoT Core Projekt Templates und installieren sie. Nach der Installation ist ein Neustart von Visual Studio notwendig. Jetzt ist unsere Entwicklungsmaschine bereit und Sie können einen ersten Versuch wagen, eine App zu erstellen und auf den Raspberry Pi zu übertragen. Dazu legen wir ein neues Projekt an und wählen als Vorlage Universell leere App. Eine solche App läuft grundsätzlich auf allen Windows-10-Geräten. Wir wollen sie jedoch per Remote auf den Raspberry Pi bringen. Als Zielgerät wählen wir in Visual Studio deshalb RemoteComputer. Im dann erscheinenden Dialogfeld können wir unseren Raspberry Pi auswählen, sofern er sich im gleichen lokalen Netz befindet. Wichtig: Ändern Sie den Typ der Applikation von x86 auf ARM, denn auf einem Raspberry Pi können nur ARM-Apps ausgeführt werden. Die Erstübertragung dauert auch hier einen Moment. Dann wird die App auf dem Raspberry Pi gestartet.

Aus der Ferne

Notwendige Test- und Konfigurationsarbeiten am Raspberry Pi als IoT-Gerät wollen wir ausschließlich remote, ohne Maus und Tastatur, durchführen. Hierzu stehen verschiedene Möglichkeiten zur Verfügung: über das Webinterface, die PowerShell oder den IoTRemoteclient. Sobald Windows 10 IoT auf dem Raspberry Pi läuft und via Netzwerk erreichbar ist, kann man eine Verwaltungsoberfläche im Browser öffnen, zu der man über die IP-Adresse des Raspberry Pi gelangt. Hier gibt es die folgenden Optionen: Apps (Apps Starten, Beenden, Installieren), Processes (laufende Prozesse ansehen), Performance (Auslastung für CPU und Arbeitsspeicher ansehen), Debug (Memory Dumps von Prozessen erstellen und Fehler nachverfolgen), ETW Tracing (wird für Treiber verwendet, um Abläufe zu verfolgen), Perf Tracing (Performance Traces erstellen), Device Manager (Geräte mit Details ansehen), Networking (WLAN-Geräte und Verbindungen verwalten) und System neustarten oder herunterfahren. Eine Alternative stellt die Steuerung des Raspberry Pi auf Kommandozeilenebene dar. Weiterhin kann auch der Windows Iot Remote Client genutzt werden. Die App richtet einen Remotezugriff auf die Oberfläche des Raspberry Pi ein, die Sie über den Windows Store kostenfrei installieren können. Per Remote lässt sich der Raspberry Pi vom Entwicklungsrechner aus steuern. Das funktioniert von allen Geräten, auf denen eine Windows-10-App läuft, auch von einem entsprechenden Smartphone oder Tablet. Eine schöne Sache, um ein Bild vom Aussehen der App vom Zielgerät auf den Entwicklungsrechner zu projizieren. Ist auch Interaktion via Toucheingabe vorgesehen, kann man diese wunderbar testen, ohne den Raspberry Pi an einen externen Bildschirm anschließen zu müssen. Windows Iot Remote Client ist auch dann gut geeignet, falls der Raspberry Pi und der Entwicklungsrechner sich an unterschiedlichen Orten befinden. Die Integration in Visual Studio funktioniert dank des UWP-Konzepts wunderbar. Zum Erstellen von Apps für den Raspberry Pi und Windows 10 IoT gibt es also eine sehr brauchbare Entwicklungslandschaft.

Fazit und Ausblick

Wir finden, dass Windows 10 IoT reif für die produktive Verwendung ist. Für viele Zwecke dürfte der Kioskmodus gut geeignet sein. IoT-Anwendungen verlangen nach anderen Bedienszenarien als herkömmliche Desktopsoftware. Der gelegentlich angeführte Mangel, dass Windows 10 IoT kein vollwertiges Windows 10 sei, greift unseres Erachtens nicht. Wir wollen keine Desktopapplikationen auf dem Raspberry Pi ausführen, vielmehr geht es um Software, die genau die speziellen Anforderungen an das IoT-Szenario erfüllt. Die Entwicklung erfolgt mit Visual Studio komplett in bekannter, bewährter und professioneller Umgebung.

Wie geht es weiter? Im zweiten Teil der Artikelserie werden wir uns die Möglichkeiten der UWP auf dem Raspberry Pi en détail ansehen und dabei eine Menge programmieren: das Design der App, den Zugriff auf Cloud-Dienste und die Anbindung von externen Datenprovidern. Das Ziel ist es, einen bunten Strauß von Möglichkeiten zu haben, um eigene Ideen für das Internet der Dinge zu realisieren. Bis dahin wünschen wir viel Spaß beim Experimentieren mit dem Raspberry Pi!

Entwickler Magazin

Entwickler Magazin abonnierenDieser Artikel ist im Entwickler Magazin erschienen.

Natürlich können Sie das Entwickler Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -