Avril 2016

Volume 31 numéro 4

Cet article a fait l'objet d'une traduction automatique.

Applications modernes : écriture d’applications UWP pour l’Internet des objets

Par Frank La La

Une des expressions plus utilisés dans le secteur de la technologie est aujourd'hui « l'Internet des objets, « souvent abrégé en IoT. L'IoT promet d'activer tous les périphériques dans un smart device en vous connectant au cloud. À partir du cloud, un périphérique peut fournir une surface de contrôle et les données brutes. Les caméras peuvent être contrôlés à distance. Collecté et analysées les modèles et l'analyse des données.

Après de nombreux articles dans MSDN Magazine sur comment collecter et analyser les données à partir de ces périphériques, il n'a pas encore été toute discussion de matériel ou des perspectives de câblage. Toutefois, étudier avec les deux pieds IoT peut-être nécessiter des développeurs d'acquérir de nouvelles compétences comme la conception electronics, électricité et, dans certains cas, de soudage. Les développeurs, par nature, tout à fait à l'aise écrivez du code, mais ne peut-être pas à l'aise tout à fait si des circuits électrons base de tous les éléments dans le monde virtuel. De nombreux développeurs de logiciels peuvent se retrouvent vous demandez que faire avec breadboards solderless, les câbles de pontage et résistances. Cet article explique leur but.

Bien sûr, des dispositifs existent depuis de nombreuses années. Écrire du code pour ces périphériques, toutefois, requis souvent une connaissance approfondie des ensembles d'outils propriétaires et du matériel de prototypage coûteuse. Le modèle 2 Raspberry Pi B peut exécuter Windows 10 IoT Core, une version spéciale de Windows 10. Windows 10 IoT Core est un téléchargement gratuit sur le site Web de IoT du centre de développement Windows à dev.windows.com/iot. Maintenant que Windows 10 IoT principal s'exécute sur le Raspberry Pi 2, les développeurs de plate-forme de Windows universelle (UWP) peuvent exploiter leur code et compétences existants.

Dans cet article, je créerai une application UWP qui s'exécute sur le Raspberry Pi 2 et clignote un voyant basé sur les données à partir d'une API de météo. Je vais présenter IoT concepts, le matériel Raspberry Pi 2 modèle B et comment contrôler à partir de code c#.

Projet : Analyse de gel

Comme le printemps ramène à chaud météo, plusieurs await anticipé la possibilité de démarrer le jardinage à nouveau. Toutefois, au début du printemps dans de nombreux domaines pour faire également quelques instantanés froid. Frost peut endommager gravement les plantes, par conséquent, un jardinier, que je souhaite savoir si froid se trouve dans la prévision. Pour ce faire, je vais affiche un message sur l'écran si la prévision faible tombe en dessous de 38 degrés Fahrenheit (3,3 degrés Celsius). L'application clignote rapidement un voyant comme un avertissement supplémentaire.

Outre les logiciels nécessaires pour écrire des applications UWP, je dois disposer du matériel supplémentaire. Bien entendu, je dois avoir Raspberry Pi 2 modèle B sur lequel déployer ma solution. J'aurai également besoin d'une carte MicroSD, un voyant, une résistance Ohm 220, breadboard solderless, fils de cavalier, souris USB et de clavier et un moniteur.

Raspberry Pi 2 modèle B le Raspberry Pi 2 modèle B est l'ordinateur sur lequel je vais déployer mon application UWP. La Raspberry Pi 2 contient 40 broches (voir Figure 1), certaines dont l'usage général d'entrée/sortie codes confidentiels (GPIO). À l'aide de code, je pourrai manipuler ou de lire l'état de ces codes confidentiels. Chaque broche a l'une des deux valeurs : élevée ou faible, haute de tension plus élevée et faible pour une tension. Cela me permet d'activer ou désactiver les le voyant LED.

Diagramme de brochage modèle B Raspbery Pi 2
Figure 1 Raspbery Pi 2 modèle B brochage diagramme

