Microcontrôleur et UI moderne, c’est possible !

fluid.e engineering
3 min readOct 30, 2020

Nous avons déjà présenté la différence entre Raspberry Pi et Arduino. Dans cet article, nous vous expliquions qu’une Raspberry Pi est nécessaire si l’on veut une interface utilisateur moderne. En réalité, il existe une alternative permettant de créer une UI sur microcontrôleur, c’est la librairie LVGL et c’est l’objet de cet article.

Qu’est ce que c’est que LVGL UI ?

LVGL (Light and Versatile Graphics Library) est une librairie graphique open source donnant accès à tous les éléments nécessaires pour créer une interface graphique tout en ne nécessitant que très peu de mémoire. Elle gère tous les types d’écran, tactile ou non et peut être utilisée avec la majorité des microcontrôleurs 32 bits. Cette librairie a également l’avantage d’avoir une importante communauté et donc d’être compatible avec un grand nombre de combinaisons d’écrans et de MCU.

Cet article n’a pas pour but de vous expliquer comment utiliser la librairie mais plutôt vous faire découvrir ses possibilités et vous aider dans le choix des composants.

Quand l’utiliser ?

La réponse à cette question est assez simple : quand vous ne pouvez pas utiliser de raspberry pi. Dans certaines applications, il est en effet impossible d’utiliser une Raspberry Pi, notamment pour des questions de consommation énergétique. Dans ce cas, LVGL est la meilleure option.

Cependant, il faut être conscient que développer une interface grâce à cette librairie prend beaucoup plus de temps qu’une interface web classique et il est parfois préférable lorsque l’on fait du prototypage rapide de faire un compromis afin d’utiliser une Raspberry Pi. De plus, les possibilités d’animation sont plus limitées et il est impossible de lire une vidéo.

Quel microcontrôleur et écran choisir ?

Avant de savoir quel microcontrôleur choisir, il faut savoir quel type d’interface et de fonctionnalités sont souhaitées. En effet, si l’on souhaite utiliser des animations, le taux de rafraichissement de l’écran devient un critère important pour éviter les saccades, et un microcontrôleur rapide et/ou avec un GPU intégré, devient nécessaire.

Si les animations ne sont pas nécessaires, un microcontrôleur basé sur un Cortex M4 à plus de 40 MHz est généralement un bon choix. Il est possible de faire fonctionner la librairie avec un Cortex M0 mais les performances risquent d’être limitées et ces microcontrôleurs n’ont pas toujours les interfaces et la mémoire nécessaire pour utiliser la librairie.

En parlant d’interface, il y a 2 grandes possibilités :

- Un MCU avec une interface TFT interne

- Un contrôleur LCD externe

Dans le cas d’un contrôleur externe, il faut s’assurer que le MCU dispose d’une interface suffisamment rapide pour obtenir des performances suffisantes. Par exemple, pour un écran connecté en SPI, une fréquence d’au moins 10 MHz est conseillée, 80 MHz si vous souhaitez utiliser des animations.

Le dernier point important est la mémoire. Le minimum pour utiliser la librairie est 64 kB de ROM et 8 kB de RAM. Cependant pour éviter divers problèmes et pour pouvoir utiliser des images comme votre logo dans l’interface, je conseillerai plutôt 256 kB de ROM et 32 kB de RAM minimum.

Comme microcontrôleur adapté on peut citer par exemple le STM32F429 qui dispose d’un contrôleur TFT intégré, ou encore le STM32F205 qui intègre un bus parallèle FSMC et un bus SPI à 30 MHz.

A noter également que l’ESP32 est compatible avec LVGL grâce à son bus SPI rapide, et cette combinaison peut donc représenter un excellent choix pour un petit objet connecté nécessitant une interface.

En termes d’écran, de nombreux modèles sont disponibles chez Adafruit, ils devraient convenir à la plupart des usages : https://learn.adafruit.com/using-littlevgl-with-adafruit-displays/featured_products

Si aucun modèle ne convient, LVGL supporte notamment ces 3 contrôleurs TFT : ILI9341, SSD1306, SSD1963. De nombreux écrans sont disponibles avec ces contrôleurs dans une grande variété de tailles.

Conclusion

Grâce à cette librairie, on peut créer une interface sans avoir besoin d’un micro-ordinateur comme une Raspberry. C’est un outil idéal pour de nombreux usages mais le fait que sa mise en œuvre soit plus difficile qu’une interface web classique le rend moins recommandable pour du prototypage rapide.

Si vous avez besoin d’aide pour réaliser votre projet, contactez-nous.

--

--