Quand le bureau Microsoft Windows rencontre Arduino : un rêve de maker ?
Avec la contribution de Rédacteurs européens de DigiKey
2017-09-26
La communauté des makers est inondée de nouvelles idées. Beaucoup sont basées sur l'utilisation des technologies et apportent de nouveaux moyens d'assurer et de fournir un service. D'autres permettent de concrétiser des projets jusque-là jugés impossibles. Malgré toutes ces idées, il peut s'avérer très difficile de concrétiser les projets de conception. Les entrepreneurs en herbe se rendent compte qu'il est crucial d'arriver le premier sur le marché, ce qui impose une phase de développement rapide. Les ordinateurs monocartes (SBC) embarqués, comme Arduino, Raspberry Pi et BeagleBone Black, sont rapidement devenus la plateforme de choix de nombreux makers. La grande majorité des SBC utilisent Linux comme système d'exploitation. Cependant, même si ce système intègre énormément de flexibilité et de fonctionnalités dans une conception, Linux nécessite un certain degré de connaissances lors de la mise en route, et peut dissuader les moins confiants d'utiliser un système d'exploitation open-source. Arduino est peut-être une exception : aucun système d'exploitation n'est utilisé. Cela n'a toutefois aucunement limité la crédibilité d'Arduino quant à sa simplicité et sa facilité de programmation pour répondre au défi de l'interfaçage avec le monde réel dans des conceptions intégrées. Très populaire au sein de la communauté des makers et en particulier chez ceux qui découvrent l'électronique, Arduino a le mérite d'avoir ravivé l'intérêt pour l'électronique amateur, ce qui a donné naissance à de nombreuses idées de nouveaux produits.
Lorsqu'il s'agit de développer un nouveau produit, le défi pour de nombreux makers est de savoir comment réaliser le prototype d'un produit qui combine le meilleur d'Arduino avec le caractère familier des applications de Microsoft® Windows. Offrant une multitude d'options de connectivité comme SPI, I2C et UART, ainsi que des périphériques GPIO, PWM et CAN, il ne fait aucun doute qu'Arduino fournit un moyen extrêmement fiable et efficace pour obtenir une conception connectée au monde réel. Du point de vue du développement d'applications, il est fort probable que vous maîtrisez mieux le développement d'applications de bureau à l'aide de l'environnement de développement intégré (IDE) Microsoft Visual Studio avec des langages comme C#, Java et Python plutôt qu'avec Linux. Jusqu'à récemment, il n'existait aucun moyen simple d'intégrer les différents domaines du bureau Windows à Arduino, mais un ordinateur monocarte appelé LattePanda de DFRobot promet de le faire (Figure 1).

Figure 1 : Ordinateur monocarte LattePanda de DFRobot.
Ordinateur Windows monocarte extrêmement compact doté de Microsoft Windows 10 Édition familiale, le LattePanda héberge un microprocesseur quadricœur Intel® Cherry Trail Atom Z8350 fonctionnant à 1,8 GHz en plus d'un coprocesseur Atmel ATmega32u4 compatible avec Arduino. Notez qu'il s'agit d'un système Windows 10 complet, et non d'une version IoT réduite. Deux modèles sont disponibles, avec un stockage e-MMC de 32 Go et une carte RAM de 2 Go, ou un stockage de 64 Go et une version RAM de 4 Go. Les cartes LattePanda sont également disponibles sans clé Windows 10 activée. En options de connectivité standard, le LattePanda offre des ports USB 2.0 et USB 3.0, un port Ethernet 100 Mbps, une sortie HDMI, une prise audio 3,5 mm, un connecteur microSD, Bluetooth 4.0 et Wi-Fi. La Figure 2 illustre les composants et les interfaces clés du LattePanda. La carte est alimentée par une alimentation simple de 5 VCC, 2,5 A via un connecteur micro USB. Assurez-vous que l'adaptateur secteur est capable de fournir au moins 2,3 A pendant le fonctionnement pour éviter la réinitialisation du LattePanda lors du démarrage. Mesurant seulement 88 mm x 70 mm, le LattePanda est suffisamment compact pour être intégré dans des conceptions à espace limité. Pour aider au placement dans un boîtier, les spécifications mécaniques et les fichiers de modèles 3D du LattePanda sont disponibles sur le forum dédié à la carte. Lors du montage de la carte dans un espace confiné, il est recommandé de prévoir un refroidissement à air forcé via un ventilateur. Par ailleurs, un dissipateur thermique approprié doit être utilisé, car la carte peut passablement chauffer pendant le fonctionnement normal. Un ensemble de dissipateurs thermiques en cuivre personnalisés est disponible pour une utilisation avec le LattePanda. Une alimentation de ventilateur de 5 VCC est fournie sur la carte.

