Realiser une balance avec Windows 10 IoT

Realiser une balance avec Windows 10 IoT

Cette semaine, nous avons voulu tester Windows 10 IoT. Pour ce faire, nous avons décidé d'utiliser un Raspberry Pi 3, notre nouveau module Yocto-Bridge et un Yocto-MaxiDisplay pour réaliser une balance.







Note: Dans cet article, nous allons surtout nous concentrer sur Windows 10 IoT et sur comment utiliser nos modules dans ce contexte. Si vous n'avez jamais utilisé nos modules, nous vous conseillons de commencer par lire les trois articles suivants:



Windows 10 IoT est une version extrêmement minimaliste de Windows 10 prévue pour fonctionner sur des systèmes embarqués ou des objets connectés. En fait, il ne s’agit pas d'un Windows dans le sens où la plupart des gens l'entendent: Il n'y a pas de menu démarrer, pas de système de fenêtrage et seules les applications de type Windows Universel (UWP) sont utilisables.

Il faut plutôt voir Windows 10 IoT comme une plateforme qui exécute une seule application UWP sur un micro PC comme un Raspberry Pi. On voit que l'approche est radicalement différente de celle de Linux qui, lui, permet d'utiliser toutes les fonctionnalités de l'OS. Pour autant, comme nous allons le voir, Windows 10 IoT n'est pas sans intérêt en particulier si vous avez déjà l'habitude de développer des applications Windows.

Dans cet exemple, nous allons utiliser un Raspberry Pi 3 car c'est un système très répandu et bon marché, mais il est aussi possible d'utiliser d'autres boards qui supportent Windows IoT.

La première étape est donc d'installer Windows IoT sur notre Raspberry Pi 3.

Installer Windows 10 IoT sur un Raspberry Pi 3


Il faut commencer par downloader et installer l'utilitaire Windows 10 IoT Core Dashboard qui permet à la fois d'installer Windows sur la carte SD du Raspberry Pi mais aussi de gérer les installations déjà déployées.

Pour installer Windows 10 sur la carte SD, il faut lancer cet utilitaire et accéder à l'onglet "Setup a new device". Sélectionnez votre lecteur de carte SD, attribuez un nom à ce système ainsi qu'un mot de passe qui sera utilisé plus tard pour se connecter sur le Raspberry Pi, et enfin cliquez sur le bouton "Download and install". L'utilitaire se charge de télécharger, d'installer et de configurer une image de Windows 10 IoT sur la carte SD.

L'onglet Setup a new device permet d'installer Windows 10 IoT sur un carte SD
L'onglet Setup a new device permet d'installer Windows 10 IoT sur un carte SD



Une fois l'installation terminée, il suffit d'insérer la carte SD dans le Raspberry Pi, et le faire booter. Le premier boot est relativement long mais après quelques minutes vous devriez avoir l'écran suivant:

L'écran affiché par Windows lors du premier boot
L'écran affiché par Windows lors du premier boot



Par défaut, Windows utilise la résolution 1280x1024 qui n'est plus vraiment très utilisée. La première chose à faire est donc de changer la résolution pour qu'elle corresponde à votre écran, dans notre cas 1920x1080. Pour changer ce paramètre, il faut se connecter au "Windows Device Portal" depuis un browser web.

Se connecter au Windows Device Portal


Le Windows Device Portal est une interface web qui est hostée par Windows 10 IoT et permet de configurer et de gérer le système.

Par défaut, le port utilisé est le 8080, il est donc possible d’accéder à cet interface depuis n'importe quel browser en utilisant l'IP de la machine et le port 8080. Cela tombe bien car c'est l'une des informations qui est affichée sur l'écran d’accueil de Windows IoT.

L'autre solution est d'utiliser l'utilitaire "Windows 10 IoT Core Dashboard" que nous avons utilisé pour préparer la carte SD. Si le Raspberry Pi est connecté au même réseau que votre PC, il sera listé dans l'onglet "My device", et depuis là il est possible d’accéder directement au Windows Device Portal.

Le Windows 10 IoT Core Dashboard liste tous les systèmes connectés sur le sous-réseau
Le Windows 10 IoT Core Dashboard liste tous les systèmes connectés sur le sous-réseau