MicroSD carte MicroSD la carte agit sur le disque dur Raspberry Pi 2. Il s'agit d'où l'appareil pourra trouver ses fichiers de démarrage et le système d'exploitation. Il est également où l'application UWP, une fois déployée, résidera. Je pourrais obtenir immédiatement avec les cartes SD aussi petite que 4 Go, mais il est recommandé de disposer de 8 Go. Naturellement, les besoins du projet déterminent la taille de la carte que nécessaire. Si, par exemple, j'avais besoin de stocker de grandes quantités de données de capteur localement avant de le télécharger, je devrais ensuite une carte SD plus grande pour prendre en charge un plus grand magasin de fichiers local.

Breadboard solderless et cavalier fils afin de connecter des composants à la Raspberry Pi 2, je dois créer un chemin d'accès d'électrons à suivre depuis la Raspberry Pi 2 via mes composants et à la Raspberry Pi 2. Il s'agit d'un circuit. Alors que je pourrais utiliser autant de façons d'interconnecter les parties, le moyen le plus rapide et plus simple est la breadboard solderless. Comme son nom l'indique, il n'est que je dois soudage de composants pour créer le circuit. Je vais utiliser fils de cavalier pour établir les connexions. Le type de breadboard solderless qu'utiliser pour ce projet a 30 lignes et 10 colonnes de sockets. Notez que les colonnes ont deux groupements de cinq: « d'a à e » et « f à j. » Chaque trou est connecté électrique à chaque autre faille dans son groupe de lignes et de colonnes. La raison pour laquelle pourquoi deviendront évidentes peu de temps.

Voyant et résistance dans ce projet, nous allons la connecter le voyant LED de la carte Raspberry Pi 2. Les broches sur le Raspberry Pi 2 fonctionnent au 5 v. Le voyant LED, cependant, est de briller à ce niveau de tension. Le Registre permet de réduire l'énergie supplémentaire pour sécuriser le circuit pour le voyant LED.

Câble Ethernet, souris USB et le clavier et moniteur le Raspberry Pi 2 modèle B a quatre ports USB, prise Ethernet et sortie, entre autres connecteurs HDMI. Une fois que l'application UWP est en cours d'exécution sur le périphérique, je peux interagir avec elle la même façon comme s'il était sur un PC ou une tablette, car j'afficher un et sera en mesure de saisir un code postal pour la prévision d'une zone spécifique.

Placement de Windows sur le Raspberry Pi 2

Pour vous familiariser avec Windows 10 IoT Core, que je suis les instructions au bit.ly/1O25Vxl. La première étape consiste à télécharger les outils de base de Windows 10 IoT à bit.ly/1GBq9XR. Les principaux outils de Windows 10 IoT contiennent des utilitaires, WindowsIoTImageHelper et WindowsIoTWatcher, pour travailler avec les périphériques IoT. WindowsIoTImageHelper fournit une interface utilisateur graphique pour mettre en forme avec les fichiers de démarrage Windows IoT Core une carte SD. WindowsIoTWatcher est un utilitaire qui recherche régulièrement dans le réseau local pour les périphériques Windows IoT Core. Je vais utiliser les peu de temps.

Connexion du matériel

Pour commencer à créer une solution pour l'IoT, je dois effectuer un « élément » avec lequel travailler. Il s'agit de la partie d'un projet IoT que de nombreux développeurs trouvent le plus accessible. La plupart des développeurs sont habitués à déplacer des bits via le code, pas nécessairement de câblage parties ensemble d'électrons à faire le tour. Pour simplifier cela, je prends le projet de lumière LED clignote très basique (bit.ly/1O25Vxl), mais l'améliorer avec des données en temps réel à partir d'Internet. Les blocs de matériels de base sont les mêmes : Voyant, breadboard solderless, les câbles de pontage et une résistance Ohm 220.