Figure 2 : Principaux composants et interfaces du LattePanda.
En plus du système d'exploitation Windows, la carte est préchargée avec Microsoft Visual Studio et l'IDE Arduino. La carte est capable de fonctionner sans clavier ni écran ni souris, en utilisant une application de terminal de calcul de réseau virtuel (VNC) appropriée, comme TightVNC, ou en reliant le panneau d'affichage LCD LattePanda 1074 x 600 de 7 pouces au panneau tactile correspondant. L'écran et le panneau tactile capacitif se connectent au LattePanda au moyen de câbles FFC et de connecteurs ZIF.
Lorsqu'il s'agit d'utiliser les différentes E/S périphériques, la combinaison de Windows et d'Arduino a été très bien pensée. La Figure 3 illustre le brochage disponible. Des signaux provenant d'Atom et d'ATmega32u4 sont disponibles, la majorité provenant de l'Arduino via un connecteur double rangée à 24 broches. Les E/S Atom se trouvent dans la zone U1 de la Figure 3. Les 20 GPIO (analogiques A0 – A5 et numériques D0 – D13) utilisent une logique 5 V et peuvent être utilisées comme entrées ou sorties, dont 12 peuvent être définies individuellement pour être utilisées comme entrées analogiques. Reportez-vous à la zone U2 de la Figure 3. Lorsque vous connectez des capteurs ou des dispositifs aux E/S, assurez-vous qu'ils utilisent également une logique 5 V. Des convertisseurs de niveau logique sont nécessaires si vous utilisez un dispositif de 3,3 VCC. Chaque broche analogique présente une résolution de 10 bits fournissant 1024 valeurs à partir d'une plage de tensions d'entrée de 0 à 5 VCC. Les broches D3, D5, D6, D9, D10 et D13 peuvent être utilisées comme sorties PWM 8 bits. De plus, les broches D7, D3, D2, D1 et D0 peuvent être utilisées pour déclencher une interruption externe dans différentes conditions. Comme le veut la tradition Arduino, une LED est connectée à la broche D13 et peut être utilisée avec le sketch de LED clignotante standard.

