Allumer une LED sur un Raspberry Pi 2 avec du Windows 10 IoT Core
Article rédigé par Thomas D’Hollander / Lire l’article original
Allumer une LED sur un Raspberry Pi 2 avec du Windows 10 IoT Core
Cet article fait partie d’une série concernant Windows 10, le Raspberry Pi 2 et l’IoT en général.
Maintenant que nous avons installé Windows 10 sur le Raspberry Pi 2, il va falloir configurer un peu Visual Studio avant de pouvoir s’amuser à allumer des LEDs.
Voici les autres articles de la série :
- Installation de Windows 10 IoT Core sur le Raspberry Pi
- Allumer une LED avec peu de code (l’article sur lequel vous êtes actuellement)
- Obtenir des informations depuis un capteur de mouvement
- Un système de captation de mouvement qui envoie des infos dans le Cloud
Pré-requis
Logiciels
- Se référencer à l’article sur l’installation de Windows 10 IoT Core
- Visual Studio 2015 RC
Matériel
- Se référencer à l’article sur l’installation de Windows 10 IoT Core
Autres
- Quelques notions d’électronique
Allumer une LED en C#
Configurer Visual Studio
Après avoir installé Visual Studio 2015 Preview sur votre Windows 10, il va falloir activer le mode développeur.
Pour cela c’est plutôt simple :
- On va d’abord lancer Regedit
- On va ensuite placer les valeurs de ces deux DWORD à « 1 »
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock\AllowAllTrustedApps
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock\AllowDevelopmentWithoutDevLicense
Vous pouvez maintenant lancer le fichier qui se trouvait dans le zip contenant l’image de Windows 10 IoT
WindowsDeveloperProgramForIoT.msi
Réaliser le montage
Avant de programmer, il va falloir encore faire un petit quelque chose : le montage 😀
Je vais partir du fait que vous avez un Breadboard et un Cobbler, si pas, ce sera juste un peu plus compliqué pour le câblage.
Nous allons donc simplement placer une LED sur notre Breadboard (sans oublier la résistance qui va avec, afin de ne pas la faire brûler) et la relier à un port GPIO du RasPi.
Nous allons donc brancher les éléments comme cela :
- Une résistance pour la LED (560 Ohm dans mon cas, celle fournie avec votre LED devrait faire l’affaire) sur le 3.3V
- La grande Pin de la LED sur la sortie de la résistance
- La petite Pin de la LED sur un port GPIO (numéro 6 dans mon cas)
Voici à quoi devrait ressembler le montage :
Commencer à coder
Maintenant, il va falloir allumer cette fameuse LED, on va tout simplement faire un petit programmer qui lance la LED au démarrage et … c’est tout … rien de bien compliqué pour commencer, le but est de surtout voir comment utiliser les ports GPIO en C#.
Tout d’abord, nous allons créer un projet C# Universal App :
Il faut aussi penser à ajouter les références vers le Windows IoT Extension SDK :
Ensuite, nous allons nous rendre dans le fichier MainPage.xaml.cs (on remarquera qu’il nous est possible de faire des interfaces qui seront affichées à l’écran du RasPi) et nous allons commencer à coder, mais d’abord ajoutons le using pour l’utilisation des Gpio :
using Windows.Devices.Gpio;
D’abord, il nous faut quelques variables pour retenir l’état de la LED, son port, et accéder facilement à son Gpio :
private int greenLedStatus = 0;
private const int GREEN_LED_PIN = 6;
private GpioPin greenPin;
Nous allons maintenant simplement créer une fonction qui initialise tout ce qui est relié aux Gpio :
public MainPage()
{
this.InitializeComponent();
AllumerLed();
}
void AllumerLed()
{
// On initialise le contrôleur Gpio
var gpio = GpioController.GetDefault();
// Si jamais un problème s'est déclaré, on arrête tout
if (gpio == null)
{
greenPin = null;
return;
}
// On va ouvrir le port que nous avons fixé tout à l'heure (le 6)
greenPin = gpio.OpenPin(GREEN_LED_PIN);
// Encore quelques précautions en cas d'erreur
if (greenPin == null)
{
return;
}
// On passe la LED en Off et on set le Drive Mode
// High = off, Low = on
greenPin.Write(GpioPinValue.High);
greenPin.SetDriveMode(GpioPinDriveMode.Output);
// Led On
FlipGreenLED();
}
Une petite fonction pour switcher l’état de la LED
private void FlipGreenLED()
{
if (greenLEDStatus == 0)
{
if (greenPin != null)
{
greenLEDStatus = 1;
// Encore une fois, pour allumer une LED il faut la passer sur Low
greenPin.Write(GpioPinValue.Low);
}
}
else
{
if (greenPin != null)
{
greenLEDStatus = 0;
// Et pour l'éteindre : High
greenPin.Write(GpioPinValue.High);
}
}
}
On prévoit aussi de quoi libérer la pin de la LED quand le programme se coupe
private void MainPage_Unloaded(object sender, object args)
{
greenPin.Dispose();
}
Et voilà, nous avons un code qui devrait fonctionner, il ne reste qu’à le déployer et à voir ce que ça donne sur le RasPi.
Déployer sur le Raspberry Pi 2
Avant de déployer, n’oublier pas de passer votre projet en ARM.
Maintenant il suffit de sélectionner « Remote Machine » dans le menu et de lancer le déploiement, une fenêtre devrait s’ouvrir afin de rentrer l’adresse IP de votre RasPi ainsi que les identifiants (attention, il faut choisir le mode d’identification « none » si vous n’avez pas modifié la configuration de base).
Vous pouvez maintenant déployer votre application et vérifier que tout fonctionne :
Et ça fonctionne \o/
Pour vous entraîner un peu, vous pourriez simplement ajouter un bouton dans l’interface qui permet de switcher l’état de la LED (on/off), ou encore la faire clignoter, vous pourriez aussi en ajouter une 2ème (n’oubliez pas de la placer sur un Gpio différent) et les faire clignoter alternativement …
La suite de cette série sera consacrée à la partie récupération de données depuis un Gpio, vous verrez, c’est tout aussi simple.
Quelques liens utiles
- http://ms-iot.github.io/content/en-US/win10/SetupPC.htm
- http://ms-iot.github.io/content/en-US/win10/samples/Blinky.htm
- http://www.cypress.com/?id=4&rID=28680
Article rédigé par Thomas D’Hollander / Lire l’article original