Le modèle 2 Raspberry Pi B possède un nombre de codes confidentiels GPIO. L'état de nombreux codes confidentiels peut être manipulé par le code. Toutefois, certaines de ces codes confidentiels ont réservé les fonctions et ne peut pas être contrôlés par le code. Heureusement, il existe des diagrammes pratique de l'objectif de chaque axe. Le diagramme illustré à la Figure 1 est appelé un « brochage » et fournit un mappage d'interface de la carte circuit.

Conception d'un circuit.

En fait, je dois créer est un circuit d'électrons à circuler via, comme indiqué dans Figure 2. Les électrons démarrer leur voyage à la broche 1, intitulé 3,3 v PWR dans Figure 1. Cette broche fournit volt 3.3 de puissance pour le circuit et c'est cette puissance qui s'allume DEL. En fait, 3,3 v est trop de puissance pour le voyant LED. Pour éviter qu'il usais, je place une résistance sur le circuit absorbe une partie de l'énergie électrique. Ensuite, sur le circuit est GPIO 5, qui, selon le schéma de brochage, pin physique 29. Ce code confidentiel, qui peut être contrôlé par le code, rend le voyant « intelligent ». Je peux définir la tension de sortie de cette marque soit élevé (3.3 Volt) ou faible (Volt 0) et le voyant sera soit activée ou désactivée, respectivement.

Le schéma du Circuit
Figure 2 le schéma du Circuit

Création d'un circuit.

À présent, il est temps de générer le circuit indiqué dans Figure 2. Pour ce faire, je dois prendre l'extrémité d'un câble cavalier femelle et connectez-le au code confidentiel 29 Raspberry Pi 2. Ensuite, je place l'autre extrémité, l'extrémité mâle, dans un emplacement sur mon breadboard solderless. J'ai choisi la ligne 7, la colonne e. Ensuite, je prend le voyant clair et placer le tronçon plus court dans l'emplacement à la ligne 7, colonne a, tout en plaçant le voyant d'autres, plus de temps dans l'emplacement à la ligne 8, colonne un. Maintenant, je la résistance, placer une extrémité de ligne 8, colonne c et l'autre dans la ligne 15, colonne c. Enfin, je place la fin du deuxième câble cavalier mâle dans l'emplacement à la ligne 15, colonne a et branchez l'extrémité femelle broche 1 Raspberry Pi 2. Une fois que tout cela est fait, j'ai quelque chose qui ressemble à Figure 3.

Le câblage terminé avec Raspberry Pi 2 dans un cas en plastique propre
Figure 3 le câblage terminé avec Raspberry Pi 2 dans un cas en plastique propre

Démarrage de l'appareil

Une fois que j'ai Windows IoT principal est installé sur une carte MicroSD, insérer la carte SD dans le Raspberry Pi 2. Ensuite, je connecter un câble réseau et souris USB, moniteur et branchez la Raspberry Pi 2. L'appareil démarre jusqu'à et, éventuellement, l'écran illustré à Figure 4 s'affichera à distance (je Notez le nom du périphérique et l'adresse IP).

L'écran d'informations par défaut sur Windows IoT Core pour Raspberry Pi 2
Figure 4 écran informations par défaut sur Windows IoT Core pour Raspberry Pi 2

Le logiciel d'écriture

Avec la configuration matérielle est terminée, je peux désormais travailler sur la partie logicielle de mon projet IoT. Il est facile de créer un projet IoT dans Visual Studio. Il est essentiellement identique à n'importe quel autre projet UWP. Comme d'habitude, je crée mon projet en sélectionnant fichier | Nouveau projet dans Visual Studio 2015 et en choisissant l'option application vide (Windows Universal) comme modèle. Je choisis d'appeler mon projet « WeatherBlink ». Une fois les charges de projet, que je dois ajouter une référence aux Extensions IoT Windows pour la série UWP. J'avec le bouton droit sur Références dans ma solution dans l'Explorateur de solutions et dans la boîte de dialogue que suit, recherchez Windows IoT Extensions la UWP sous Extensions dans l'arborescence de Windows Universal (voir Figure 5). Enfin, je clique sur OK.

