The Daily Newsstand · Free, Always
Friday, September 18, 2026

Das CrowPanel Advanced 10.1" ESP32-P4 als Smart Home Wetter-Display

Translate

Stellen Sie sich vor, Sie betreten morgens die Küche, schauen auf ein elegantes 10,1-Zoll-Display und wissen sofort: Heute gibt es Regen, die Temperatur liegt bei 14 °C, die Luft ist gut, der Wind kommt aus Südwest – und laut Kamera ist im Eingangsbereich draußen alles ruhig. Kein Griff zum Handy, kein Browser-Tab, kein Alexa-Gemurmel. Einfach pure Information, schön aufbereitet, auf einem Display, das Sie selbst programmiert haben. Genau diese Art von Anwendung erstellt der vorliegende Artikel. Das CrowPanel Advanced 10.1" von Elecrow macht es spielend einfach – spielend deshalb, weil Anwender danach verstehen, was sie früher alles unnötig kompliziert machen mussten.

Das CrowPanel Advanced 10.1" ESP32-P4 HMI AI Display ist kein gewöhnliches Bastel-Display. Es handelt sich vielmehr um ein vollständiges Computersystem im Displayformat – und zwar ein ernst zu nehmendes.

Michael Stal

Prof. Dr. Michael Stal arbeitet seit 1991 bei Siemens Technology. Seine Forschungsschwerpunkte umfassen Softwarearchitekturen für große komplexe Systeme (Verteilte Systeme, Cloud Computing, IIoT), Eingebettte Systeme und Künstliche Intelligenz. Er berät Geschäftsbereiche in Softwarearchitekturfragen und ist für die Architekturausbildung der Senior-Software-Architekten bei Siemens verantwortlich.

Im Zentrum steht der ESP32-P4 von Espressif: ein Dual-Core-RISC-V-Prozessor mit bis zu 400 MHz, 32 MByte OPI-PSRAM und 16 MByte Flash. Das ist deutlich mehr Rechenleistung als die meisten Embedded-Displays bieten und auch ausreichend, um Firmware für das Panel mit integrierten lokalen LLM-Modellen auszustatten.

Der offizielle Preis des Produkts beträgt 99,99 Euro, ich habe es aber schon günstiger gesehen.

Oben: Das Panel in Aktion. Unten links: Die Rückseite mit den Schnittstellen. Unten rechts: Die mitgelieferten Funkmodule, unter anderem für Wifi.

(Bild: ELECROW)

Das 10,1-Zoll-IPS-Panel mit 1024 × 600 Pixeln und kapazitivem Multi-Touch (GT911-Controller) ist scharf, blickwinkelstabil und hell genug für den Alltag. Dazu kommen ein MIPI-CSI-Kameraanschluss, I2S-Audio für externe Lautsprecher, eine microSD-Karte, USB-Typ-C und – das ist wichtig zu verstehen – kein eingebautes Wi-Fi im ESP32-P4 selbst. Stattdessen sitzt auf dem Board ein ESP32-C6 als Wi-Fi/Bluetooth-Koprozessor, der über eine interne Verbindung mit dem P4 kommuniziert. Für den Programmierer ist das vollständig transparent: Die gewohnte WiFi.h-Bibliothek funktioniert wie immer.

Warum kein Wi-Fi im P4? Espressif hat den ESP32-P4 als reinen Hochleistungs-Applikationsprozessor konzipiert – ohne Funk, dafür mit mehr Rechenleistung und Speicher. Die Funkanbindung übernimmt ein separater, mitgelieferter Chip. Das ist ein bewusster Architekturentscheid, keine Sparmaßnahme.

Und dann sind da noch die Erweiterungsmodule: Wi-Fi HaLow (802.11ah, Sub-GHz-Band) für große Reichweiten und Meshtastic über LoRa für komplett netzunabhängige Kommunikation sowie das ESP32-Modul ESP32-H2. Das macht das CrowPanel zu einem vielseitigen Embedded-Display-System.

