Im ersten Teil habe ich mir das Board im Detail angeschaut und einen ersten Eindruck gesammelt.
Jetzt wird es praktisch.
In diesem Beitrag zeige ich dir, wie du das ESP32-S3 RLCD Display von Waveshare ganz bequem mit der Arduino IDE programmierst und erste Inhalte auf dem Display darstellst.
Dank der Unterstützung von LVGL (Light and Versatile Graphics Library) ist der Einstieg überraschend einfach. Wenn du bereits Erfahrungen mit dem bekannten CYD (Cheap Yellow Display) gesammelt hast, wirst du dich hier sehr schnell zurechtfinden.
👉 Ziel ist es, nicht nur das Demo-Programm zu nutzen, sondern eigene Inhalte wie Text, Werte oder später sogar kleine Dashboards auf dem RLCD darzustellen.
Transparenzhinweis:
Das Gerät wurde mir von Waveshare für dieses Review kostenfrei zur Verfügung gestellt. Ich freue mich immer, wenn ich in dieser Form unterstützt werde und neue Hardware frühzeitig testen kann.Selbstverständlich hat dies keinen Einfluss auf meine Bewertung – ich teile wie gewohnt meine ehrliche Meinung und praktische Erfahrungen mit dem Board.
Arduino IDE für das ESP32-S3 RLCD einrichten
Damit wir das Display programmieren können, müssen wir zunächst die Arduino IDE vorbereiten.
1. ESP32 Boardpaket installieren
- Arduino IDE öffnen
- Datei → Einstellungen
- folgende URL hinzufügen:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
2. Board installieren
- Werkzeuge → Board → Boardverwalter
- nach ESP32 suchen
- „esp32 by Espressif Systems“ installieren




3. Richtiges Board auswählen
Auf dem Board ist ein ESP32-S3 verbaut, somit wählen wir unter Werkzeuge > Boards > esp32 das Modul ESP32S3 Dev Module aus.


Für serielle Ausgaben muss zusätzlich noch die Auswahl bei der Konfiguration „USB CDC On Boot“ auf Enabled gesetzt werden.
4. Boardkonfiguration
Damit das Board korrekt angesteuert werden kann, müssen zunächst die richtigen Einstellungen in der Boardkonfiguration vorgenommen werden.
- USB CDC On Boot > Enabled
- Flash Mode > „QIO 80 MHz“
- Flash Size > „16MB (128Mb)“
- Partition Scheme > „16M Falsh (3MB APP/9.9 FATS)“
- PSRAM >“OPI PSRAM“
Wird diese Konfiguration nicht korrekt gesetzt, kommt es zu einem Assertion Error. Im seriellen Monitor der Arduino IDE erscheint dann folgende Fehlermeldung:
E (285) esp_core_dump_flash: Core dump flash config is corrupted!
CRC=0x7bd5c66f instead of 0x0
E (294) esp_core_dump_elf: Elf write init failed!
E (298) esp_core_dump_common: Core dump write failed with error=-1
Rebooting...
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
Saved PC:0x4037f489
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce2820,len:0x10cc
load:0x403c8700,len:0xc2c
load:0x403cb700,len:0x30c0
entry 0x403c88b8
assert failed: DisplayPort::DisplayPort(int, int, int, int, int, int, int, spi_host_device_t)
C:\Users\stefa\Downloads\ESP32-S3-RLCD-4.2-main\ESP32-S3-RLCD-4.2-main\02_Example\Arduino\09_LVGL_V9_Test
Erstes Beispiel: „Hello World!“ auf dem RLCD anzeigen
Nachdem die Arduino IDE korrekt eingerichtet ist und das Board erkannt wird, starten wir mit einem einfachen ersten Beispiel.
👉 Ziel: Eine erste Ausgabe auf dem Display – unser klassisches „Hello World!“.