Ajout d'une référence à Windows IoT Extensions pour la série UWP dans Visual Studio 2015
Figure 5 Ajout d'une référence à Windows IoT Extensions pour la série UWP dans Visual Studio 2015

Maintenant que la référence correcte est ajoutée à votre projet, je vais ajouter les éléments suivants à l'aide de l'instruction au début du fichier MainPage.xaml.cs :

using Windows.Devices.Gpio;

L'espace de noms Windows.Devices.Gpio contient toutes les fonctionnalités que j'ai besoin d'accéder à la GPIO épingle Raspberry Pi 2. Il est facile de définir l'état d'un code confidentiel donné. Par exemple, le code suivant définit la valeur de la broche 5 élevée :

var gpioController = GpioController.GetDefault();
gpioPin = gpioController.OpenPin(5);
  gpioPin.Write(GpioPinValue.High);

Il est tout aussi facile de lire la valeur d'un code confidentiel :

var currentPinValue = gpioPin.Read();

Étant donné que les broches GPIO sont des ressources qui doivent être partagés entre l'application, il est plus facile à gérer les variables de portée de classe :

private GpioPin gpioPin;
private GpioPinValue gpioPinValue;

Et les initialiser dans une méthode courante :

private void InitializeGPIO()
{
  var gpioController = GpioController.GetDefault();
  gpioPin = gpioController.OpenPin(5);
  gpioPinValue = GpioPinValue.High;
  gpioPin.Write(gpioPinValue);
  gpioPin.SetDriveMode(GpioPinDriveMode.Output);
}

Création d'une interface utilisateur Simple

Comme il s'agit d'une application UWP, j'ai accès pour les contrôles d'interface UWP plage complète de Windows 10. Cela signifie que mon IoT peut avoir une interface entièrement interactive sans aucun effort supplémentaire de ma part. De nombreuses implémentations IoT sont « headless », ce qui signifie ne qu'aucune interface utilisateur.

Ce projet possède une interface utilisateur simple qui vous afficherez un message selon les prévisions météorologiques. Si un clavier et une souris sont attachées à la Raspberry Pi 2, les utilisateurs finaux seront en mesure de saisir un code postal et mettre à jour les informations de prévisions météorologiques en conséquence, comme indiqué dans Figure 6.

L'interface utilisateur de l'application WeatherBlink UWP
Figure 6 l'interface utilisateur de l'application WeatherBlink UWP

Rendre le périphérique intelligent

Pour que mon appareil IoT tienne compte des prévisions météorologiques, je dois chercher les données à partir d'Internet. Comme il s'agit d'une application UWP, j'ai des bibliothèques et outils accessibles pour moi. J'ai choisi d'obtention de mes données météorologiques de openweathermap.org/api, qui fournit des données météorologiques pour un emplacement donné au format JSON. Tous les résultats de la température sont exprimées en Kelvin. Figure 7 montre mon code pour la vérification de la météo et la modification de la vitesse de clignotement en fonction des résultats. En règle générale, frost avertissements sont émis une fois la température à environ 38 degrés Fahrenheit (3,3 degrés Celsius). S'il existe un risque de frost, je veux le voyant clignote rapide pour m'avertir que mon jardin est en danger imminent. Sinon, je veux le voyant clignote lentement, pour me dire qu'il est toujours alimentation du périphérique. Un appel d'API REST et l'analyse d'une réponse JSON dans UWP étant une rubrique bien couverte, j'ai omis ce code spécifique par souci de concision.

Figure 7 la vérification de la météo et la vitesse de clignotement

