Intelligente Display-Module - Ein smarter Weg zur zeitgemäßen Benutzeroberfläche

30.08.2023 Know-How

Kaum ein eingebettetes Design kommt heute noch ohne Display aus. Die Auswahl und Integration stellen Entwickler jedoch vor Herausforderungen und verlängern den Entwicklungsprozess. Seriell gefertigte, intelligente Display-Module sind häufig eine kosteneffiziente Alternative.

Beim Vergleich eines diskreten Designs mit einem Display-Modul scheint die modulare Lösung zunächst nicht besonders attraktiv zu sein, wenn man die Kosten für die Stückliste betrachtet. Berücksichtigt man jedoch die Geschwindigkeit, mit der die Entwicklung abgeschlossen werden kann, und die Nutzerfreundlichkeit, dreht sich die Rechnung zugunsten der Modullösung. Zum Beispiel bei einer bestehenden Anwendung, die auf einem 8-Bit-Mikrocontroller (MCU) läuft und nun mit einem Vollfarb-Grafikdisplay mit Touch-Oberfläche ausgestattet werden soll. Die meisten MCUs sind zwar in der Lage, über einen integrierten oder diskreten Treiber eine Schnittstelle zu einem LCD-Display herzustellen, doch Größe und Auflösung des Displays wären durch die Ressourcen der MCU begrenzt. So kann die 8-Bit-MCU ein zweizeiliges Dot-Matrix-Display ansteuern, für größere Displays reichen die Verarbeitungsressourcen möglicherweise nicht aus. Zudem muss der Designer eingebettete Software hinzufügen, etwa Bibliotheken und Bilddateien. Kommt eine Touch-Funktionalität dazu, bedeutet das zusätzlichen Entwicklungsaufwand. In der Produktionsphase muss dann eine strenge Eingangskontrolle der Displays durchgeführt werden. Denn es besteht immer die Möglichkeit, dass sich ohne vorherige Ankündigung etwas geändert hat, was eine Optimierung oder Neuentwicklung der Display-Treiber erfordert.

Was Modullösungen mitbringen

Intelligente, modulare Display-Lösungen verfügen in der Regel über eine Industriestandard-Schnittstelle wie I2C, SPI oder UART für die Kommunikation mit dem Host. Manche enthalten auch einen eingebetteten Mikrocontroller. Dieser ist nicht nur für alle Grafikelemente verantwortlich, sondern enthält oft auch eine Vielzahl von I/O und anderen Peripheriegeräten, sodass das Modul in der Lage ist, die komplette Zielanwendung auszuführen.

Viele Module werden durch eine Bibliothek von Funktionen unterstützt, mit denen sie sich relativ einfach durch die Host-MCU steuern lassen. Einige haben auch eine vollwertige integrierte Entwicklungsumgebung (Integrated Development Environment, IDE), die den Entwurf und die Erstellung der grafischen Benutzeroberfläche (Graphical User Interface, GUI) als Teil des Embedded-Designprozesses beinhaltet. Für ein extrem schnelles Prototyping und die Entwicklung von Anwendungen, ohne dass eine Zeile Code geschrieben werden muss, bieten einige dieser IDEs Drag-and-Drop-Workflows im „WYSIWYG"-Stil (What You See Is What You Get).

Der Charme des Modulansatzes besteht also darin, dass alle Treiber, Primitives und GUI-Funktionen bereits entwickelt und getestet wurden. Ingenieure können sich voll und ganz auf das eigentliche GUI-Design konzentrieren. Die Host-MCU kann alle Display-Aufgaben auf das Modul verlagern und somit stehen ihre gesamten Ressourcen für die Hauptanwendung zur Verfügung.

Unterstützung beim Design von Nutzeroberflächen

Um auch das GUI-Design zu unterstützen, hat der Display-Hersteller 4D Systems ein Tool entwickelt, mit dem sich intelligente grafische Benutzeroberflächen möglichst schnell und einfach erstellen lassen. „Workshop4 IDE“ bietet mehrere Entwicklungsumgebungen von der textbasierten bis zur visuellen Programmierung. Durch seine Drag-and-Drop-Funktion ist es intuitiv nutzbar, das klassische Coding entfällt.

Display-Modul für das Rutronik Development Kit RDK2

Aufgrund dieser Vorteile nutzt auch Rutronik für sein Development Kit RDK2 ein intelligentes Display-Modul. Es unterstützt vor allem die Entwicklung von Proof-of-Concepts für vielfältige Anwendungsbereiche wie IoT und IIoT, Smart Wearables oder Smart Home. Das Board basiert auf dem Ultra-Low-Power Hochleistungs-Mikrocontroller CY8C6245AZI-S3D72 von Infineon. Darüber hinaus verfügt das RDK2 über einen externen 512 MBit SEMPER™ NOR-Flash und ein 64 MBit AP Memory APS6404L-3SQR-ZR PSRAM, die über eine QSPI-Schnittstelle angeschlossen sind. Das erweitert die Möglichkeiten des RDK2, wenn diese Speicher gleichzeitig im „Memory Mapped Mode" [XIP] verwendet werden.

