Meilleures solutions IoT pour vos GUI embarqués
Quelle technologie GUI utiliser pour votre système embarqué IoT ? Avantages et inconvénients des différentes solutions IoT du marché.
10/09/2021
Nathanaël Landais
Il existe aujourd’hui de très nombreux choix de bibliothèques permettant de développer des GUI IoT embarqué. Dans cet article, je vais passer en revue quelques-unes des technologies qui me semblent les plus pertinentes aujourd’hui. Nous allons voir leurs avantages et inconvénients.
Je suis Nathanaël Landais , architecte en développement de logiciels embarqués IoT. J’ai conçu et développé des systèmes embarqués s’appuyant sur des composants open source aujourd’hui distribués en centaines de milliers d’exemplaires à travers le monde. Leur point commun, des interfaces utilisateur modernes et fluides.
1. Qt – Du grille-pain connecté au tableau de bord de voiture
On ne le présente plus, Qt domine le marché de l’interface utilisateur embarqué
et n’est pas arrivé là par hasard. Décliné en deux versions, la version complète
de Qt pour les systèmes Linux et Qt MCU qui fonctionne également sur du bare metal,
ce framework permet de faire tourner des interfaces utilisateur fluide sur à peu près
tous les systèmes imaginables. S’il sait tirer profit d’un module GPU, il fonctionne
également sans.
Mais alors, avantages, inconvénients de Qt pour votre système IoT ?
Les avantages
- Sa très grande compatibilité.
- Le système « un code pour plusieurs cibles » : vous pouvez mutualiser votre code entre différents systèmes, ou pour compiler une interface déportée vers Android/iOS par exemple.
- Des interfaces au look moderne et fluide.
- Une forte communauté, maîtrisé par beaucoup de développeurs sur le marché. C’est un avantage au moment de recruter de nouveaux développeurs, mais aussi pour trouver rapidement des solutions aux problèmes rencontrés pendant le développement.
Les inconvénients
-
La licence open source LGPL contraignante :
Il est possible d’utiliser Qt sans s’acquitter de frais de licence commerciale, en l’utilisant sous LGPL, celle-ci s’avère cependant contraignante. -
Les royalties à payer sur chaque produit vendus (sous licence commerciale uniquement).
La licence commerciale implique de s’acquitter de coûteuses licences de distributions pour chaque système vendu - La configuration d’un Linux embarqué pouvant faire tourner Qt peut parfois être compliquée.
2. TouchGFX – La solution GUI propriétaire de STMicroelectronic
Si vous envisagez d’utiliser une carte équipée d’un microcontrôleur STM32, la solution proposée par le fabricant pourrait très bien vous convenir. TouchGFX est un outil plutôt facile à prendre en main permettant de concevoir des interfaces utilisateur en no-code.
Les avantages
- Simple à mettre en place.
- Un outil de design d’interface no-code.
- Gratuit.
Les inconvénients
- Compatible uniquement STM32, votre interface est dépendante de vos choix techniques d’aujourd’hui.
- Moins flexible que d’autres solutions tel que Qt.
3. uGFX – Une solution GUI simple et abordable
uGFX est conçu avec un objectif clair, être aussi léger et rapide que possible. Très modulable, il peut tourner sur des systèmes peu puissants comme sur des systèmes plus équipés, tirant profit, comme Qt, de l’accélération matériel. Pas de version spéciale pour du développement bare metal, il est conçu pour fonctionner aussi bien avec que sans OS.
Les avantages
- Très léger et performant.
- Fonctionne sur bare metal.
-
Un tarif très attractif : un coût unique de 1650 $ pour une licence commerciale,
aucune licence de distribution nécessaire.
Face au principal concurrent Qt qui demande environ 5000 euros par développeur actif et par an et demande de payer des licences de distribution.
Les inconvénients
- Moins complet que ses concurrents (Mais suffisant pour de nombreux projets !).
4. Sciter – Le web au régime
Sciter est un moteur web conçu de zéro pour les systèmes embarqués. Là où les alternatives partent des principaux moteurs web grand public pour en faire des versions allégées pour systèmes embarqués, Sciter est lui conçu de zéro pour la légèreté, en faisant un bon candidat pour qui veut une interface web fluide sur des projets IoT aux ressources limitées.
Les avantages
- L’utilisation du HTML/CSS peut permettre de mutualiser le code avec une interface déportée par navigateur (sous réserve de se limiter aux fonctions supportées par Sciter).
- Plus rapide que les moteurs web concurrents.
Les inconvénients
- Toujours plus lent que les solutions natives.
- C’est un moteur web, pas une librairie, l’intégration peut-être plus compliquée.
- Le support du HTML/CSS est limité et n’intègre pas les fonctionnalités les plus récentes. C’est le prix de sa légèreté.
- Même problème pour le JavaScript, Sciter embarque une version simplifiée de JavaScript appelée sobrement Script.
- Payant, comptez 2720$ pour accéder à la version Linux, l’accès aux sources doit lui être renouvelé tous les ans.
5. WPE – Le web sans concession
Je parlais pour Sciter des moteurs web généralistes allégés pour l’utilisation avec des objets connectés, WPE est l’un d’entre eux. WPE signifie Web Platform for Embedded, c’est un moteur web basé sur WebKit. Il a été allégé dans ce but mais conserve toutes les fonctionnalités importantes.
Les avantages
- Complètement open source et gratuit (sous licence LGPL et BSD).
- Support complet de HTML5/CSS3 et JavaScript.
- Il est possible de mutualiser complètement le code de votre GUI embarqué avec une interface web débarquée.
Les inconvénients
- Plus gourmand en ressource que la plupart des alternatives.
- La licence LGPL toujours contraignante, comme pour Qt.
Et dans le futur ?
J’ai mentionné à plusieurs reprises la possibilité de mutualiser
du code d’interface utilisateur entre le système embarqué et un écran
déporté. C’est une possibilité qui peut-être à mon sens très utile pour
de nombreux projets. Permettre de contrôler un système IoT à distance,
pouvoir bénéficier d’un écran plus confortable pour contrôler un objet
connecté ou encore permettre de contrôler une borne de commande, une machine
à café sans la toucher (utile et nécessaire en période de crise sanitaire).
Je pense donc que le futur des technologies de GUI embarqué est multiplateforme.
Pour ma part, j’ai le regard posé sur Flutter, cette technologie de Google qui
permet déjà avec un même code de générer des GUI pour les différents systèmes
mobiles, mais aussi pour les moteurs web. Il existe déjà quelques expérimentations,
notamment de Sony, visant à faire compiler Flutter nativement pour systèmes
embarqués.
Rien d’officiel pour le moment malheureusement, mais rien n’empêche de rêver !
Si vous souhaitez développer un produit équipé d’une interface utilisateur moderne
et fluide, vous pouvez faire appel à moi pour discuter de la solution adaptée à
votre projet. C’est sans engagement, alors contactez-moi directement !