Bootsanzeige für Waveshare ESP32-S3-Touch-LCD-4, gespeist aus einem SignalK-Server. Zeigt Tiefe, Geschwindigkeit, Wind und Autopilot auf mehreren Screens, die per Wischgeste gewechselt werden.
Kein zugelassenes Navigationsgerät. Dies ist ein privates Bastelprojekt ohne Zulassung, Prüfung oder Zertifizierung. Es ersetzt weder Lot noch Kartenplotter und darf nicht als alleinige Grundlage für Entscheidungen an Bord dienen. Der Tiefenalarm ist eine Bequemlichkeit, kein Sicherheitssystem — sie können ausfallen, ohne dass es auffällt. Benutzung auf eigene Gefahr.
Beim ersten Start ohne gespeicherte Konfiguration erscheinen die Einstellungen von selbst. Nötig sind WLAN-Zugangsdaten sowie Adresse und Port des SignalK-Servers; SPEICHERN schreibt ins NVS und startet neu.
Später sind die Einstellungen über das Kontextmenü erreichbar — Doppeltipp auf den Bildschirm.
Zum Lesen genügt ein offener SignalK-Server. Wer den Autopiloten bedienen oder den Nachtmodus an andere Geräte melden will, braucht Schreibrechte: im Reiter Allg auf ZUGRIFF ANFORDERN tippen und die Anfrage in der Weboberfläche des Servers unter Security → Access Requests bestätigen. Das Gerät behält seine Kennung über Neuflashen hinweg, die Freigabe gilt also dauerhaft.
Erfordert VS Code mit der PlatformIO-Erweiterung. Alle Abhängigkeiten und
Board-Einstellungen stehen in platformio.ini; ein frischer Klon baut ohne
weitere Vorbereitung.
pio run # bauen
pio run -t upload # flashen
pio device monitor # serielle Ausgabe| Screen | Inhalt |
|---|---|
| Navigation | Tiefe, SOG, STW, Wassertemperatur, Tiefenalarm |
| Wind | scheinbarer Windwinkel und -geschwindigkeit, wahrer Wind |
| Autopilot | Kompassrose, Kurs, Steuerbefehle an SignalK |
| Tiefenverlauf | Grundprofil der letzten 15 Minuten |
| Info | Firmware, Speicher, Renderzeit, Verbindungsstatus |
Reihenfolge und Sichtbarkeit sind über den Einstellungs-Screen konfigurierbar
(Doppeltipp oben rechts). Position 0 schaltet einen Screen ab.
![]() |
![]() |
![]() |
| Navigation | Wind | Autopilot |
Zwei verschiedene Gehäuse jeweils zweiteilig aus dem 3D-Drucker.
Die Quellmodelle, STL- und 3MF-Dateien liegen unter enclosures/, dazu
Massblätter und Ansichten.
Der Touch muss NACH dem Display initialisiert werden. Steht
init_gt911() vor gfx->begin(), flackert das Bild dauerhaft: Der kapazitive
Controller vermisst beim Initialisieren seine Grundlinie, und bei stillstehendem
Panel passt diese Messung nicht zum späteren Betrieb. Die Reihenfolge in
setup() bitte nicht „aufräumen".
Der Menüpunkt „QIO 80MHz" bedeutet flash_mode=dio und boot=qio. In
PlatformIO entspricht das board_build.arduino.memory_type = qio_opi.
Arduino-Core 3.x ist Voraussetzung. Die offizielle PlatformIO-Plattform
espressif32 liefert Core 2.0.x mit ESP-IDF 4.4, unter dem sich der
RGB-Panel-Unterbau anders verhält. Daher pioarduino 55.03.311, das exakt dem
zuvor verwendeten Core 3.3.11 entspricht.
Langsame Zeichenvorgänge blockieren den Touch. lv_timer_handler() führt
LVGL-Timer nacheinander aus; während eines langen Neuzeichnens wird der Touch
überhaupt nicht abgetastet. Instrumente daher als vorgerendertes Canvas im PSRAM
halten und nur die bewegten Teile aktualisieren. Die Info-Seite zeigt die
Renderzeit als Frühwarnung.
PolyForm Noncommercial License 1.0.0 — private, schulische und
gemeinnützige Nutzung ist erlaubt, gewerbliche nicht. Volltext in
LICENSE.md.
Das ist bewusst keine Open-Source-Lizenz im Sinne der OSI: Die Einschränkung auf nichtkommerzielle Nutzung schliesst das aus. GitHub wird deshalb keine Lizenz in der Seitenleiste anzeigen.
Für Schriften und die Board-Anbindung gelten eigene Bedingungen, ebenso für
alle Bibliotheken — siehe THIRD-PARTY.md. Besonders zu beachten: Die
WebSocket-Bibliothek steht unter der LGPL. Wer fertige Firmware-Dateien
weitergibt statt Quelltext, hat dadurch zusätzliche Pflichten.
Entstanden als Sketch examples/arduino/09_LVGL_Widgets in einem Klon des
Waveshare-Beispielrepositories. Dort liegt die Entwicklungshistorie bis
einschliesslich v0.3.28, inklusive des Testsketches 90_FlickerTest, der die
Reihenfolge-Abhängigkeit von Touch und Display per Schalter reproduzierbar macht.




