LVGL-based MeshCore UI firmware for LilyGO T-Deck (ESP32-S3, SX1262, PlatformIO)
  • C++ 86.1%
  • Python 12.3%
  • C 1.6%
Find a file
2026-05-26 11:07:46 +00:00
.forgejo fix: python -> python3 in esptool merge_bin step 2026-05-26 10:31:36 +02:00
docs docs: add code-server Docker setup guide (NPM on separate host) 2026-05-22 04:34:33 +00:00
include fix: prevent TG0WDT crash from RadioLib LoRa busy-wait; fix LVGL tick 2026-05-26 11:56:41 +02:00
patches feat: complete firmware rewrite + CI build workflow 2026-05-26 08:21:57 +02:00
src fix: correct SX1262 RST pin, TCXO voltage and startup_reason for T-Deck 2026-05-26 13:00:55 +02:00
CHANGELOG.md docs: update CHANGELOG.md for 0.0.008 [skip ci] 2026-05-26 11:07:46 +00:00
HISTORY.md chore: add versioning, CHANGELOG, HISTORY, Forgejo Actions release workflow 2026-05-22 04:47:30 +00:00
partitions_16MB.csv Initial commit: LVGL MeshCore UI for T-Deck 2026-05-22 04:30:00 +00:00
platformio.ini fix: correct SX1262 RST pin, TCXO voltage and startup_reason for T-Deck 2026-05-26 13:00:55 +02:00
README.md Initial commit: LVGL MeshCore UI for T-Deck 2026-05-22 04:30:00 +00:00
VERSION chore: bump version to 0.0.008 [skip ci] 2026-05-26 11:01:08 +00:00

tdeck-meshcore-ui

LVGL-basierte MeshCore UI-Firmware für das LilyGO T-Deck.

Features

  • 4 Tabs (Tab-Bar unten, per Touch oder Trackball navigierbar):

    • Kontakte — alle gehörten Nodes mit RSSI, Hops, Online-Dot
    • Chat — DM-Verlauf pro Kontakt, Eingabe per Touch-Tastatur oder physischer Tastatur
    • Info — eigene Node-Infos, RSSI/SNR, TX-Power, Uptime, Batterie
    • Scope — Flood-Scope wechseln (Local/Region/Global) + Flood-Nachricht senden
  • Status-Bar oben mit Node-Name, RSSI und Uptime

  • Dark Theme (LVGL default dark)

  • Physische T-Deck-Tastatur wird in aktives Textarea geleitet; Enter = Senden

Hardware

Komponente Chip
MCU ESP32-S3
Display ST7789 320×240
Touch GT911 (I2C)
LoRa SX1262
Keyboard I2C-Slave 0x55
Trackball 4× GPIO + Click

Build

# PlatformIO CLI
pio run -e t-deck

# oder in VSCode: PlatformIO → Build

Abhängigkeiten

  • bodmer/TFT_eSPI ≥ 2.5.43
  • lvgl/lvgl 8.3.x
  • meshcore-dev/MeshCore (branch: dev)

Hinweis: TFT_eSPI ist mit ESP32-Core > 2.0.14 inkompatibel. In platformio.ini ist espressif32@6.5.0 fest gesetzt, was Core 2.0.14 entspricht.

Projektstruktur

src/
  main.cpp     — setup() / loop()
  hw.cpp       — Display-Flush, GT911-Touch, Trackball-ISR, KB-Polling
  mc.cpp       — MeshCore-Stack-Wrapper (SX1262, Callbacks, sende-API)
  ui.cpp       — LVGL-UI (alle 4 Tabs, Statusbar, Keyboard-Routing)
include/
  hw.h
  mc.h
  ui.h
  lv_conf.h    — LVGL-Konfiguration

Anpassen

Node-Name / Region

In mc.cppMC::init():

mesh_node.setName("DeinNodeName");

Später: aus NVS laden (Preferences-Library) und im Settings-Tab editierbar machen.

LoRa-Frequenz

radio.setFrequency(868.0);  // EU868
// radio.setFrequency(915.0);  // US915

Neue Nachrichten-Benachrichtigung

UI::show_new_message_badge() in ui.cpp ist als Stub implementiert — dort einen roten Dot auf den Tab-Button setzen.