Figure 3 : LattePanda – Brochages périphériques.
Notez que certaines broches Arduino (D9, D10, D11, A0, A1 et A2) apparaissent à la fois au niveau du connecteur Arduino de base et pour une utilisation avec les capteurs DFRobot Gravity.
Les broches sont accessibles à partir d'une application s'exécutant sur ATmega32u4 et sur Atom. Outre les E/S basées GPIO standard, des communications série via I2C et SPI sont également disponibles à partir des embases mâles. Un connecteur ICSP 6 bits est également fourni. Les applications Windows peuvent facilement utiliser les GPIO Arduino grâce à la bibliothèque open-source LattePanda Firmata fournie pour une utilisation avec Visual Studio. Cela permet à n'importe quelle application d'accéder à une broche et de la contrôler grâce à l'utilisation des fonctions de classe. Vous trouverez une explication détaillée des fonctions de bibliothèque disponibles ainsi que des fichiers d'exemple Visual Studio C# téléchargeables individuellement ici.
Figure 4 : Capture d'écran Visual Studio du code pour faire clignoter la LED intégrée.
Afin de vérifier que tout fonctionne correctement, le code Visual Studio C# qui appelle la bibliothèque de classes Firmata est illustré à la Figure 4. Lorsqu'il est exécuté, il fait clignoter la LED intégrée. Les lecteurs familiarisés avec les fonctions et la structure de code C d'Arduino noteront la similitude des fonctions de classe avec celles utilisées dans un sketch Arduino.
La création d'applications avec LattePanda est simplifiée davantage grâce à la disponibilité d'un jeu de capteurs spécialement conçu pour la carte. Avec un total de 14 capteurs et les câbles de connexion associés, le kit de démarrage de capteur Gravity inclut des capteurs de température, de lumière, de gaz et de flamme, un capteur rotationnel analogique, des boutons-poussoirs numériques, des LED de diverses couleurs et un module de relais. Ils se branchent à la rangée de six connecteurs Gravity à 3 broches sur la carte, dont le brochage est indiqué à la Figure 3.
Le bus I2C de la carte constitue un autre moyen pratique de connecter des capteurs, des actionneurs et des écrans. La bibliothèque Firmata fournit les fonctions de classe nécessaires pour envoyer et recevoir des données directement dans une application Visual Studio à l'aide des fonctions wireBegin, wireRequest et didI2Cdatareceive. L'exemple ci-dessous illustre l'utilisation d'une carte d'évaluation d'accéléromètre à 3 axes I2C d'Adafruit. Cette carte utilise le capteur MEMS à 3 axes haute résolution, ultrabasse consommation ADXL345 d'Analog Devices. Le capteur MEMS est connecté au LattePanda comme illustré à la Figure 5.

Figure 5 : Câblage du capteur MEMS à 3 axes ADXL345 d'Adafruit au LattePanda.
L'alimentation est fournie par les broches 22 (5 V) et 21 (GND), et l'interface I2C est connectée à la broche 6 (fil jaune SDA) et à la broche 8 (fil bleu SCL).
Le code source de la Figure 6 montre l'écriture sur la carte du capteur avec une adresse de capteur par défaut de 0x53 et une plage de mesures par défaut de 0x2D (2 G). Les données sont ensuite lues à partir du capteur de manière continue et analysées au niveau des lectures d'axes X, Y et Z pour un affichage sur l'écran de la console.
Figure 6 : Code C# illustrant la configuration et la lecture du capteur MEMS à 3 axes ADXL345 via une interface I2C.
Les deux exemples ci-dessus illustrent non seulement la rapidité avec laquelle une application peut être créée en utilisant le LattePanda, mais aussi le fait que cette carte fournit une plateforme pré-certifiée sur laquelle des applications peuvent être développées et déployées rapidement sur le marché. Plutôt que d'avoir à développer entièrement une conception intégrée appropriée avec les coûts d'ingénierie non récurrente associés, et les risques et les délais de mise sur le marché que l'on connaît, une conception utilisant un ordinateur monocarte peut être mise en œuvre en quelques semaines. Une fois les avantages du premier entrant obtenus en commercialisant une conception et en effectuant les installations client, si les volumes de production soutiennent l'analyse de rentabilité, l'équipe d'ingénierie peut préparer une nomenclature pour une conception personnalisée en tirant parti des modèles mécaniques du forum LattePanda.
Parmi les nombreuses applications possibles, l'utilisation du LattePanda pour une solution Internet des objets (IoT) constitue un choix idéal. Il dispose de suffisamment de ressources de calcul et de connectivité pour lire en temps réel les données provenant d'une multitude de capteurs connectés câblés et sans fil, et compiler les résultats, puis les transférer vers une plateforme d'analyse cloud via une communication Wi-Fi ou Ethernet. Cette approche avec passerelle est de plus en plus populaire pour les applications de l'Internet industriel des objets (IIoT). Appelée « fog computing », cette méthode dépend moins d'une connectivité cloud continue, car certaines fonctions de commande peuvent être exécutées localement sans avoir à attendre qu'une application cloud ne réponde. Par exemple, il peut s'agir d'allumer un système de climatisation dès qu'une certaine température est atteinte. Avec le capteur de température et l'actionneur du système au niveau de la passerelle, la demande peut être traitée sans engager de coûts de communication, sans contrôler la latence et sans avoir besoin de ressources de calcul cloud.
La plateforme Azure IoT Hub de Microsoft est une plateforme de cloud computing très prisée qui prend entièrement en charge l'ordinateur monocarte LattePanda. Un référentiel GitHub documente le processus impliqué pour que la carte communique avec la plateforme Azure. Il s'ajoute aux informations fournies par LattePanda. Pour faciliter le processus de développement et de test, Microsoft fournit des fichiers d'exemple Node.js qui testent la connectivité à IoT Hub. Avant de télécharger ces exemples, vous devez d'abord utiliser le portail Azure pour configurer un compte Azure et créer un dispositif IoT (Figure 7).