Pour accéder à l'interface web, il faut utiliser le login "Administrator" et le mot de passe que l'on a défini lors de l’installation. Une fois loggé, on a la possibilité de gérer le système et de modifier de nombreux paramètres:

Le Windows Device Portal permet de configurer le système à distance
Le Windows Device Portal permet de configurer le système à distance




Coder l'application balance


Comme nous avons vu en détail comment utiliser nos modules dans une application UWP il y a seulement quelques semaines, nous n'allons pas trop nous attarder sur ce sujet, et nous concentrer sur l’installation de l'application sur le Raspberry Pi.

Mais, dans les grandes lignes, voici ce que fait l'application : Au démarrage elle vérifie la présence de la fonction YWeighScale du Yocto-Bridge, et on enregistre une fonction de callback à l'aide de la méthode registerValueCallback. Si un Yocto-MaxiDisplay est présent, on efface l'écran et on garde une référence sur la fonction YDisplay. Finalement à l'aide d'un DispatcherTimer, on appelle 5 fois par seconde la méthode YAPI.HandleEvents().


La fonction de callback que l'on a enregistrée est appelée dès que la valeur mesurée par le Yocto-Bridge change. Cette fonction doit simplement mettre à jour l'interface et éventuellement le Yocto-Display s'il a été détecté au démarrage.

async Task sensorValueChangeCallBack(YSensor fct, string value)
{
    value += " " + unit;
    CurVal.Text = value;
    if (display != null) {
        try {
            await l0.clear();
            await l0.drawText(w / 2, h / 2, YDisplayLayer.ALIGN.CENTER_DECIMAL, value);
        } catch (YAPI_Exception ex) {
            await FatalError(ex.Message);
        }
    }
}



Le code complet est disponible sur GitHub à l'adresse suivante : https://github.com/yoctopuce-examples/win_iot_scale.

Notez que, durant le développement de cette application, il n'est pas nécessaire d'utiliser le Raspberry Pi. Il est plus rapide de compiler et tester l'application sur votre machine de dev et une fois que l'application fonctionne, vérifier que tout fonctionne de la même manière sous Windows IoT.

Pour exécuter l'application sur le Raspberry Pi, il faut sélectionner dans la barre d'outils "ARM" comme plateforme et "Remote Machine" comme target, lors de la prochaine exécution Visual Studio va ouvrir un popup qui permet d'entrer l'adresse IP du Raspberry Pi. Notez qu'en plus de la barre d'outils, ces options sont disponibles dans l'onglet "Debug" des propriétés du projet.

Lors de la première execution, il faut entrer l'adresse IP du Raspberry Pi
Lors de la première execution, il faut entrer l'adresse IP du Raspberry Pi



Normalement, vous devriez avoir l'écran du Raspberry Pi qui affiche le poids mesuré par le Yocto-Bridge

L'application affiche le poids mesuré par le Yocto-Bridge
L'application affiche le poids mesuré par le Yocto-Bridge



Lancer l'application au démarrage


Maintenant que nous avons notre application balance qui fonctionne, il ne reste plus qu'à configurer Windows pour que l'application soit lancée automatiquement lors du démarrage.

La procédure est très simple, il suffit de se connecter sur le "Windows Device Portal", sélectionner l'onglet "App" et d'activer la radiobox "Startup" pour notre application. Ainsi dès que le Raspberry Pi est mis sous tension notre application est lancée et notre balance est utilisable.

Il est très facile de configurer l'application qui est démarrée automatiquement
Il est très facile de configurer l'application qui est démarrée automatiquement




Conclusion


Comme vous pouvez le voir, nous avons transformé notre Raspberry Pi en balance.

  



L'application est très basique, mais si vous désirez peaufiner cette balance pour la transformer en balance intelligente ou connectée, vous pouvez sans autre repartir de notre exemple et le modifier.

Au final pour réaliser rapidement un prototype d'un objet connecté ou un bricolage, la combinaisons Windows + Raspberry Pi fonctionne étonnamment bien et est rapide à mettre en œuvre.

Commenter aucun commentaire Retour au blog












Yoctopuce, get your stuff connected.