ESP32-2432S028R (Cheap Yellow Display) - Tasmota Leistungsmonitor
Als C/C++-Einsteiger kann die Einrichtung einer Entwicklungsumgebung unter Linux schnell unübersichtlich werden. Mein Ziel war es, auf dem populären ESP32-2432S028R – besser bekannt als Cheap Yellow Display (CYD) – die Leistungswerte von Smart-Plugs mit Tasmota-Firmware auszulesen und live anzuzeigen.
Hier ist die Schritt-für-Schritt-Anleitung von der Grundeinrichtung unter Linux Mint bis zum ersten erfolgreichen Flash.
Vorbereitung: Setup-Skript für Linux Mint
Um VS Code, Python-Abhängigkeiten und PlatformIO komfortabel zu installieren, hilft ein kurzes Bash-Skript. Es kümmert sich auch gleich um die benötigten Rechte für den Zugriff auf die serielle Schnittstelle.
#!/bin/bash
set -e
echo "[1/4] System aktualisieren und Basis-Pakete installieren..."
sudo apt update
sudo apt install -y curl wget git python3 python3-pip python3-venv build-essential python3-full
echo "[2/4] VS Code installieren..."
if ! command -v code &> /dev/null; then
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -D -o root -g root -m 644 packages.microsoft.gpg /etc/apt/keyrings/packages.microsoft.gpg
echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" | sudo tee /etc/apt/sources.list.d/vscode.list > /dev/null
rm -f packages.microsoft.gpg
sudo apt update
sudo apt install -y code
else
echo "VS Code ist bereits installiert."
fi
echo "[3/4] PlatformIO-Erweiterung für VS Code installieren..."
code --install-extension platformio.platformio-ide
echo "[4/4] Benutzer zur Gruppe 'dialout' hinzufügen (USB/Seriell-Zugriff)..."
sudo usermod -aG dialout $USER
echo "-------------------------------------------------------"
echo "Installation abgeschlossen!"
echo "WICHTIG: Bitte einmal ab- und wieder anmelden,"
echo "damit die Gruppenrechte (dialout) wirksam werden."
echo "-------------------------------------------------------"
Das Skript ausführbar machen und starten, Wichtig: Kein sudo!
chmod +x install.sh
./install.sh
Projekt in PlatformIO anlegen
PlatformIO Home öffnen: VS Code starten, in der linken Leiste auf das PlatformIO-Ameisen-Icon klicken und unter Quick Access den Punkt PIO Home -> Open wählen.
Neues Projekt erstellen: Auf + New Project klicken.
Konfiguration eintragen:
Name: CYD-Tasmota-Display (oder ein beliebiger Name)
Board: Espressif ESP32 Dev Module
Framework: Arduino
Use default location aktiviert lassen und auf Finish klicken. (Der erste Start kann ein bis zwei Minuten dauern, da die ESP32-Toolchain im Hintergrund geladen wird.)
platformio.ini konfigurieren
Damit das Display ohne manuelles Bearbeiten einer User_Setup.h angesteuert werden kann, werden alle Pin-Belegungen und Treiber-Definitionen direkt über build_flags in der platformio.ini übergeben.
Inhalt der Datei vollständig ersetzen durch:
Ini, TOML
; PlatformIO-Projektkonfiguration für ESP32-2432S028R (Cheap Yellow Display)
; Alle TFT_eSPI-Einstellungen werden über build_flags gesetzt.
[env:esp32-2432S028R]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_speed = 921600
lib_deps =
bblanchon/ArduinoJson @ ^6.21.5
bodmer/TFT_eSPI @ ^2.5.43
build_flags =
-DUSER_SETUP_LOADED=1
-DILI9341_DRIVER=1
-DTFT_WIDTH=240
-DTFT_HEIGHT=320
; SPI-Pins des CYD (ESP32-2432S028R)
-DTFT_MISO=12
-DTFT_MOSI=13
-DTFT_SCLK=14
-DTFT_CS=15
-DTFT_DC=2
-DTFT_RST=-1
-DTFT_BL=21
-DTFT_BACKLIGHT_ON=HIGH
-DSPI_FREQUENCY=55000000
-DSPI_READ_FREQUENCY=20000000
-DUSE_HSPI_PORT=1
; Fonts
-DLOAD_GLCD=1
-DLOAD_FONT2=1
-DLOAD_FONT4=1
-DLOAD_FONT6=1
-DLOAD_FONT7=1
-DLOAD_FONT8=1
-DLOAD_GFXFF=1
-DSMOOTH_FONT=1</code></pre>
Der erste Flash-Vorgang
Öffne die Datei src/main.cpp.
Verbinde den ESP32 per USB mit deinem Rechner.
Klicke unten in der Statusleiste von VS Code auf den Pfeil nach rechts (PlatformIO: Upload), um den Code zu kompilieren und auf das Board zu übertragen.
Klicke anschließend auf das Stecker-Symbol (PlatformIO: Serial Monitor), um die Log-Ausgaben der seriellen Schnittstelle (115200 Baud) einzusehen.
Den vollständigen Quellcode für die main.cpp findest du auf GitHub.
Typischer Fehler
Rechte auf der USB-Schnittstelle
Sollte beim Upload folgender Fehler auftreten:Hint: Try to add user into dialout or uucp group.
*** [upload] Error 2
================ catalog [FAILED] Took 5.04 seconds =================
Fehlen deinem Benutzer die Schreibrechte auf der seriellen Schnittstelle (/dev/ttyUSB0 oder /dev/ttyACM0).
Lösung:
sudo usermod -aG dialout $USER
Wichtig: Nach dem Befehl musst du dich einmal ab- und wieder anmelden, damit die Gruppenänderung für deine Session aktiv wird. Danach lässt sich der Zugriff prüfen:
ls -l /dev/ttyUSB /dev/ttyACM
Ausgabe sollte z. B. so aussehen:
# crw-rw---- 1 root dialout 188, 0 Aug 14 23:06 /dev/ttyUSB0