Best IoT Solutions for Your Embedded GUIs
Which GUI technology to use for your embedded IoT system? Advantages and disadvantages of different IoT solutions on the market.
10/09/2021
Nathanaël Landais
There are now many library options available for developing embedded IoT GUIs. In this article, I'll review some of the technologies that seem most relevant today. We'll look at their advantages and disadvantages.
I'm Nathanaël Landais, an architect in IoT embedded software development. I've designed and developed embedded systems relying on open source components now distributed in hundreds of thousands of units around the world. Their common thread: modern and fluid user interfaces.
1. Qt – From Connected Toaster to Car Dashboard
It needs no introduction—Qt dominates the embedded user interface market
and didn't get there by chance. Available in two versions: the full version
of Qt for Linux systems and Qt MCU which also works on bare metal,
this framework can run fluid user interfaces on just about
any imaginable system. While it can take advantage of a GPU module, it also
works without one.
So what are the advantages and disadvantages of Qt for your IoT system?
Advantages
- Very broad compatibility.
- The "one code for multiple targets" system: you can share your code between different systems, or compile a remote interface for Android/iOS for example.
- Modern and fluid looking interfaces.
- A strong community, mastered by many developers in the market. This is an advantage when recruiting new developers, but also for quickly finding solutions to problems encountered during development.
Disadvantages
-
The constraining LGPL open source license:
It's possible to use Qt without paying commercial license fees, by using it under LGPL, however this proves constraining. -
Royalties to pay on each product sold (commercial license only).
The commercial license involves paying costly distribution licenses for each system sold - Configuring an embedded Linux system that can run Qt can sometimes be complicated.
2. TouchGFX – STMicroelectronics' Proprietary GUI Solution
If you're considering using a board equipped with an STM32 microcontroller, the manufacturer's solution might suit you very well. TouchGFX is a rather easy-to-use tool for designing user interfaces with no-code.
Advantages
- Simple to set up.
- A no-code interface design tool.
- Free.
Disadvantages
- Only compatible with STM32, your interface is dependent on your technical choices today.
- Less flexible than other solutions like Qt.
3. uGFX – A Simple and Affordable GUI Solution
uGFX is designed with a clear objective: to be as lightweight and fast as possible. Very modular, it can run on less powerful systems as well as more equipped ones, taking advantage, like Qt, of hardware acceleration. No special version for bare metal development—it's designed to work equally well with or without an OS.
Advantages
- Very lightweight and performant.
- Works on bare metal.
-
A very attractive price: a one-time cost of $1650 for a commercial license,
no distribution license required.
Compared to the main competitor Qt which charges around 5000 euros per active developer per year and requires distribution licenses.
Disadvantages
- Less complete than its competitors (But sufficient for many projects!).
4. Sciter – The Web on a Diet
Sciter is a web engine designed from scratch for embedded systems. Where alternatives start from major consumer web engines to create lightened versions for embedded systems, Sciter is designed from the ground up for lightness, making it a good candidate for those wanting a fluid web interface on IoT projects with limited resources.
Advantages
- Using HTML/CSS can allow sharing code with a remote browser interface (provided you limit yourself to functions supported by Sciter).
- Faster than competing web engines.
Disadvantages
- Still slower than native solutions.
- It's a web engine, not a library; integration may be more complicated.
- HTML/CSS support is limited and doesn't include the most recent features. That's the price of its lightness.
- Same issue for JavaScript—Sciter embeds a simplified version of JavaScript simply called Script.
- Paid—expect $2720 to access the Linux version; source access must be renewed annually.
5. WPE – The Web Without Compromise
I mentioned for Sciter the general-purpose web engines lightened for use with connected objects—WPE is one of them. WPE stands for Web Platform for Embedded; it's a web engine based on WebKit. It's been lightened for this purpose but retains all important features.
Advantages
- Completely open source and free (under LGPL and BSD licenses).
- Full support for HTML5/CSS3 and JavaScript.
- It's possible to completely share code between your embedded GUI and a remote web interface.
Disadvantages
- More resource-intensive than most alternatives.
- The LGPL license is still constraining, as with Qt.
And in the Future?
I've mentioned several times the possibility of sharing
user interface code between the embedded system and a remote
screen. This is a capability that can, in my opinion, be very useful for
many projects. Allowing remote control of an IoT system,
benefiting from a more comfortable screen to control a connected
object, or enabling touchless control of an ordering terminal or coffee
machine (useful and necessary during a health crisis).
I therefore think the future of embedded GUI technologies is cross-platform.
For my part, I'm watching Flutter, this Google technology that
already allows generating GUIs with the same code for different mobile
systems, but also for web engines. There are already some experiments,
notably from Sony, aiming to compile Flutter natively for embedded
systems.
Nothing official for now unfortunately, but nothing stops us from dreaming!
If you want to develop a product equipped with a modern
and fluid user interface, you can contact me to discuss the solution adapted to
your project. It's non-binding, so contact me directly!