Für ein Anwendungsfallbeispiel des RDK2 zur Ermittlung der Luftqualität mittels VOC-Index (Volatile Organic Compounds) kommt als Anzeige- und Eingabe-Medium das gen4-uLCD-43DCT-CLB 4.3" Display von 4D Systems mit integriertem kapazitivem Touchpanel zum Einsatz. Es basiert auf dem DIABLO16 Grafik-Controller und wird über die UART-Schnittstelle angesteuert. Seine Baudrate von 115200 bit/s reicht aus für eine Bedienung des Touchpanels ohne merkliche Verzögerung. Bei Bedarf lässt sich die UART-Baudrate aber auch auf 600 kbit/s erhöhen.

Für eine schnelle Integration mit dem RDK2 empfiehlt sich der Arduino-Adapter 4D-ARDUINO-ADAPTOR-SHIELD-II. Das Firmware-Beispiel „RutDevKit-PSoC62_GEN4_ULCD_43" bezieht sich zwar standardmäßig auf die Daten des VOC-Sensors SPG40 von Sensirion, kann aber auch automatisch auf das Onboard-Potentiometer POT1 umschalten, falls der Sensor am I²C-Bus nicht erkannt wird. Das Potentiometer wird über die ADC-Peripherie ausgelesen. Die ADC-Werte werden dann auf dem Display angezeigt. Das Board „RAB1 – Sensorfusion" mit einem SGP40-Sensor wird ebenfalls von Rutronik erhältlich sein.

Für die Darstellung stellt 4D System die ViSi-Genie Code-Bibliothek zur Verfügung. Sie ist im RDK2-Beispielprojekt „RutDevKit-PSoC62_GEN4_ULCD_43" zur Verwendung in der ModusToolboxTM IDE enthalten, einer hilfreichen Sammlung von Software und Tools für die schnelle Entwicklung mit Infineon MCUs. Um die Code-Bibliothek zu aktivieren, werden die User-API-Konfigurationsfunktionen und Event-Handler implementiert. Sie ermöglichen dem Entwickler, das zu steuern, was im Programm passieren soll, wenn ein bestimmtes Ereignis eintritt, wie z. B. eine Eingabe.

Die Funktionsprototypen, die implementiert werden müssen, damit der ViSi-Genie Stack läuft, sind hier dargestellt:

/* UserApiConfig */

static bool uartAvailHandler(void);

static uint8_t uartReadHandler(void);

static void uartWriteHandler(uint32_t val);

static uint32_t uartGetMillis(void);

static void resetDisplay(void);

 

/* Event handlers */

static void myGenieEventHandler(void);

 

Die Anzeigesteuerung wird ausgeführt, indem die Nachrichten an die einzelnen Objekte auf dem Bildschirm oder an Hintergrundobjekte, die möglicherweise nicht sichtbar sind, gesendet werden. Der Befehl, der den „Angular Meter" mit dem VOC-Index aktualisiert, könnte beispielsweise so aussehen:

/* Update the VOC Index gauge */

genieWriteObject(GENIE_OBJ_ANGULAR_METER, 0, gaugeVal);

Die Ereignisse, z. B. das Berühren der Tasten, werden in regelmäßigen Abständen von 20 Millisekunden oder schneller empfangen, wenn diese Funktion ausgeführt wird:

/* Check for events */

genieDoEvents(true);

Mit der „Workshop4 IDE" können Entwickler grafische Objekte entwerfen und diese in den Speicher des Displays programmieren. Die Beispielanwendung demonstriert die Grundlagen anhand eines „Angular Meter" und eines „Scope"-Gadgets für die Darstellung des VOC-Index. Das „Angular Meter" wird alle 50 Millisekunden und das „Scope" alle 10 Sekunden aktualisiert, sodass Nutzer die aktuellen und vergangenen VOC-Indexwerte gleichzeitig beobachten können.

Das Firmware-Beispiel für das RDK2 und das Workshop4-IDE-Projekt steht auf der Rutronik-Website zum Download bereit: https://www.rutronik.com/rutronik-system-solutions/rutronik-development-kit-rdk2

Weitere Informationen:

 


Weitere Informationen und eine direkte Bestellmöglichkeit finden Sie auch auf unserer e-Commerce-Plattform www.rutronik24.com.

Bleiben Sie auf dem Laufenden, indem Sie unseren Newsletter abonnieren.

The Rutronik Development Kit RDK2 with intelligent display module. Picture: Rutronik

Intelligent display modules are available in various configurations. Picture: 4D Systems

The Workshop4 IDE tool offers developers numerous GUI design options. Picture: 4D Systems

Screen layout of the RDK2 as displayed by Workshop4 IDE. Picture: Rutronik