private async void LoadWeatherData()
{
  double minTempDouble = await GetMinTempForecast();
  // 38F/3.3C = 276.483 Kelvin
  if (minTempDouble <= 276.483)
  {
   Blink(500);
   txtStatus.Text = "Freeze Warning!"
  }
  else
  {
    Blink(2000);
    txtStatus.Text = "No freezing weather in forecast."
  }

La méthode Blink est simple : il définit l'intervalle d'une minuterie d'expédition en fonction du paramètre qui lui sont envoyé :

private void Blink(int interval)
{
  blinkingTimer = new DispatcherTimer();
  blinkingTimer.Interval =
    TimeSpan.FromMilliseconds(interval);
  blinkingTimer.Tick += BlinkingTimer_Tick;
}

La méthode BlinkingTimer_Tick où réside le code pour activer ou désactiver la DEL. Il lit l'état de la broche et définit l'état de sa valeur opposée :

private void BlinkingTimer_Tick(
  object sender, object e)
{
  var currentPinValue = gpioPin.Read();
  if (currentPinValue == GpioPinValue.High)
  {
    gpioPin.Write(GpioPinValue.Low);
  }
  else
  {
    gpioPin.Write(GpioPinValue.High);
  }
}

Le code source complet est disponible à l'adresse bit.ly/1PQyT12.

Déploiement de l'application

Déploiement de l'application à la Raspberry Pi 2 requiert une configuration initiale sur mon PC. Tout d'abord, je dois modifier mon architecture à ARM et sous la liste déroulante en regard de l'icône de lecture, vous choisirez ensuite ordinateur distant. La boîte de dialogue connexions à distance (voir Figure 8) s'affiche, où je peux saisir l'adresse IP de mon périphérique ou sélectionner dans une liste de périphériques détectée automatiquement. Dans les deux cas, l'authentification ne doit être activé. Enfin, je clique sur Select et maintenant je peux déployer ma solution sur l'appareil.

Boîte de dialogue connexions à distance
Boîte de dialogue connexions à distance figure 8

Considérations de conception

Le monde de IoT ouvre de nouvelles opportunités et des défis pour les développeurs. Lors de la création d'un prototype de périphérique IoT, il est important de tenir compte de l'environnement d'exécution où il aurez déployé. Le périphérique aura accès à l'alimentation et de mise en réseau ? Un thermostat domestique sera certainement, mais une station météorologique placée dans une forêt distante ne peut pas. En clair, la plupart de ces défis déterminent comment je crée mon appareil, par exemple, ajout d'un conteneur pour les scénarios de plein air imperméable. Ma solution sera headless ou nécessite une interface utilisateur ? Certaines de ces difficultés déterminent comment j'écrirais le code. Par exemple, si mon appareil transmet des données sur un réseau 4G puis je dois tenir compte des coûts de transmission de données. Je veux serait certainement optimiser la quantité de données qu'envoie mon appareil. Comme avec n'importe quel projet logiciel purement, en tenant compte des besoins des utilisateurs finals est critique.

Synthèse

Tandis que le contrôle d'un voyant du code peuvent ne pas changer le monde, il existe plusieurs autres applications pourraient. Au lieu d'utiliser une API de prévisions météorologiques, je peux connecter un capteur de température pour le Raspberry Pi 2 et placez-le à côté de mon domaine privé ou. Qu'en est-il d'un périphérique qui peut envoyer un message électronique d'alerte si elle a détecté l'humidité dans une partie de ma maison ? Imaginez que l'installation de capteurs de qualité d'air dans une grande ville ou simplement dans un cercle. Placer des capteurs de poids sur le toit pour déterminer si suffisamment neige est tombée à déterminer s'il existe un risque de réduire l'imaginer. Les possibilités sont infinies.

Accédez et générer des avantages !


Frank La Vigneest un spécialiste de la technologie de l'équipe Microsoft Technology et Engagement postale, où il aide les utilisateurs à exploiter la technologie afin de créer une Communauté plus sûre. Régulièrement à l'adresse FranksWorld.com et a un YouTube World TV de Frank appelé de canal. (youtube.com/FranksWorldTV).

Remercie les experts techniques suivants d'avoir relu cet article : Rachel Appel, Robert POLYNÔMES, Andrew Hernandez