Als Grundlage nutze ich das von Waveshare bereitgestellte Beispielprojekt: 👉 09_LVGL_V9_Test
Dieses findest du im offiziellen Repository unter:
ESP32-S3-RLCD-4.2/02_Example/Arduino/09_LVGL_V9_Test/
#include "display_bsp.h"
#include "src/app_bsp/lvgl_bsp.h"
#include "src/ui_src/generated/gui_guider.h"
static lv_ui init_ui;
DisplayPort RlcdPort(12, 11, 5, 40, 41, 400, 300);
static void Lvgl_FlushCallback(lv_display_t *drv, const lv_area_t *area, uint8_t *color_map) {
uint16_t *buffer = (uint16_t *)color_map;
for (int y = area->y1; y <= area->y2; y++) {
for (int x = area->x1; x <= area->x2; x++) {
uint8_t color = (*buffer < 0x7fff) ? ColorBlack : ColorWhite;
RlcdPort.RLCD_SetPixel(x, y, color);
buffer++;
}
}
RlcdPort.RLCD_Display();
lv_disp_flush_ready(drv);
}
void setup() {
RlcdPort.RLCD_Init();
Lvgl_PortInit(400, 300, Lvgl_FlushCallback);
if (Lvgl_lock(-1)) {
create_hello_world_pyramid();
Lvgl_unlock();
}
}
void loop() {
vTaskDelay(pdMS_TO_TICKS(1000));
}
void create_hello_world_pyramid() {
lv_obj_t *screen = lv_scr_act();
lv_obj_set_style_bg_color(screen, lv_color_white(), LV_PART_MAIN);
lv_obj_set_style_bg_opa(screen, LV_OPA_COVER, LV_PART_MAIN);
const lv_font_t *fonts[] = {
&lv_font_montserrat_48,
&lv_font_montserrat_40,
&lv_font_montserrat_32,
&lv_font_montserrat_24,
&lv_font_montserrat_18,
&lv_font_montserrat_12,
};
int yPositions[] = { 25, 85, 135, 180, 220, 250 };
for (int i = 0; i < 6; i++) {
lv_obj_t *label = lv_label_create(screen);
lv_label_set_text(label, "Hello World!");
lv_obj_set_style_text_font(label, fonts[i], LV_PART_MAIN);
lv_obj_set_style_text_color(label, lv_color_black(), LV_PART_MAIN);
lv_obj_align(label, LV_ALIGN_TOP_MID, 0, yPositions[i]);
}
}
Zusätzliche Schriftgrößen in LVGL aktivieren
Für unser Beispiel möchten wir verschiedene Schriftgrößen verwenden. Standardmäßig sind in LVGL jedoch nicht alle Fonts aktiviert, um Speicher zu sparen.
👉 Deshalb müssen wir einige Schriftgrößen manuell freischalten.
Datei anpassen
Öffne die Datei:
C:\Users\<Benutzername>\Documents\Arduino\libraries\lvgl\lv_conf.h
👉 Scrolle dort zum Abschnitt „FONT USAGE“.
Schriftgrößen aktivieren
Setze die folgenden Einträge von 0 auf 1:
#define LV_FONT_MONTSERRAT_12 1 #define LV_FONT_MONTSERRAT_14 1 #define LV_FONT_MONTSERRAT_16 1 #define LV_FONT_MONTSERRAT_18 1 #define LV_FONT_MONTSERRAT_24 1 #define LV_FONT_MONTSERRAT_32 1 #define LV_FONT_MONTSERRAT_40 1 #define LV_FONT_MONTSERRAT_48 1
👉 Dadurch werden die jeweiligen Schriftgrößen im Projekt verfügbar.
Hintergrund
LVGL ist so aufgebaut, dass nur die tatsächlich benötigten Ressourcen eingebunden werden.
👉 Das spart Speicher – ist aber am Anfang etwas ungewohnt.
Fazit: Einstieg geschafft – jetzt wird es spannend
Mit der richtigen Konfiguration in der Arduino IDE und der Einrichtung von LVGL ist der Einstieg in das Waveshare ESP32-S3 RLCD Display deutlich einfacher, als man zunächst vermuten würde.
👉 Bereits mit wenigen Zeilen Code lässt sich eine eigene Ausgabe auf dem Display realisieren.
Besonders positiv fällt dabei auf:
- LVGL ermöglicht eine sehr flexible Darstellung von Inhalten
- das RLCD-Display reagiert schnell und ohne störendes Flackern
- die Kombination aus ESP32-S3 und Display bietet eine starke Basis für eigene Projekte
Natürlich gibt es auch ein paar Stolpersteine – insbesondere bei der Boardkonfiguration und den benötigten Fonts. Hat man diese Hürden jedoch einmal genommen, steht eigenen Projekten nichts mehr im Weg.
👉 Genau hier wird es jetzt interessant.
Ausblick: Vom „Hello World“ zum echten Projekt
Im nächsten Schritt reicht ein statischer Text natürlich nicht mehr aus.
👉 Deshalb zeige ich dir im nächsten Beitrag ein konkretes Praxisprojekt:
- Daten aus einer öffentlichen API abrufen
- Darstellung als Newsticker
- Kombination aus Text und Bildern mit LVGL
- Dynamische Aktualisierung der Inhalte
👉 Ziel: Ein echtes, praxisnahes Dashboard auf dem RLCD-Display.
Quellen & weiterführende Links
Für diesen Beitrag habe ich auf die offiziellen Dokumentationen und Beispiele von Waveshare zurückgegriffen. Wenn du tiefer in das Thema einsteigen möchtest, findest du hier die wichtigsten Ressourcen:
- Offizielle Dokumentation & Ressourcen
https://docs.waveshare.com/ESP32-S3-RLCD-4.2/Resources-And-Documents - Produktseite mit technischen Details
https://www.waveshare.com/esp32-s3-rlcd-4.2.htm - Weitere Beispielprojekte & Tutorials (Arduino)
https://docs.waveshare.com/ESP32-Arduino-Tutorials/Fun-Project - GitHub Repository mit allen Beispielen
https://github.com/waveshareteam/ESP32-S3-RLCD-4.2/tree/main
Letzte Aktualisierung am: 05. Mai 2026




