IoT pour les développeurs Web: de zéro à firmware | shoppingmaroc.net


La première partie de cette série est disponible ici .

Dans la première partie de cette série, nous pouvions déjà lire entre les lignes. Le développement de logiciels et de micrologiciels pour les dispositifs embarqués – et dans notre cas, les dispositifs contraints avec de faibles performances – peut être très complexe. Nous pouvons surtout le voir en C / C ++ où les développeurs sont confrontés à des défis en bas de la pile de développement. Les compilateurs croisés et les lieurs, les bibliothèques, les chemins d'accès et les outils build / flash doivent être sélectionnés et installés, souvent en fonction du matériel sous-jacent. Une chaîne d'outils croisés pour un Arduino avec processeur Atmel AVR n'est pas la même que celle d'ARM Cortex M. Ne serait-ce pas génial d'avoir un outil qui s'occupe de cela?

PlatformIO fait exactement ce travail pour le développeur; Il connaît actuellement 24 plateformes de développement pour embarqué (ex: Atmel AVR, Espressif8266, …), 15 frameworks embarqués (Arduino, ARM mbed, …), plus de 470 cartes ("Arduino UNO", "NodeMCU ESP8266", …) et des milliers de bibliothèques et exemples. Cela devrait faciliter le démarrage!

Intégré dans l'environnement de développement

PlatformIO (PIO) peut être installé et utilisé dans différentes saveurs. D'une part, PIO Core vous permet de tout faire depuis la ligne de commande. Ceci est utile pour les développeurs qui se sentent à l'aise au niveau de la coque. Il est également très pratique à utiliser avec les IDE de cloud, mais nous en reparlerons dans une partie ultérieure de notre série IoT

PIO est livré avec des intégrations pour divers IDE, et le reste de la série utilise Visual Studio Code de Microsoft. Il est très populaire dans la communauté des développeurs en raison de son architecture ouverte concernant les extensions. Un clic sur l'icône pour les extensions dans la ligne de menu de gauche et en entrant "platformio" dans le champ de recherche conduit avec le premier coup à l'extension de code PIO-VS officielle, après un clic sur "Installer", il est disponible

 IoT

Figure 1: Installation de plugins PIO dans VSCode

Le noyau de PlatformIO est basé sur Python 2.7, qui fait partie du répertoire standard sous MacOS et Linux. Les utilisateurs Windows peuvent avoir besoin de réinstaller Python, mais cela est automatisé par le programme d'installation PIO et bien documenté sur le site Web PlatformIO. En outre, l'installation de compilateurs C comme clang sous MacOS peut être nécessaire

VOIR AUSSI: Vous voulez construire et maintenir des dispositifs IoT à grande échelle? Vous aurez besoin des choses Android

Après le démarrage de VSCode, vous serez accueilli avec l'écran d'accueil PIO, au moins tant que vous avez coché la case "Afficher au démarrage" (Figure 2).

 IoT

Figure 2: Toutes les fonctions de l'écran d'accueil PlatformIO

L'écran d'accueil combine toutes les fonctionnalités offertes par PlatformIO Backend: gérez vos données de compte (facultatif), recherchez des cartes, des bibliothèques, des plates-formes, recherchez des périphériques connectés et gérez des projets. & frameworks

Pour nos ateliers de formation ainsi que pour les exemples suivants de cette série, nous utiliserons le tableau "NodeMCU 1.0" avec un processeur ESP8266 . L'ESP8266 est un WiFi-SoC très bon marché de la société chinoise Espressif Systems, qui supporte le framework embarqué espressif. Il a également un port de la structure Arduino, donc la plupart des "croquis" connus d'Arduino fonctionnent également avec cette carte. La communication est possible avec sa connectivité WiFi intégrée, les solutions IoT avec MQTT, CoAP ou HTTP.

