Windows 10 IoT auf dem Raspberry Pi

image
Endlich war es letzte Woche auf der //build-Konferenz soweit, Microsoft hat die Windows 10 IoT Version (auch) für den Raspberry B+ zur Verfügung gestellt. Nicht, dass dieser mit Linux nicht laufen würde, und auch C#-Code lässt sich hervorragend mit Visual Studio am PC erstellen und mit einer Samba Verbindung ist das Deployment hervorragend einfach (da es eigentlich entfällt). Aber dennoch. Wenn sich Microsoft schon die Mühe macht und uns ein OS gratis zur Verfügung stellt, dann probieren wir es doch einfach gleich einmal aus.

Die Ankündigung und Links dazu konntet ihr ja schon an dieser Stelle in Gerhard’s Blog-Eintrag lesen:
https://codefest.at/post/2015/05/05/Unsere-neuesten-Windows-10-Gerate-sind-da-Die-Rasperry-Pi-2.aspx

Bevor wir loslegen, was wird denn überhaupt benötigt?

· Ein PC mit Windows 10 build 10074 (https://windows.microsoft.com/de-at/windows/previewiso)
· Visual Studio 2015 RC (https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx)
· Ein Raspberry Pi B+
· Eine Micro-SD Karte >= 8GB
· Netzwerkkabel (zum Raspberry PI B+, WLAN wird derzeit nicht unterstützt)
· Optional HDMI Kabel (für den Raspberry PI B+)
· Optional das Sunfounder Project Super Starter Kit for Raspberry Pi Model B+

Solltet Ihr noch keinen Raspberry euer eigen nennen und ihr den erst bestellen müsst, achtet darauf, dass ihr die neueste Version bestellt. Diese erkennt man daran, dass diese einen 40 poligen Anschluss
für das Flachbandkabel aufweist (zuvor waren es nur 26 Pins).
image
Abbildung 1: RaspBerry PI B+

Hier gibt es übrigens möglicherweise auch noch einen Raspberry Pi B+ gratis für euch:
https://codefest.at/post/2015/03/20/Raspberry-Pi-2-Model-B-geschenkt-bekommen.aspx

Sobald Windows 10 build 10074 auf eurem PC installiert ist und der Rest vorhanden ist kann es auch schon losgehen.

Installation des Raspberry Pi

Derzeit kann die Micro-SD-Karte für den Raspberry Pi nur unter Windows 10 vorbereitet werden.
Microsoft stellt uns eine Zip-Datei (Windows_IoT_Core_RPI2_BUILD.zip) auf der Windows IoT Webseite
zur Verfügung (https://ms-iot.github.io/content/GetStarted.htm). Um zum Download zu gelangen, muss
zuerst der Raspberry Pi ausgewählt werden.

image
Abbildung 2: Microsoft IoT für den Raspberry Pi

Und ab jetzt ist der detaillierten Beschreibung Folge zu leisten. Wurde die Micro-SD-Karte erfolgreich aufgesetzt und im Raspberry Pi untergebracht, dann kann es auch schon losgehen mit dem ersten Boot
von Windows IoT. Dazu rate ich etwas zur Geduld, da der Bildschirm hier längere Zeit – d. h. durchaus ein paar Minuten - dunkel bleibt. Sollte die Installation erfolgreich gewesen sein, dann sind nun zwei
Dinge zu sehen:

1. Auf dem Monitor, den ihr mit dem Raspberry Pi verbunden habt, sieht das so aus:

image
Abbildung 3: Microsoft IoT Start-Screen auf dem Raspberry Pi

2. Auf dem PC sollte das Windows IoT Core Watcher Tool laufen, das mit der WindowsDeveloperProgramForIoT.msi aus der Windows_IoT_Core_RPI2_BUILD.zip installiert wurde. Dieses muss eine erfolgreiche Verbindung zum Raspberry Pi anzeigen.

image
Abbildung 4: Windows IoT Core Watcher Applikation am Desktop

Jetzt kann es auch schon losgehen mit dem Anprogrammieren des Raspberry Pi unter Windows IoT.

Ein Beispiel mit C# und VS 2015 RC

Beispielcode von Microsoft für den Raspberry Pi unter Windows IoT finden wir auf GitHub, genauer gesagt unter https://github.com/ms-iot/samples. Dort ist ein Beispiel zu finden, mit dem ein erster Test
der Verbindung zwischen dem Windows 10 Developer PC mit Visual Studio 2015 RC und dem Raspberry Pi mit Windows IoT möglich ist, nämlich das Blinky Projekt.

image
Abbildung 5: Microsoft IoT Beispiele von GitHub

Dieses muss in Visual Studio 2015 RC geöffnet werden und die MainPage.xaml.cs Datei am Ende editiert werden.
image
Abbildung 6: Blinky-Beispiel in Visual Studio 2015

Und zwar soll nicht der GPIO5 Port angesprochen werden, sondern die interne gelbe LED im Raspberry Pi, diese hat die Pin ID 47.

Am Ende der Datei ist somit die Zeile 140 anzupassen, anstatt der 5:

private const int LED_PIN = 5;

wird der Wert 47 zugewiesen:

private const int LED_PIN = 47;

Jetzt wird es aber Zeit zu überprüfen, ob alles geklappt hat, dazu muss das Projekt noch gestartet werden, dazu ist in Visual Studio noch das Device zu konfigurieren. Dazu muss man auf Device clicken und Remotecomputer in der DropDown-Liste anwählen.
image
Abbildung 7: Auf Remotecomputer umstellen

Es öffnet sich ein neues Fenster und hier ist der Name (oder die IP-Adresse) des Raspberry Pi einzutragen. Die Windows IoT Core Watcher Applikation zeigt beides an, ich habe den Namen eingetragen und keinen Authentifizierungsmodus gewählt.
image
Abbildung 8: Remoteverbindung zum Raspberry Pi einrichten

Nach dem Auswählen gedrückt wurde, wechselt die Anzeige in Visual Studio auf Debug, ARM, Remotecomputer.

image
Abbildung 9: Remotecomputer konfiguriert, fertig zum Starten

Nun kann es aber wirklich losgehen, einfach den grünen Pfeil bei Remotecomputer drücken und im Ausgabefenster von Visual Studio sieht man, dass noch die .NET Runtime auf den Raspberry Pi muss. Dies geschieht nur einmal und dauert ein paar Sekunden.

image
Abbildung 10: Deployment

Danach geht es aber so richtig rund und das Resultat lässt sich durchaus sehen, die gelbe LED am Raspberry Pi Board beginnt zu blinken. Fantastisch!

image
Abbildung 11: Es blinkt am Raspberry Pi!

Am Monitor des Raspberry Pi sieht das übrigens so aus:

image
Abbildung 12: Auch am Monitor ist einiges los!

Komplexere Anwendungen mit dem Raspberry Pi und Windows IoT

Wer mehr machen möchte, dem empfehle ich sich das GPIO Extension Board für den Raspberry Pi zuzulegen, das ist übrigens in dem eingangs erwähnten Kit von Sunfounder enthalten, es ist aber darauf zu achten, dass das Kit für den Raspberry Pi B zu bestellen, da die älteren Kits nur das Board mit den 26 Pins beinhaltet, es wird aber das mit den 40 Pins benötigt! Verbunden mit dem Raspberry Pi sieht das dann so aus:

image
Abbildung 13: Sunfounder GPIO Extension Board

Ich habe dann eine einfache Steckübung gebaut. Und zwar habe ich an ein paar GPIOs einen 270 Ohm Widerstand und eine LED angebunden. Trickreich ist hier nur, dass das lange Beinchen der LED zu + führt
(und das kürzere Beinchen gegen Masse).

image
Abbildung 14: Ein paar mehr LEDS (langes Beinchen der Led ist +)

Um die einzelnen GPIO Ports zu verkabeln und einzeln anzusprechen ist das Extension Board durch seine Beschriftung sehr hilfreich.

 imageimage
Abbildung 15: Sunfounder GPIO Extension Board inkludiert im
Sunfounder Project Super Starter Kit for Raspberry Pi Model B+

Auch die Microsoft Beispiele dürften dieses Set verwenden, da die Code-Beispiele nahezu identisch sind, mit denen, die in dem Sunfounder Set enthalten sind, und somit auch die Bauteile, die benötigt werden. Das Beispiel im Verzeichnis I2CAccelerometer verwendet das ADXL345 Modul, welches im Stande ist die Beschleunigung zu messen. Die Verdrahtung ist denkbar einfach, das Ergebnis am Monitor beeindruckend.

Raspberry Pi                 ADXL345 Modul

GND (Pin6)                       GND

3.3V (Pin1)                       3.3V

SCL1 (Pin5)                      SCL

SDA1 (Pin3)                      SDA

3.3V (Pin1)                       CS

GND (Pin6)                       SD0

 imageimage
Abbildung 16: Beschleunigungssensor verwenden

Wenn man das ADXL345 Modul bewegt ändern sich die angezeigten Werte dementsprechend.

Entwickeln ohne GPIO Extension Board

Es geht aber natürlich auch ohne das GPIO Extension Board, dann ist folgendes Bild nützlich, welches die Pin Nummer am Raspberry Pi anzeigt und den Namen des Ausgangs. image
Abbildung 17: GPIO und Pin-Belegung am Raspberry PI

Wenn man den Raspberry Pi umdreht, dann ist der Pin 1 sehr gut zu erkennen, da die Lötstelle hier quadratisch ist und nicht rund, wie die anderen 39 Pins. Oder man vertraut mir und verwendet einfach untenstehendes Bild um die Kabel direkt zu verbinden.

image
Abbildung 18: Pins am Raspberry Pi B+ (40 Pins!!)

Zusammenfassung

Der Raspberry Pi B+ macht richtig Spaß, wenn man ein kleines Faible für Elektronik hat, und jetzt klappt der Zugriff ohne Linux-Kommandos direkt aus Visual Studio heraus. Ich freue mich darauf weitere IoT
Projekte mit dieser Kombination zu entwickeln. Ich hoffe das gilt auch für euch!


Berndt Hamböck ist seit 2007 MCT, darüber hinaus befasst er sich mit Lösungen für komplexe Anwendungsszenarien mit den neuesten Microsoft Technologien. Die Erfahrungen aus der Projektarbeit gibt er in Vorträgen und Trainings weiter und begleitet Entwicklerteams in Softwareunternehmen bei Projekten im Microsoft Umfeld.

Das ist ein Gastbeitrag. Die Meinung des Autors muss sich nicht mit jener von Microsoft decken. Durch den Artikel ergeben sich keinerlei Handlungsempfehlungen. Microsoft übernimmt keine Gewähr für die Richtigkeit oder Vollständigkeit der Angaben.