Windows 10 on Raspberry PI 2

Het mooie van Windows 10 op zowel je Raspberry PI 2 als op je computer/laptop is dat je op een manier kunt te ontwikkelen. Een Universal Windows App voor je laptop Windows zal zonder veel aanpassingen kunnen draaien op een Raspberry PI 2.

Het is heel eenvoudig. In Visual Studio maak je een Universal Windows App. Door F5 kun je hem op je computer testen. Dat duurt even, maar dan zul je zien dat deze app gewoon start.

Om dezelfde app op de Raspberry PI te starten moet een aantal stappen doorlopen. Je normale computer is een x86/x64 solution Platform. Een Raspberry PI is gebaseerd op ARM technologie net als vele mobile devices.

image

Als je het solution Platform ARM gekozen hebt, dan zal Visual Studio kiezen voor Device. Dat klopt als je een Universal Windows App maakt voor een Windows 10 Phone of Tablet. Voor een Raspberry PI moet je kiezen voor Remote Machine.

Daarna moet je wat gegevens van de Raspberry PI opgeven. Vaak zal de Raspberry PI ook automatisch gedetecteerd worden.

image image

Dan weer F5. Visual Studio gaat builden, packagen en Deployen.

image

Zonder enige aanpassingen aan de code kun je dezelfde app draaien op een Raspberry PI 2. Leuk he. One OS voor alle devices.

In onderstaande filmpje demonstreer ik het live.

.NET on Raspberry PI 2

In een vorige blogpost heb ik verteld over Windows 10 IoT Core. Grote voordeel is, dat je in C# kunt programmeren en er een grafische schil om heen hebt. Maar het gros van de IoT devices zullen niet aan een monitor hangen of interactie van de gebruiker verwachten. De meeste IoT devicesverzamelen data en geven deze af of controleren een omgeving en verwachten stuurinformatie.

Ondanks dat er verschillende goede redenen zijn om gebruik te maken van Windows 10 IoT Core, het is voor een Microsoft omgeving niet perse nodig. Ook op een NOOBS (New Out of the Box Software) OS kun je prima .NET gebruiken.

Al enige jaren is het Mono project gaande en daar ligt de key van multi platform.

Op je Raspberry PI 2 kun je dan: sudo apt-get install Mono-complete doen. Daarmee wordt Mono op je Rasp gezet.

Met het krachtige Owin mechanisme kun je een ASP.NET website hosten op je Rasp.

6-14-2015 12-45-22 PM

Het resultaat:

6-14-2015 12-23-21 PM

Het is een Webserver waarin je ook een WebApi kunt hosten.

6-14-2015 12-46-19 PM

Het resultaat:

6-14-2015 12-44-29 PM

Best handig. Ik heb ook een voorbeeld waarbij een Raspberry PI 2 informatie in een Azure Storage queue zet. Daarover later meer, want hier horen meerdere bedenkingen bij.

Windows 10 IoT Core

Sinds de //Build/ conference is een technical preview van Windows 10 for Raspberry PI 2 beschikbaar. Daarmee komt de belofte van Microsoft (Windows op alle devices) een heel stuk dichterbij.

Uiteindelijk zullen er drie versies van Windows 10 IoT beschikbaar zijn: For Industry Devices, Mobile Devices en Core. Het installeren van de Windows 10 IoT Core op een Raspberry PI 2 is heel eenvoudig.

Meer informatie op http://windowsondevices.com en demo’s http://ms-iot.github.io/content/win10/StartCoding.htm.

win10_core_01

Als je deze richtlijnen volgt, dan zie deze schermen langs komen. De eerste opstarten van Windows 10 IoT Core kan iets langer duren, er worden dan allerlei instellingen gedaan. No worries daarna gaat het echt veel sneller.

WP_20150516_17_33_01_ProWP_20150516_17_33_21_ProWP_20150516_17_35_13_Pro

Als het allemaal klaar is, dan zie je dit.

win10_core_02

In deze vroege versie zijn er aantal dingen nog niet op orde, maar dat zal wel gauw veranderen.

Op een Windows 10 machine met Visual Studio 2015 kun je dan een ‘normale’ Windows Universal App maken. Deze kun je dan deployen naar je Raspberry PI 2 en standaard debug F5 experience werkt dan gewoon.

 win10_core_03

Er zijn in de IoT makers world allerhande componentjes te krijgen en een aantal werken ook gewoon op de Raspberry PI 2 met Windows 10 IoT Core. Kijk goed naar de voorbeelden op http://windowsondevices.com.

WP_20150522_11_21_17_ProWP_20150522_11_25_41_Pro

Inmiddels heb ik een aantal componentjes in bestelling staan en zal ik in een latere blogpost terug komen met uitgebreidere voorbeelden. Dit is leuk Knipogende emoticon

IoT (3) Intel Galileo

In mijn vorige blogpost heb ik al verteld over Microsoft Windows op een Intel Galileo board.  Ik heb toen laten zien dat je een display kunt aansturen met C++ code. Niet lang daarna kwam de tweede generatie van het Galileo board. Deze was weer iets krachtiger.

In mijn vorige blogpost moest ik het LCD display via een breadboard koppelen aan mijn Galileo. Niet ongebruikelijk in de Arduino wereld, maar mooi is anders en erg foutgevoelig voor niet heel technische mensen. Daarom heb ik een Seeed Grove Starter Kit gekocht. Het grote voordeel van deze set, er zitten allerhande sensoren en dingetjes in.

Maar waarom deze post dan? Deze keer heb ik niet alleen een lampje laten knipperen of alleen een tekst laten schrijven op een LCD scherm, maar heb ik een aantal dingetjes gecombineerd. Ik heb een ledje op het board gezet op poort 13, een LED socket op poort 7, een button op poort 3 en een LCD schermpje.

Het losse ledje knippert permanent, maar het andere ledje gaat aan als je op de knop drukt. Het LCD scherm laat zien dat het knopje is ingedrukt.

Eerst deed ik dat weer in de Arduino omgeving. Op de Galileo draait dan niets speciaals.

iot

Maar ja dat is niet leuk. Er kan Windows op draaien, dan moet ik daar ook gebruik van maken. Dus de code uit de Arduino omgeving overgezet naar een Visual Studio solution. De rgb_lcd.h header file geinclude en compile. “Rebuild All succeeded”.

vs

Daarna klikken op Remote Debugger.

image

En we breaken in de eerste beste gezette breakpoint.

WP_20150211_22_04_36_Pro

WP_20150211_22_01_18_Pro

Voordat er gedebugt kan worden, wordt de applicatie gedeployed op de Galileo. Op de C-schijf (het SD kaartje) staat een directory Test met daarin de executable. Door middel van telnet kun je de executable starten. Zoals je hieronder ziet, blijft de applicatie runnen tot je hem stopt. Uiteraard zijn er ook mogelijkheden om hem automatisch met het opstarten van de Galileo te starten.

WP_20150211_001

Volgende uitdaging is wachten op de volgende versie van Windows voor Galileo, Windows 10. Ik hoop dat er dan ook ondersteuning voor .NET / C# aanwezig is. Ik ben benieuwd hoe de vele Arduino modules dan vanuit C# aangestuurd kunnen worden. Inmiddels is aangekondigd dat Windows 10 ook op een Raspberry PI zal draaien. Inmiddels heb ik zo’n ding gekocht en ook daar ga ik uiteraard mee spelen.

Bij Xpirit en Xebia zijn we begonnen met een IoT Makers lab. Samen met collega’s gaan we mooie en leuke IoT oplossingen verzinnen en maken. Uiteraard zal ik daar later op terug komen.