Files
Dual-PID/JC_Display_Firmware/config.h
raw-designsandClaude Opus 5 2d8f70ae37 feat: eigene Cold-Extraction-Seite in Web-UI und Display (S3 5.4.0 / P4 1.2.0)
Cold Extraction bekommt in beiden Oberflächen einen eigenen Menüpunkt statt eines
angehängten Blocks auf der Brew-Control-Seite. Die Parameter sind damit erstmals
auch am Touch-Display änderbar.

S3: neue Seite /Cold-Extraction, gegliedert in Grundeinstellung, Vorbenetzung,
Hauptbezug, Bezugsende und Pumpenschutz, jeder Abschnitt mit kurzer Begründung.
/Brew-Control verweist nur noch darauf. Das UART-Kommando saveBrew akzeptiert jetzt
die cx-Felder, und das State-JSON liefert die restlichen Parameter mit, damit das
Display seine Felder vorbelegen kann.

Wichtig: Der Speicher-Handler von /Brew-Control wertet die cx-Felder nicht mehr aus.
Er tat es bisher, und nach dem Verschieben der Checkbox hätte ein Speichern dort die
Freischaltung abgeschaltet, weil das Feld im Formular fehlt.

P4: neue Seite "Cold Extraction" mit allen Parametern; der Modus-Schalter ist von der
Temperatur-Seite dorthin umgezogen, damit es nur eine Stelle gibt. Die Brew-Control-
Seite ist neu gegliedert: jede Funktion in einer eigenen Karte mit Titel und einer
Zeile, die erklärt was sie tut, statt einer durchlaufenden Liste unter
Zwischenüberschriften. Neues Hilfsmakro group_card() für beide Seiten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 00:09:23 +02:00

93 lines
4.9 KiB
C

// =====================================================================================
// JC4880P443C-I-W - Touch-Display-Firmware fuer die Dual-PID-Siebtraegersteuerung
// config.h - zentrale Konfiguration (Pins, UART, Protokoll)
// =====================================================================================
//
// Ziel-Hardware: Guition JC4880P443C-I-W
// - MCU: ESP32-P4 (UI / LVGL)
// - WLAN: ESP32-C6 (hier NICHT genutzt - WLAN/Webinterface laufen auf der Hauptplatine)
// - Display: ST7701 (480 x 800 IPS, MIPI-DSI)
// - Touch: GT911 (kapazitiv, I2C)
// - Audio: ES8311 (optional)
//
// Diese Firmware ist ein reiner UART-Client. Quelle der Wahrheit ist die Hauptplatine
// (ESP32-S3, Dual_PID_FastHeatUp.ino). Siehe Doku/JC-Display_UART-Protokoll.md.
// =====================================================================================
#pragma once
// -------------------------------------------------------------------------------------
// Panel-Modus (C-sicher hier definiert, da auch board_bringup.c ihn liest)
// 0 = Stub-Modus (kein Display-Treiber; Protokoll/Logik-Test)
// 1 = echte Hardware (Hersteller-BSP; siehe README)
// -------------------------------------------------------------------------------------
#ifndef JC_USE_REAL_PANEL
#define JC_USE_REAL_PANEL 1
#endif
// -------------------------------------------------------------------------------------
// DIAGNOSE: interner UART-Loopback-Selbsttest
// 1 = TX wird chip-intern auf RX gelegt (kein Draht, keine Pin-Unsicherheit).
// -> Laeuft "RX byte" im Debug-Panel hoch, sind Firmware+UART ok und das
// Problem liegt definitiv an Pins/Verkabelung. Bleibt es 0, ist es die
// Firmware/UART-Seite. NACH dem Test wieder auf 0 setzen!
// -------------------------------------------------------------------------------------
#ifndef UART_SELFTEST_INTERNAL_LOOPBACK
#define UART_SELFTEST_INTERNAL_LOOPBACK 0
#endif
// -------------------------------------------------------------------------------------
// DIAGNOSE: gruenes On-Screen-Debug-Panel (UART-Zaehler/letzte Rohzeile)
// 0 = aus (normale UI). 1 = Panel unten einblenden (fuer UART-Fehlersuche).
// -------------------------------------------------------------------------------------
#ifndef SHOW_DEBUG_OVERLAY
#define SHOW_DEBUG_OVERLAY 0
#endif
// -------------------------------------------------------------------------------------
// UART zur Hauptplatine
// -------------------------------------------------------------------------------------
// Gegenseite (S3): Serial1, 230400 8N1, TX=GPIO43 / RX=GPIO44.
// Verkabelung gekreuzt: S3-TX(43) -> P4-RX, S3-RX(44) -> P4-TX, GND <-> GND.
//
// Pins laut Schaltplan "4_USB&IO.png" (Expand-IO-Header JP1). Frei herausgefuehrte
// P4-GPIOs dort: 52/51/50/49/35/34/33/32/31/30/29/28 (+ ES_I2C, +3V3/+5V/GND).
// Die rechte Header-Spalte (C6_U01TXD/C6_I10RXD/...) gehoert zum ESP32-C6 -> NICHT nutzen.
// Gewaehlt: P4-TX = GPIO33, P4-RX = GPIO31.
// JP1 GPIO33 (P4 TX) ----> S3 GPIO44 (RX)
// JP1 GPIO31 (P4 RX) <---- S3 GPIO43 (TX)
// JP1 GND ---- S3 GND
#define DISPLAY_UART_PORT Serial1
#define DISPLAY_UART_BAUDRATE 230400
#define DISPLAY_UART_TX_PIN 33
#define DISPLAY_UART_RX_PIN 31
// -------------------------------------------------------------------------------------
// Firmware
// -------------------------------------------------------------------------------------
#define DISPLAY_FW_VERSION "1.2.0" // Firmware-Stand der P4-Display-Steuerung (Info-Seite)
// -------------------------------------------------------------------------------------
// Protokoll
// -------------------------------------------------------------------------------------
#define PROTO_EXPECTED_VERSION 2 // muss zur S3-Firmware passen (TOUCH_UART_PROTOCOL_VERSION)
// Die State-Zeile der S3 kann mit langem Status-/Profil-/SSID-Text ueber 2 KB gehen. Wird
// das Limit erreicht, verwirft der Client die GANZE Zeile und das Display friert auf dem
// letzten Stand ein -> Reserve deutlich groesser als der reale Bedarf (~2,3 KB).
#define PROTO_RX_LINE_MAX 4096 // max. eingehende Zeilenlaenge (Bytes)
#define PROTO_HEARTBEAT_MS 5000 // Intervall fuer 'ping' (S3-Timeout = 15 s)
#define PROTO_HELLO_RETRY_MS 2000 // erneuter 'hello'-Versuch, solange nicht verbunden
#define PROTO_LINK_TIMEOUT_MS 8000 // ohne empfangene Nachricht -> Verbindung gilt als tot
// -------------------------------------------------------------------------------------
// Display / LVGL
// -------------------------------------------------------------------------------------
// Querformat: Panel ist physisch 480x800, per Rotation 90 (pins_config.h) -> 800x480.
#define DISP_HOR_RES 800
#define DISP_VER_RES 480
#define LVGL_TICK_MS 5
// Debug-Ausgaben ueber USB-CDC (nicht ueber den Display-UART!)
#define DBG_SERIAL Serial
#define DBG_BAUD 115200