Figure 7 : Création d'une entrée Azure IoT Hub.
La Figure 8 illustre la configuration des détails d'entrée Hub et la désignation de l'hôte. Ce processus fournit les informations d'identification (chaînes de connexion et clés d'accès) utilisées pour identifier et associer un capteur du LattePanda à Azure IoT Hub. Une fois ce processus terminé, vous pouvez ensuite modifier le fichier « simple_sample_device.js » fourni et entrer la chaîne de connexion avant de créer et d'exécuter le code. Sur Azure IoT Hub, la fonction utilitaire DeviceExplorer permet d'observer les messages que le Hub reçoit du LattePanda.

Figure 8 : Azure IoT Hub – Enregistrement d'un nouveau dispositif.
Une fois la communication établie, vous pouvez passer à la conception de votre application en utilisant les services d'Azure. Par exemple, vous pouvez utiliser le service Azure Storage pour créer une table de mesures du capteur. Azure Stream Analytics et Azure Power BI sont deux autres exemples d'applications Azure capables d'interpréter, d'analyser et d'afficher des valeurs et des tendances à partir des données du capteur.

Figure 9 : Exemple de fichier Node.js de capteur de lumière illustrant les fonctions d'Azure Storage.
La Figure 9 illustre l'exemple de code Node.js qui lit les valeurs d'un capteur de lumière Gravity connecté à la broche « A0 » et les stocke dans une table Azure Storage. Les fonctions qui communiquent avec Azure Storage sont encadrées en rouge.
Le développement sur LattePanda est très simple. Il s'agit d'une plateforme très bien prise en charge, avec une documentation étendue des fournisseurs, un forum communautaire en ligne et son propre référentiel GitHub contenant des modèles mécaniques, des bibliothèques et des exemples de code. En outre, le système d'exploitation de base, Microsoft Windows 10, offre lui aussi une bonne prise en charge avec de nombreuses applications et de nombreux environnements de développement commerciaux. De plus, le coprocesseur Arduino bénéficie d'une communauté étendue de développeurs, de publications et de ressources de programmation. L'IDE Arduino est probablement l'IDE le plus répandu. Microsoft Visual Studio constitue un compagnon IDE idéal, prenant en charge le développement dans de nombreux langages de programmation populaires comme C#, Python et F#/.Net.
Conclusion
Le LattePanda introduit un nouveau concept dans la communauté des makers. La possibilité de combiner la facilité d'interfaçage au monde réel d'Arduino avec la vaste communauté de développeurs et d'applications Windows étend davantage la portée des conceptions embarquées et ouvre des perspectives de nouveaux produits illimitées.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.






