Accélérer le développement des produits IoT à l'aide d'un écosystème Mbed
Avec la contribution de Rédacteurs nord-américains de DigiKey
2019-11-20
Les équipes de développement de produits embarqués et Internet des objets (IoT) sont sous pression pour terminer et sortir leur conception le plus vite possible. Pour agir rapidement, elles doivent utiliser des composants éprouvés et des structures logicielles avec un écosystème solide. Ces équipes doivent également savoir comment leurs systèmes seront maintenus et évolueront, ce qui signifie que les solutions doivent également être portables et capables de fonctionner sur plusieurs plateformes matérielles si besoin.
Les fournisseurs de microcontrôleurs, cependant, lient souvent les développeurs à leur propre écosystème, ce qui peut rendre plus difficile de basculer entre différents microcontrôleurs. De plus, les outils logiciels pour les écosystèmes de microcontrôleurs sont souvent inadaptés et, pour la plupart, encodés en C, ce qui peut aussi gêner les équipes de développement.
En tenant compte de ces exigences, cet article présente la plateforme et le système d'exploitation Arm Mbed. Il explique comment les développeurs peuvent exploiter l'écosystème Mbed pour accélérer le développement de leur produit embarqué et l'utiliser pour repousser les limites de l'écosystème du fournisseur de microcontrôleurs.
Présentation d'Arm Mbed
Mbed est une plateforme collaborative en ligne gérée par Arm pour les développeurs intéressés par la création de dispositifs IoT1. Mbed fournit aux développeurs une large sélection de ressources conçues pour accélérer le développement, s'étendant du système d'exploitation Mbed et du protocole Mbed TLS jusqu'à des cartes de développement et des composants matériels individuels pris en charge par les bibliothèques Mbed.
Mbed a pour objectif de permettre aux développeurs d'exploiter un vaste écosystème exploité par 200 000 développeurs dans les communautés en ligne ainsi que par de célèbres fournisseurs de microcontrôleurs, tels que Cypress Semiconductor, NXP Semiconductors et STMicroelectronics, pour accélérer leur développement en utilisant des composants, des bibliothèques et des outils de développement existants. L'utilisation de l'écosystème Mbed présente de nombreux avantages :
- Les bibliothèques et les exemples sont écrits en C++, un langage orienté objet moderne qui, selon sa conception, permet de faire évoluer le code et de le réutiliser.
- La capacité d'exploiter une plateforme matérielle existante pour créer rapidement le prototype d'un produit embarqué afin de prouver qu'il est viable.
- Un accès au compilateur en ligne et hors ligne Mbed ainsi qu'à l'interface de ligne de commande (CLI) Mbed, ce qui facilite le développement de tests logiciels (et qui est même inclus dans de nombreux exemples et bibliothèques).
- Des outils intégrés pour le développement de dispositifs IoT, comme le service cloud Connector qui permet non seulement de connecter un dispositif au cloud, mais également de le gérer facilement via d'autres services cloud.
Le modèle architectural général de Mbed rend l'écosystème extrêmement flexible et évolutif pour les développeurs de solutions embarquées. Par exemple, le modèle architectural est généralement divisé en trois couches distinctes (Figure 1) :
- Une couche d'abstraction matérielle (HAL) de bas niveau
- L'API du système d'exploitation Mbed, qui joue le rôle d'intergiciel qui fournit des capacités comme le stockage, un système d'exploitation en temps réel (RTOS), une connectivité sécurisée et des piles de communication
- Une couche IoT de haut niveau qui inclut le code d'application du développeur, les bibliothèques du système d'exploitation Mbed et un ou plusieurs clients de connectivité
Figure 1 : L'architecture Mbed est constituée de trois couches primaires pouvant être développées et étendues au besoin : une interface matérielle de bas niveau extraite via une couche d'abstraction matérielle, une couche API du système d'exploitation Mbed qui extrait un intergiciel et une couche de haut niveau pour l'écriture du code d'application et l'exploitation des bibliothèques et des clients tels que Pelion. (Source de l'image : Arm Mbed)
La façon dont l'architecture est conçue permet à un développeur d'obtenir les composants dont il a besoin pour son application, sans négliger le reste. Cela rend l'architecture évolutive, flexible et simple à utiliser pour les développeurs afin de leur permettre de développer rapidement des prototypes pour les mettre en production plus rapidement.
Mbed implique d'abord du matériel
Bien qu'une solution Mbed permette d'établir de solides bases logicielles, elle offre bien plus qu'un simple logiciel avec les outils nécessaires au développement de ce logiciel. Pour une équipe, le moyen le plus rapide de développer un produit consiste à exploiter aussi l'écosystème matériel Mbed qui comprend trois parties distinctes :
- Modules
- Cartes
- Composants
Les modules sont essentiellement des dispositifs de connectivité axés IoT fournis dans un boîtier prêt à l'emploi et certifié. Par exemple, un développeur travaillant sur un produit prenant en charge LoRaWAN peut choisir le kit de développement de module xDot MTMDK-XDOT-NA1-A00 de Multi-Tech Systems (Figure 2). Le module xDot peut fournir une communication bidirectionnelle atteignant 16 km dans des applications de visibilité directe et de 1,6 km à 4,8 km dans des immeubles avec un débit de données de 293 bits/s à 20 kbits/s. Le module utilise un processeur basse consommation STM32L151CCU6 de STMicroelectronics qui fonctionne à 32 MHz et qui peut être contrôlé à l'aide d'un schéma de messages AT via des interfaces SPI, UART ou I2C.
Figure 2 : Le module xDot offre aux développeurs un module LoRaWAN certifié, pris en charge par les piles logicielles Mbed et pouvant les aider à être opérationnels plus rapidement. (Source de l'image : Multi-Tech Systems Inc.)
Les cartes Mbed sont principalement des cartes de développement de différentes gammes de microcontrôleurs, toutes prises en charge par Mbed. Chaque carte de développement intègre des fonctionnalités et des capacités uniques, fournies par le fournisseur de microcontrôleurs. Par exemple, un développeur qui cherche à travailler avec une carte prenant en charge la connectivité Bluetooth Low Energy (BLE) peut être intéressé par le CY8CKIT-062-BLE de Cypress Semiconductor (Figure 3).
Figure 3 : La carte de développement CY8CKIT-062-BLE contient plusieurs fonctionnalités pour le développement d'un dispositif IoT connecté, notamment un écran E-Ink, des touches et un curseur tactiles capacitifs, un module BLE et un débogueur KitProg2. (Source de l'image : Cypress Semiconductor)
Le kit CY8CKIT est unique. En effet, il contient un microcontrôleur PSoC 62 multicœur sécurisé. L'un des cœurs est un processeur Arm® Cortex®-M4 tandis que l'autre cœur est un processeur Arm Cortex-M0+ basse consommation. Cela permet aux développeurs de diviser le code de leur application, par exemple en utilisant un processeur pour gérer la communication BLE, ou de verrouiller l'application en utilisant le cœur Cortex-M0+ en tant que processeur de sécurité. L'ensemble des extensions E/S disponibles sur les cartes permet aux développeurs de réaliser plus facilement le prototype de leur système en y connectant des composants Mbed.
Un composant Mbed est un composant matériel doté de bibliothèques Mbed prises en charge et d'intergiciels associés qui servent de blocs fonctionnels pour créer un produit. Par exemple, un développeur travaillant sur un projet IoT peut décider d'inclure un capteur de température. Un développeur peut chercher des capteurs de température pris en charge parmi les composants Mbed et peut utiliser, par exemple, le MAX31723PMB1 de Maxim Integrated fourni dans un module périphérique pouvant être utilisé pour un prototypage rapide (Figure 4).
L'avantage de tels composants Mbed est qu'ils sont presque toujours fournis sous forme de carte de développement avec des schémas disponibles. Cela permet au développeur non seulement de voir la configuration matérielle requise pour faire fonctionner le capteur, mais également de disposer d'une bibliothèque logicielle pour lancer le capteur.
Figure 4 : Le module périphérique de thermostat et thermomètre numérique MAX31723PMB1 (schéma illustré) peut facilement être connecté à une carte de développement Mbed, puis la bibliothèque de composants Mbed associée peut être utilisée pour servir d'interface et interagir rapidement avec le capteur de température. (Source de l'image : Maxim Integrated)
De simples capteurs, comme ceux qui mesurent la température et le taux d'humidité, ne sont pas les seuls types de capteurs pouvant être utilisés avec une solution Mbed. Par exemple, pour les développeurs travaillant sur un dispositif médical, le module MAXREFDES220# de Maxim Integrated leur fournira une conception de référence pour un capteur de fréquence cardiaque et de saturation en oxygène dans le sang (SpO2) à placer sur un doigt (Figure 5).
Figure 5 : Le module MAXREFDES220# fournit aux développeurs une carte de développement pouvant offrir une surveillance au doigt de la fréquence cardiaque et SpO2. (Source de l'image : Maxim Integrated)
Il existe également des composants, comme la carte Breakout VL53L0X Flow 114991252 de Seeed Technology, qui peuvent être utilisés dans des applications comme la détection de lumière et les mesures de distance de temps de vol (ToF) en 3D (Figure 6). Un développeur peut être intéressé par ce capteur si, par exemple, il tente de développer des technologies de pointe qui s'appuient sur des mouvements.
Figure 6 : La carte de capteur Breakout Flow 114991252 de Seeed Technology peut facilement être intégrée dans une carte de développement Mbed et utilisée dans des applications nécessitant une détection de la lumière ou des applications de temps de vol en 3D comme la détection de mouvements. (Source de l'image : Seeed Technology)
Une fois qu'un développeur a choisi sa carte de développement et ses composants, il peut commencer le développement avec la solution Mbed en créant une application LEDBlinky « Hello World » pour déterminer s'il peut programmer correctement sa carte et faire clignoter une LED.
Écrire une application LEDBlinky « Hello World » avec Mbed
Il existe plusieurs moyens de développer une application Mbed : avec un compilateur en ligne, un compilateur hors ligne ou en utilisant l'outil d'interface de ligne de commande (CLI). Selon mon expérience personnelle, il est recommandé d'utiliser l'interface de ligne de commande, car elle permet de mieux contrôler le processus de développement et de faciliter l'intégration dans les processus de développement, comme les logiciels de test et les serveurs d'intégration continue.
L'interface de ligne de commande fournit des capacités permettant à un développeur travaillant dans Windows d'utiliser l'invite de commande pour compiler son code. La première étape de la création d'une application LEDBlinky consiste à utiliser l'exemple pré-établi fourni avec Mbed. Pour ce faire, la commande suivante doit être saisie dans l'invite de commande :
mbed import mbed-os-example-blinky
Le téléchargement de l'exemple peut prendre quelques minutes, car il apporte également la prise en charge du système d'exploitation Mbed et d'autres composants qui peuvent être utilisés dans l'application. Une fois que le téléchargement est terminé, le développeur peut parcourir le dossier mbed-os-example-blinky où se trouve le fichier main.cpp. Ce module peut être ouvert dans l'éditeur préféré du développeur et se présente globalement sous la forme suivante :
Copier #include "mbed.h" #include "platform/mbed_thread.h" #include "stats_report.h" DigitalOut led1(LED1); #define SLEEP_TIME 500 // (msec) #define PRINT_AFTER_N_LOOPS 20 // main() runs in its own thread in the OS int main() { SystemReport sys_state( SLEEP_TIME * PRINT_AFTER_N_LOOPS /* Loop delay time in ms */); int count = 0; while (true) { // Blink LED and wait 0.5 seconds led1 = !led1; thread_sleep_for(SLEEP_TIME); if ((0 == count) || (PRINT_AFTER_N_LOOPS == count)) { // Following the main thread wait, report on the current system status sys_state.report_state(); count = 0; } ++count; } }
Le développeur peut apporter des modifications ici, mais pour répondre à l'objectif de cet article, ces lignes de code sont suffisantes. Il est plus intéressant de compiler et de déployer le code. La commande exacte pour compiler et déployer le code varie selon le matériel. Voici un exemple ci-dessous présentant la manière de compiler et programmer la carte de développement CY8CKIT-062-BLE de Cypress en une seule commande :
mbed compile -m CY8CKIT_062_BLE -t GCC_ARM -f
La compilation du projet pour la première fois peut prendre plusieurs minutes étant donné que la chaîne d'outils doit créer tous les fichiers associés nécessaires à une application Mbed. Une fois que le cycle de compilation est terminé, le résultat doit ressembler à la Figure 7 ci-dessous.
Figure 7 : La sortie du compilateur Mbed une fois que le projet LEDBlinky a été compilé avec succès. (Source de l'image : Jacob Beningo)
L'option -f dans la ligne de commande récupère automatiquement le fichier Hex compilé et le compile sur la carte de développement, qui apparaît en tant que dispositif de stockage de masse DAPLink. À ce stade, une LED doit clignoter, et le développeur peut commencer à développer son application primaire.
Conseils et astuces pour travailler avec Mbed
Commencer à utiliser Mbed est plutôt simple, mais les développeurs peuvent avoir à relever quelques défis. Les quelques « conseils et astuces » suivants permettent de commencer à développer un produit avec Mbed :
- Évitez d'utiliser le compilateur en ligne. Les amateurs peuvent s'en servir, mais, pour les professionnels, le fait que le code source soit sur les serveurs d'autres personnes peut être problématique. De plus, les allers-retours sur le cloud peuvent ralentir le débogage. Un compilateur local tel que l'environnement de développement intégré Mbed ou l'interface de ligne de commande représentent de meilleures options.
- Mbed prend en charge le multi-threading, mais la fonction principale s'exécute par défaut dans son propre thread.
- Commencez par des projets d'exemple Mbed et étudiez-les pour comprendre comment travailler plus efficacement avec des applications Mbed.
- Exploitez le logiciel de test Mbed pour vérifier que le développement de l'application n'a rien détérioré accidentellement dans la structure Mbed.
- Utilisez le site matériel Mbed pour rechercher des cartes de développement, des composants et des modules pouvant être rapidement intégrés ensemble pour développer un produit.
En suivant ces conseils, les développeurs sont assurés de réduire le temps passé à développer leur produit embarqué.
Conclusion
Les développeurs de produits embarqués et IoT ont besoin d'un écosystème bien pris en charge qui leur offre des outils, des processus et des logiciels modernes pour les aider à développer leur produit plus rapidement et à limiter les coûts de développement. Comme nous l'avons vu, la plateforme et le système d'exploitation Mbed constituent une option envisageable que les développeurs peuvent exploiter.
Mbed fournit une architecture évolutive et flexible avec plusieurs composants déjà intégrés et testés ensemble. La prise en charge étendue de divers modules matériels, de cartes et de composants permet aux développeurs de créer facilement un prototype de produit qui peut ensuite évoluer en une solution de production.
Références
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é.




