Raspberry Pi 2 und FEZ HAT

Mit Windows IoT hat die .NET-Welt auch offiziell den Weg auf den Raspberry Pi 2 gefunden. Allerdings ist die Auswahl an Sensoren mit passenden Windows-IoT-Treibern noch etwas mau. Und hier kommt GHI Electronics mit seinem Erweiterungs-Board FEZ HAT ins Spiel.

Das Board wird einfach auf die GPIO-Leiste des PIs gesteckt und bietet eine gute Basis für den Einstieg in Windows IoT und das Internet der Dinge.
Hier ein kleiner Auszug der Features:

  • Temperatur-Sensor
  • Licht-Sensor
  • Buttons
  • LEDs
  • Analoge und Digitale Eingänge

Das “Hello World” der IoT-Welt ist gefühlt der Temperatur-Sensor. In diesem Beitrag werden wir uns daher mit der Initialisierung des FEZ HAT sowie der Ansteuerung des Temperatur-Sensors widmen.

Zu aller Anfang benötigen wir einen PI2 sowie ein FEZHAT-Board, welches wir auf den GPIO des PI stecken.

Danach starten wir Visual Studio 2015 und legen eine frische (Windows 10) Universal App an.

01 Blank App

Damit wir direkt auf dem Gerät testen und deployen können, müssen wir in den Debug-Einstellungen für die ARM-Plattform das Target-Device auf “Remote-Machine” und die entsprechende IP-Adresse einstellen. Den Haken bei “Use authentication” rausnehmen!

02 Debug Remote Machine

Danach benötigen wir noch zwei Referenzen, einmal auf die IoT-Extensions und einmal die FEZHAT-Treiber.

03 Add IoT-Extension

04 Add GHI FEZHAT Driver

Nachdem nun alle vorbereitenden Maßnahmen erledigt sind, geht es an den Code.

Wir öffnen die MainPage.xaml.cs und fügen folgendes using hinzu:

using GHIElectronics.UWP.Shields;

Daneben werden noch zwei Klassen-Variablen benötigt:

private FEZHAT hat;
private DispatcherTimer timer;

Die Initialisierung erfolgt über eine private Methode. Hier wird das zuvor angelegte FEZHAT-Objekt mit einem Einzeiler initialisiert.

private async void Setup()
{
   this.hat = await FEZHAT.CreateAsync();

   this.timer = new DispatcherTimer();
   this.timer.Interval = TimeSpan.FromSeconds(10);
   this.timer.Tick += OnTick;
   this.timer.Start();
}

Für das Tick-Event legen wir noch einen Eventhandler an. Dieser holt über die GetTemperature()-Methode die aktuelle Temperatur und schreibt sie in die TextBox “tbTemperature”.

private void OnTick(object sender, object e)
        {
   var temperature = hat.GetTemperature().ToString("N2");

   this.tbTemperature.Text = temperature;
}

Abschließend rufen wir in der Main() die Methode Setup() auf und starten den Timer, welcher nun alle zehn Sekunden die Temperatur ausliest.

public MainPage()
{
   this.InitializeComponent();

   this.Setup();
}

Weitere Informationen findet ihr auf den Seiten des Herstellers:
FEZ HAT von GHI Electronis