Es ist müßig, alle Schnittstellen des Moduls theoretisch zu beschreiben. Stattdessen möchte ich ein praktisches Beispiel umsetzen.

Der Artikel entwickelt eine Smart-Home-Wetterstation. Diese gibt regelmäßig die neuesten Wetterinformationen aus und benutzt dafür folgende Funktionen:

Die grundlegende Funktionalität der WeatherMap und woher die Information stammt

In einem echten Projekt lassen sich selbstverständlich stattdessen Wettersensoren nutzen und ablesen, zumindest für die aktuellen Wetterdaten Temperatur, Feuchtigkeit, Windgeschwindigkeit, Luftqualität, Luftdruck. Diese Mühe erspart sich der Beitrag aufgrund der zahlreichen Konfigurationsmöglichkeiten und unterschiedlichen Komponenten. Wichtiger ist allein das Verständnis der prinzipiellen Vorgehensweise.

Das UI bauen wir mit LVGL 8.3 (Light and Versatile Graphics Library) – der verbreiteten Open-Source-Grafikbibliothek für Embedded-Systeme. Die Wetterdaten stammen von OpenWeatherMap – ein kostenloser API-Key reicht für unsere Zwecke vollkommen aus (er erlaubt 60 Anfragen/Minute, wovon wir nur eine Anfrage alle 5 Minuten benötigen). Alle drei verwendeten APIs (/weather, /forecast, /air_pollution) nutzt die Anwendung im kostenlosen Tier.

Kritische Vorab-Hinweise:

  1. Die Ansteuerung des 10,1"-Panel des CrowPanel erfolgt über den RGB-Parallel-Bus des ESP32-P4. Für RGB-Parallel-Displays verwendet man die esp_lcd_rgb_panel-API aus dem ESP-IDF, die direkt in Arduino ESP32 v3.x verfügbar ist.
  2. Erst Arduino ESP32 v3.1.0 oder neuer unterstützt den ESP32. Diese Version basiert auf ESP-IDF v5.3 und bringt geänderte APIs mit sich — insbesondere für I2S und den Display-Treiber.
  3. Der Touch-Controller GT911 von Goodix hat ein komplett anderes I2C-Protokoll als etwa ein FT6336. Er benötigt eine spezifische Initialisierungssequenz und register-basierte Kommunikation über 16-Bit-Adressen.
  4. LVGL-Symbole als Icons: LVGL 8.3 enthält eine eingebaute Symbol-Schriftart (basierend auf FontAwesome 4.7). Diese Symbole sind immer verfügbar — ohne zusätzliche Konfiguration — und lassen sich für alle Icons im UI verwenden: Thermometer, Wind, Luftfeuchtigkeit, Kamera, Wi-Fi, Standort und mehr.

Um das System entwickeln zu können, benötigen Entwicklerinnen die folgenden Bibliotheken:

All you need are Libraries

Der Arduino-Boardmanager muss die Einstellungen des Boards vornehmen:

In 3 Schritten machen wir den Boardmanager der Arduino IDE mit dem CrowPanel bekannt.

Erst sollten Sie Arduino/libraries/lvgl/lv_conf_template.h nach Arduino/libraries/lv_conf.h kopieren ← eine Ebene höher als der lvgl-Ordner!

Danach nehmen Sie die im Folgenden dokumentierten Einstellungen vor:

// lv_conf.h — Konfiguration für CrowPanel Advanced 10.1" ESP32-P4

// ── SCHRITT 1: Datei aktivieren
// Diese Zeile MUSS von 0 auf 1 geändert werden!
// Solange hier 0 steht, ignoriert LVGL die gesamte Datei.
# if 1   // ← war: #if 0  ← DIESE ÄNDERUNG IST ZWINGEND ERFORDERLICH!

// ── Farbtiefe
# define LV_COLOR_DEPTH 16   // RGB565 für das RGB-Panel

// ── Auflösung
# define LV_HOR_RES_MAX 1024
# define LV_VER_RES_MAX 600

// ── Tick-Quelle: millis() verwenden
// Mit dieser Einstellung ruft LVGL intern millis() auf.
// WICHTIG: lv_tick_inc() darf dann NICHT manuell aufgerufen werden!
# define LV_TICK_CUSTOM                  1
# define LV_TICK_CUSTOM_INCLUDE          "Arduino.h"
# define LV_TICK_CUSTOM_SYS_TIME_EXPR    (millis())

// ── Speicher für LVGL intern
# define LV_MEM_SIZE (128U * 1024U)   // 128 KB

// ── Widgets aktivieren
// Alle verwendeten Widgets müssen explizit aktiviert sein!
# define LV_USE_ARC      1   // Pflicht: Spinner hängt von Arc ab!
# define LV_USE_BAR      1   // AQI-Fortschrittsbalken
# define LV_USE_BTN      1   // Refresh-Button
# define LV_USE_LABEL    1   // Alle Textelemente
# define LV_USE_SPINNER  1   // Lade-Spinner (braucht LV_USE_ARC=1)
# define LV_USE_IMG      1   // Für zukünftige Bild-Widgets

// ── Animationen aktivieren
// Pflicht für lv_bar_set_value(..., LV_ANIM_ON) und den Spinner!
# define LV_USE_ANIMATION 1

// ── Fonts aktivieren
// Alle im Projekt verwendeten Schriftgrößen müssen hier aktiviert sein.
// Nicht aktivierte Fonts führen zu Linker-Fehlern ("undefined reference")!
# define LV_FONT_MONTSERRAT_12  1   // Status-Leiste, Vorhersage-Details
# define LV_FONT_MONTSERRAT_14  1   // Labels, Beschriftungen
# define LV_FONT_MONTSERRAT_16  1   // Wetterbeschreibung, Datum, Vorhersage
# define LV_FONT_MONTSERRAT_20  1   // Icons, AQI-Text
# define LV_FONT_MONTSERRAT_22  1   // Luftfeuchtigkeit, Wind, Luftdruck, "C"
# define LV_FONT_MONTSERRAT_28  1   // Uhrzeit in der Kopfzeile
# define LV_FONT_MONTSERRAT_48  1   // Große Temperaturanzeige (PFLICHT!)

// ── Symbol-Font
// Die eingebaute Symbol-Schriftart (FontAwesome 4.7 Subset) ist IMMER verfügbar.
// Kein zusätzliches #define nötig — LV\_SYMBOL\_\* funktioniert out-of-the-box.
// Verwendete Symbole in diesem Projekt:
//   LV_SYMBOL_HOME        → Stadtname in der Kopfzeile
//   LV_SYMBOL_GPS         → Datum / Standort
//   LV_SYMBOL_REFRESH     → Refresh-Button
//   LV_SYMBOL_TINT        → Temperatur (Thermometer-ähnlich)
//   LV_SYMBOL_VOLUME\_MAX  → Luftfeuchtigkeit / Regen-Icon
//   LV_SYMBOL_LOOP        → Wind (kreisförmige Bewegung)
//   LV_SYMBOL_UP          → Luftdruck
//   LV_SYMBOL_WIFI        → Luftqualität / Status-Leiste
//   LV_SYMBOL_IMAGE       → Kamera / Sonnig
//   LV_SYMBOL_OK          → AQI gut / Klarer Himmel
//   LV_SYMBOL_BELL        → AQI mäßig
//   LV_SYMBOL_WARNING     → AQI schlecht / Fehler
//   LV_SYMBOL_CHARGE      → Gewitter / Blitz
//   LV_SYMBOL_STOP        → Schnee
//   LV_SYMBOL_EYE_OPEN    → Nebel
//   LV_SYMBOL_EYE_CLOSE   → Bewölkt
View the original on heise online

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.