Vous pouvez utiliser le Board Explorer (Figure 3, cliquez sur l'icône "Boards" dans PIO Home) pour voir si votre propre carte est supporté par PlatformIO. Avec plus de 470 cartes actuellement supportées, la probabilité est assez élevée

 IoT

Figure 3: Trouver son propre forum

Après avoir entré le nom du forum, vous pouvez rapidement trouver votre propre forum. Le tableau montre les plateformes supportées, les frameworks et quelques données techniques du forum. Chaque carte a un ID de carte, qui est visible sur l'icône "+" après l'ouverture de l'entrée. Cet ID de carte devient pertinent pour la création de projet et peut être copié dans le presse-papiers.

Une recherche similaire pour les plateformes embarquées est également disponible en cliquant sur "Plates-formes". L'interconnexion entre les cartes, les plates-formes et les frameworks vous permet de vérifier les options de mise en œuvre que vous avez. Les liens mènent à la documentation du fabricant ou aux référentiels de code source (Figure 4)

 IoT

Figure 4: Explorer les frameworks intégrés

Premier exemple de projet

Normalement, vous créez un nouveau projet via l'Assistant Projet PIO. Après avoir cliqué sur "Nouveau projet" dans l'écran d'accueil, l'assistant s'ouvre et demande les conditions minimales requises pour la création d'un projet: Pour quelle planche le projet devrait-il fonctionner, et avec quel framework intégré devrait-il fonctionner? Le premier choix détermine la chaîne d'outils du compilateur à installer

Pour ESP8266, c'est la chaîne d'outils pour les processeurs xTensa (l'ESP8266 est un Tensilica xTensa) avec le soi-disant Esptool pour le clignotement. Ce dernier choix de cadre détermine d'où le code de cadre doit être téléchargé. Dans notre cas, il provient du référentiel Github du système Espressif. PlatformIO installe automatiquement la chaîne d'outils et les frameworks dans le répertoire de base local d'un utilisateur et les rend disponibles dans l'EDI et la ligne de commande. C'est une énorme simplification et accélération, surtout lors du changement de cartes ou de plates-formes!

Pour démarrer le plus rapidement possible avec du code fonctionnel, nous sélectionnons un exemple en cliquant sur "Exemples de projets". PIO a des exemples de différentes plates-formes, et la zone Arduino est abondante (Figure 5).

 IoT

Figure 5: Sélection d'un modèle d'échantillon

Les exemples sont triés par plate-forme. Comme exemple de démarrage simple, nous sélectionnons l'exemple "arduino-blink" dans la catégorie "Espressif8266". Un clic sur "Import" crée le projet et l'ouvre dans l'explorateur VSCode

VOIR AUSSI: Les PKI sont-elles la clé pour sécuriser l'IoT?

Pour PlatformIO, un projet se trouve dans un répertoire contenant tous sources, bibliothèques dépendantes, paramètres du framework / board sélectionné ("environnement") et du code binaire compilé. Un .gitignore approprié est inclus qui exclut les répertoires avec des fichiers binaires ou des paramètres IDE locaux

Le code source "Sketch" peut être trouvé dans src / main.cpp. Le framework Arduino est implémenté en C ++ et fournit aux classes un degré d'abstraction pour de nombreuses fonctionnalités qui facilitent le démarrage. Même ceux qui n'ont pas encore programmé ou pas programmé beaucoup en C / C ++ devraient bien s'entendre ici. (Et, oui, derrière chaque instruction C il doit y avoir un point-virgule 🙂 La liste 1 montre l'exemple généré:

 #include "Arduino.h"
void setup() {
  // initialise la broche numérique LED en tant que sortie.
  pinMode (LED_BUILTIN, OUTPUT);
}
void loop () {
  // allume la LED (HIGH est le niveau de tension)
  digitalWrite (LED_BUILTIN, HIGH);
  // attend une seconde
  retard (1000);
  // éteint la LED en faisant baisser la tension
  digitalWrite (LED_BUILTIN, LOW);
   // attend une seconde
  retard (1000);
} 

L'esquisse est divisée en deux sections. La fonction setup () est appelée une fois lors de l'initialisation de la carte. Il contient du code qui prépare certaines préparations. Dans l'exemple, le port d'E / S pour la LED ("LED_BUILTIN") installé en permanence sur la carte est réglé sur "OUTPUT" via "pinMode" – pour pouvoir changer la LED.

La boucle ( La méthode est appelée en continu par Arduino Framework, qui s'attend à ce que la fonction ne bloque pas longtemps mais retourne pour être rappelée. Dans l'exemple, "digitalWrite" règle la LED sur "HIGH" ou "LOW" pour l'allumer et l'éteindre. (Astuce: la LED installée en permanence sur le NodeMCU est inversée, HIGH l'éteint, LOW l'allume.) Entre les deux, attendez avec "delay".

VOIR AUSSI: Ce que vous devez savoir sur IoT et la sécurité cybernétique

À ce stade, nous étendons l'esquisse par une sortie de programme sur l'interface série, donc une "consignation embarquée en simple". La classe C ++ correspondante dans le framework Arduino est appelée "Serial" et est prédéfinie. Il offre plusieurs fonctions de sortie du premier port série câblé au câble USB sur la plupart des cartes (compatibles Arduino).

 void setup () {
  // initizalize Serial avec 9600 bps
  Serial.begin (9600);
  pinMode (LED_BUILTIN, OUTPUT);
}

void loop () {
  // envoie quelque chose ..
  Serial.print (".");
  digitalWrite (LED_BUILTIN, HIGH);
  retard (1000);
(...) 

La liste 2 montre les extensions. Dans la fonction setup () le port série est initialisé avec 9600 bits / s (Serial.begin); dans la fonction loop () nous envoyons un point à chaque fois que la fonction est entrée

Compiler, clignoter, surveiller

L'étape suivante consiste à donner vie au code sur la carte. L'extension PIO affiche plusieurs boutons d'action dans le coin inférieur gauche de la barre d'icônes du code PC (Figure 6). Les noms des fonctions peuvent être affichés en survolant de gauche à droite: problèmes de compilation, home PIO, build (compiler / lier sans clignoter), upload (build avec flash), upload sur un périphérique distant (clignotant sur un réseau), clean ( correspond à un make clean), test, tâche d'exécution, moniteur série et terminal

 IoT

Figure 6: Boutons d'action dans le panneau de commandes

En cliquant sur la flèche ("Upload") le projet courant est compilé, lié à un binaire de firmware et téléchargé sur l'appareil connecté via USB, c'est à dire écrit dans la mémoire flash là. PlatformIO reconnaît les cartes connectées par leur signature. Ils peuvent également être affichés sur l'écran d'accueil PIO à tout moment en cliquant sur "Appareils". Sous Linux et MacOS, les ports sont identifiés avec un fichier dans / dev (par exemple /dev/cu.SLAB-USBtoUART ou / dev / ttyUSB0). Sous Windows, ils sont gérés comme les ports COM: xx connus. Tant qu'une seule carte est connectée, aucune autre requête n'est requise. PIO utilise simplement cette seule carte pour la commande de téléchargement

 IoT

Figure 7: Compiler et télécharger

La figure 7 montre le fichier platformio.ini dans la fenêtre de texte supérieure. Il contient la définition des environnements, les combinaisons de conseil et de cadre, ainsi que des paramètres spécifiques. L'exemple contient plusieurs environnements. Pour notre exemple, nous supprimons tout sauf la section [env:nodemcuv2]. Une astuce pour l'ESP8266 à ce stade est d'ajouter la ligne "upload_speed = 921600" à la fin; Cela accélère considérablement le processus de clignotement.

Après avoir cliqué sur le bouton Télécharger dans la barre d'icônes, une fenêtre de terminal s'ouvre et affiche le processus de compilation, de liaison et de téléchargement. Après un clignotement réussi, la carte commence à clignoter selon le croquis. Comment obtenons-nous notre sortie de débogage? Un clic sur l'icône du connecteur (Serial Port Monitor) ouvre une autre fenêtre de terminal avec une instance de miniterm, qui s'ouvre avec le port USB et les paramètres de base 9600bit / s 8N1. Comme dans l'esquisse, vous pouvez voir un point sur la sortie toutes les 2 secondes.

VOIR AUSSI: IoT Developer Survey 2018: Moins parlant, plus fait

Construire le système

PlatformIO fournit à son utilisateur un très bonne abstraction au système de construction sous-jacent. En tant que développeur, vous n'avez pas à gérer les fichiers makefile, les paramètres de lien et d'autres choses, car PIO couvre de nombreuses étapes de construction en utilisant SCons. Dans l'article suivant, les parties sous le capot seront examinées de plus près.

Pour accéder aux différentes fonctions du système de construction à partir de l'EDI, il suffit de cliquer sur l'icône "Exécuter-Tâches". Il ouvre une liste de tâches qui correspondent fondamentalement aux cibles des systèmes de construction, par ex. "Nettoyer" pour supprimer les artefacts de construction. Les amis de la ligne de commande peuvent ouvrir un terminal dans la barre d'icônes et utiliser la commande "pio run -target clean" pour faire de même

 IoT

Figure 8: Compiler et télécharger

Bottom line

montrés ici sont suffisants pour faire les premiers pas avec votre propre carte embarquée loin des environnements de développement spécifiques au fabricant. PlatformIO donne accès à de nombreux cadres de développement. SCons a un système de construction très puissant avec de nombreuses fonctions. Nous reviendrons plus en détail sur SCons dans le prochain article de la série IoT. Ceux-ci incluent le fait d'aller sur tout le travail qui est nécessaire dans les équipes distribuées pour le développement moderne et agile; intégration dans des référentiels de code; environnements continus d'intégration et de livraison; ainsi que la possibilité de tester le code automatiquement.


Arduino Maroc
Acheter Arduino ICI

Source

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *