Dynamisez le développement de produits IoT avec la plateforme d'Electric Imp
Avec la contribution de Rédacteurs nord-américains de DigiKey
2017-05-09
La conception d'un produit connecté à Internet nécessite de nombreuses compétences. Les développeurs doivent savoir écrire un logiciel embarqué, construire une carte à circuit, comprendre comment sécuriser leur dispositif et se connecter à un réseau pour mettre à jour et gérer à distance leur dispositif.
L'acquisition de l'expertise et de l'infrastructure pour un seul produit IoT peut s'avérer exigeante, fastidieuse et coûteuse. Les équipes de développement doivent trouver un moyen de dynamiser leur développement et de limiter les tâches requises dans un cycle de conception typique afin de répondre aux exigences de coût et de délai de commercialisation.
De nombreuses plateformes IoT conçues pour répondre à ces besoins commencent à voir le jour, mais celle d'Electric Imp est particulièrement intéressante, car elle combine les éléments matériels et logiciels nécessaires pour accélérer le développement.
Cet article présente la plateforme IoT d'Electric Imp et les instructions pour l'utiliser.
Définition de la plateforme IoT d'Electric Imp
La plateforme d'Electric Imp est une plateforme IoT fournissant aux développeurs une solution complète pour connecter et gérer les dispositifs IoT. La plateforme comprend tous les éléments fonctionnels nécessaires à l'équipe de développement pour rapidement mettre en œuvre leur produit. Ces éléments fonctionnels incluent :
- Matériel entièrement intégré
- Système d'exploitation embarqué
- Pilotes
- API
- Services cloud
- Bibliothèques de codes
- Solutions de sécurité
Pour commencer, les développeurs connectent leurs capteurs et leur matériel propriétaire à un module radio d'Electric Imp comprenant non seulement un logiciel personnalisé, mais également le module ImpOS qui gère une connexion sécurisée au cloud Imp (Figure 1). Les utilisateurs finaux et les développeurs peuvent configurer leurs paramètres Wi-Fi sur leur produit ou sur la plateforme de développement via un dispositif mobile à l'aide de l'application BlinkUp. Après la configuration des données Wi-Fi sur le matériel Imp, ce dernier peut communiquer directement et en toute sécurité avec le cloud Imp, puis se connecter à Internet.
Figure 1 : La plateforme d'Electric Imp comprend du matériel éprouvé entièrement intégré, un logiciel, un système d'exploitation, des API, des services cloud et des fonctionnalités de sécurité pour une connectivité rapide des dispositifs IoT au cloud. (Source de l'image : Electric Imp)
L'utilisation d'une plateforme comme celle d'Electric Imp fournit de nombreux avantages aux développeurs, qui peuvent notamment :
- Réduire considérablement les délais de commercialisation
- Privilégier l'expertise principale de l'entreprise et non la connectivité Internet
- Améliorer la valeur et les facteurs de différenciation du produit
- Éliminer le développement d'une expertise et d'une infrastructure de connectivité
Le matériel d'Electric Imp
Le matériel d'Electric Imp fournit aux développeurs un ensemble matériel standard comprenant :
- Un émetteur-récepteur Wi-Fi 802.11 b/g/n ou a/b/g/n
- Un processeur ARM® Cortex® 32 bits
- Un système d'exploitation robuste intégré avec mises à jour micrologicielles de sécurité
- Des E/S sélectionnables par l'utilisateur, notamment GPIO, PWM et entrée analogique
- Des communications via SPI, UART et I2C
Les modules sont fabriqués par Murata Electronics. Le processeur interne, les options de connectivité Wi-Fi et le conditionnement constituent les principaux facteurs de différenciation pour les concepteurs. Par exemple, le module imp005 (LBWA1UZ1GC-901) est basé sur un processeur ARM Cortex-R4 de 320 MHz et fonctionne sur les bandes 2,45 GHz et 5 GHz. Le module imp003 (LBWA1ZV1CD-716), quant à lui, est basé sur un processeur ARM Cortex-M4F de 144 MHz et fonctionne uniquement sur la bande 2,45 GHz. Les deux modules sont disponibles en boîtier à montage en surface (Figure 2).
Figure 2 : Les modules imp005 (gauche) et imp003 (droite) intègrent un module Wi-Fi et un microcontrôleur ARM Cortex pour limiter l'empreinte du dispositif. (Source de l'image : Murata Electronics)
Les modèles à montage en surface ne seraient pas faciles d'accès sans carte Breakout. Le module imp003 est doté d'IMP003-BREAKOUT, une simple carte Breakout incluant une interface USB pour permettre aux développeurs d'alimenter le dispositif, un phototransistor nécessaire pour programmer le module avec les paramètres Wi-Fi à l'aide de la méthodologie unique BlinkUp d'Electric Imp, et divers composants de support (Figure 3).
Figure 3 : Le module Breakout imp003 est une carte de développement à faible nombre de broches permettant aux développeurs de simplifier l'apprentissage et l'utilisation du matériel d'Electric Imp qui sera à terme utilisé dans les produits finaux. (Source de l'image : Murata Electronics)
La carte Breakout imp005 est légèrement plus sophistiquée, étant donné que le module imp005 comprend non seulement plus de broches, mais également un processeur ARM Cortex-R4 plus puissant (Figure 4). La carte Breakout imp005 inclut également un port Ethernet, une interface USB standard pour l'alimentation du dispositif et la connexion à un hôte, ainsi qu'un phototransistor.
Figure 4 : Le module Breakout imp005 fournit aux développeurs un accès au module imp005 plus puissant comprenant un microcontrôleur ARM Cortex-R4 en plus des options de connectivité avancées comme USB et Ethernet. (Source de l'image : Murata Electronics)
Configuration d'un dispositif Electric Imp à l'aide de BlinkUp
Le problème commun des dispositifs IoT réside dans leur programmation avec les informations du routeur Wi-Fi local. Electric Imp a résolu ce problème grâce à une approche unique utilisant un phototransistor pour programmer un SSID et un mot de passe dans le dispositif.
Les utilisateurs de la plateforme et du produit final téléchargent l'application BlinkUp d'Electric Imp sur leur dispositif mobile, puis saisissent leurs informations réseau dans l'application. À l'invite, l'utilisateur met son dispositif mobile en contact avec le phototransistor. L'écran du dispositif mobile affiche alors une séquence de commandes qui programme le matériel d'Electric Imp (Figure 5). Une fois la programmation terminée, le développement peut commencer.
AVERTISSEMENT ! Ne regardez pas l'écran du dispositif mobile pendant la programmation des informations réseau. Vous risqueriez d'avoir de sérieux maux de tête ou une crise d'épilepsie.
Figure 5 : L'application BlinkUp permet au développeur ou à l'utilisateur de saisir son SSID et son mot de passe Wi-Fi, et de transmettre facilement ces informations au module d'Electric Imp par le biais d'une série de clignotements du dispositif mobile vers le phototransistor. Cela élimine le besoin d'une connectivité supplémentaire comme Bluetooth ou USB. (Source de l'image : Electric Imp)
Une fois que la connexion Internet du module d'Electric Imp est établie par le développeur, le module enregistre un ID unique dans le cloud Imp. Cet ID se trouve également dans l'application BlinkUp. L'ID unique est utilisé pour identifier le module et le connecter à un environnement de développement en ligne. L'ID sert également à lancer les mises à jour micrologicielles du produit et à gérer le dispositif. Un module peut se connecter au cloud par le biais d'un environnement de développement, puis en créant une nouvelle application logicielle, également appelée « modèle », et en associant les ID de modules au modèle (Figure 6).
Figure 6 : La connexion d'un module à un modèle logiciel via le cloud s'effectue simplement en examinant la liste de modules Imp disponibles, puis en attribuant au dispositif un modèle logiciel existant ou un nouveau modèle. (Source de l'image : Electric Imp)
Après la création du modèle, un développeur peut accéder à l'environnement de développement en ligne. Cela permet l'écriture d'un logiciel pour le module d'Electric Imp, ainsi que la génération de code s'exécutant sur le cloud pour communiquer avec ce module. Le code d'application du module et du serveur est écrit en langage de script appelé Squirrel. Squirrel a une notation similaire au langage de programmation C. La transition se fait donc tout naturellement pour les développeurs initiés.
L'environnement de développement se divise en trois parties principales. La première est un code côté serveur, également appelé code agent. La deuxième est le code de dispositif, qui peut être déployé sur un module après la compilation du script et sa gestion par le cloud Imp. La troisième est un journal pouvant être utilisé pour surveiller les comportements de l'agent et du dispositif, ainsi que pour le débogage.
Figure 7 : L'environnement de développement d'Electric Imp est un environnement entièrement intégré permettant aux développeurs de travailler simultanément sur le micrologiciel de leur dispositif et sur le logiciel cloud à partir d'un seul écran. (Source de l'image : Electric Imp)
« Hello World » grâce à un programme à LED clignotante
La mise en œuvre d'une application sur un module d'Electric Imp est très simple. Les objets peuvent être affectés à des fonctionnalités matérielles à partir d'un niveau élevé d'abstraction. Cela permet de convertir le module Imp et le microcontrôleur sous-jacent en boîte noire.
La première étape qu'un développeur doit réaliser est d'inscrire le message « Hello World » sur un terminal ou de faire clignoter une LED. Penchons-nous sur le code nécessaire pour faire clignoter une LED.
D'abord, un développeur doit se connecter à l'environnement de développement et créer un modèle « Hello World » ou « clignotant », puis l'attribuer à son module cible. Comme dans toute application, le développeur doit assigner et configurer les broches et les variables. Dans ce cas, si une LED est connectée à la broche 5, le développeur peut écrire le code pour configurer la LED et créer une variable d'état (Liste 1).
// Create a global variable called 'led' and assign the 'pin' object to it
led <- hardware.pin5;
// Configure 'led' to be a digital output with a starting value of digital 0 (low, 0V)
led.configure(DIGITAL_OUT, 0);
// Create a global variable to store current state of 'led‘
state <- 0;
Liste 1 : L'écriture d'un logiciel pour le module d'Electric Imp est simple grâce aux bibliothèques pré-existantes et au langage de script Squirrel. Ce script configure la LED et crée une variable d'état. (Source du code : Electric Imp)
Une simple fonction d'application peut ensuite être écrite pour faire clignoter la LED (Lliste 2).
function blink()
{
// Invert the value of state:
// when state = 1, 1-1 = 0
// when state = 0, 1-0 = 1
state = 1 - state;
// Write current state to 'led' (which is pin9)
led.write(state);
// Schedule the imp to wakeup in 0.5 seconds and call blink() again
imp.wakeup(0.5, blink);
}
Liste 2 : Le clignotement de la LED ou le contrôle du matériel peut être réalisé par le biais d'un ensemble de bibliothèques simplifiant le développement et pouvant considérablement diminuer le temps de développement. Dans cet exemple, une simple fonction est utilisée pour accéder à une ressource LED et retarder l'exécution de la fonction de 500 millisecondes via ImpOS. (Source du code : Electric Imp)
Et voilà ! Tous les codes Squirrel nécessaires pour la configuration et le clignotement d'une LED sont sur le matériel. Le programme LED peut être écrit en une dizaine de lignes de codes, et un développeur n'est pas obligé de connaître un registre de base ARM. Il lui suffit d'accéder à l'API de haut niveau pour se lancer.
Intégration de capteurs externes dans un modèle Electric Imp
L'intégration de capteurs et de composants externes dans la plateforme d'Electric Imp est également relativement simple. La plateforme permet à un développeur d'inclure une bibliothèque entièrement développée à l'aide de la directive #require, qui est similaire à la directive #include dans le langage de programmation C. Plusieurs types de bibliothèques déjà développées et prêtes à l'emploi sont disponibles pour les développeurs. Ces bibliothèques incluent les éléments suivants :
- Services Web
- Utilitaires
- Pilotes matériels
Les développeurs de produits peuvent interfacer des dispositifs comme des relais, des accéléromètres et des magnétomètres avec le module d'Electric Imp, puis utiliser les bibliothèques déjà écrites pour ces composants afin de démarrer rapidement leur conception. Les bibliothèques sont disponibles sur le centre de développement en ligne d'Electric Imp.
Figure 8 : Electric Imp fournit une grande variété de bibliothèques qui sont prêtes à l'emploi dès le démarrage du développement. Ces bibliothèques accélèrent les délais de développement et fournissent un accès aux dispositifs matériels et services logiciels populaires. (Source de l'image : Electric Imp)
Conseils et astuces pour l'utilisation de la plateforme IoT d'Electric Imp
Il existe plusieurs points que les équipes de développement doivent prendre en compte lors de l'utilisation d'une plateforme comme celle d'Electric Imp. Tout d'abord, le module d'Electric Imp intègre deux composants majeurs, à savoir une radio Wi-Fi et un microcontrôleur dans un seul boîtier. Cette intégration permet une économie de coût et d'espace sur la carte. Ensuite, les développeurs doivent prendre en compte le matériel existant et les bibliothèques de pilotes lors de la sélection des composants pour leurs produits. L'utilisation des bibliothèques existantes peut permettre d'accélérer le cycle de développement.
Enfin, les développeurs doivent se rappeler que la plateforme d'Electric Imp n'est pas directement connectée à Internet. Toutes les communications sont d'abord effectuées via une connexion sécurisée au cloud Imp. Cette connexion utilise ensuite un agent pour transmettre les messages sur le Web. Il existe également des bibliothèques pour les services tiers comme le stockage et l'analyse de données, que les développeurs peuvent utiliser côté cloud. Il convient d'utiliser au maximum les codes existants provenant de ces bibliothèques.
Conclusion
Le développement d'un dispositif IoT peut être réalisé très rapidement si les développeurs utilisent les technologies existantes et exploitent une plateforme IoT. L'utilisation d'une des différentes plateformes actuellement disponibles peut permettre aux développeurs de privilégier leur expertise et de laisser la gestion de l'infrastructure à d'autres entreprises. Comme nous l'avons vu, la plateforme IoT d'Electric Imp constitue une solution intéressante et unique qui mérite de s'y attarder.

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é.