Add stable CYD firmware, USB calibration wizard and complete setup guide
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
# Een nieuw paneel kalibreren
|
||||
|
||||
Dit protocol is voor **320×240, LVGL-rotatie 90°, swap_xy=false,
|
||||
mirror_x=true, mirror_y=false**. Andere oriëntaties, GT911-touch en andere
|
||||
controllers vereisen een apart profiel. Verander rotatie of mirroring niet
|
||||
halverwege de meting.
|
||||
|
||||
De filter in deze repo stabiliseert de XPT2046-metingen. Kalibratie corrigeert
|
||||
vervolgens offset, schaal en scheefstand. Kalibratie repareert geen defect
|
||||
paneel, losse verbinding, instabiele voeding of willekeurige uitschieters.
|
||||
|
||||
## Voorbereiden
|
||||
|
||||
1. Gebruik `device.yaml` van `tools/new_device.py`, met een eigen
|
||||
`calibration.yaml` die begint als identiteit. De persoonlijke correctie
|
||||
in het historische basisprofiel mag niet worden overgenomen.
|
||||
2. Controleer de datakabel en de USB-poort met `python -m serial.tools.list_ports`.
|
||||
3. Flash vanaf de reporoot:
|
||||
|
||||
```sh
|
||||
python -m esphome -s CALIBRATION_ON_BOOT true run device.yaml --device <USB_POORT>
|
||||
```
|
||||
|
||||
4. Controleer fysiek het **donkere scherm met vijf witte + tekens**.
|
||||
Het blijft aan en de tegelacties zijn hier niet toegankelijk.
|
||||
5. Stop de ESPHome-loglezer met Ctrl+C. Laat het bord en de USB-kabel zitten.
|
||||
Slechts één programma mag tegelijk de seriële poort gebruiken.
|
||||
|
||||
Wifi/HA zijn voor deze USB-route niet nodig. Als het bord al op wifi staat,
|
||||
kan het scherm ook via de versleutelde API worden geopend:
|
||||
|
||||
```sh
|
||||
python diagnostics/control_ui.py touch_diagnostics --host display-keuken.local --name display-keuken
|
||||
```
|
||||
|
||||
Dat verandert de startmodus niet. Gebruik voor een nieuwe installatie de
|
||||
USB-route hierboven, zodat de kalibratiemodus ook na een reset actief blijft.
|
||||
|
||||
## Meting A: gegevens verzamelen
|
||||
|
||||
```sh
|
||||
python tools/calibrate.py capture --port <USB_POORT> --device-name display-keuken --output measurements-before.json
|
||||
```
|
||||
|
||||
De wizard begeleidt **één doel tegelijk**:
|
||||
|
||||
1. Lees in de terminal welk kruisje aan de beurt is.
|
||||
2. Druk op Enter en tik daarna alleen dat kruisje **drie keer**.
|
||||
3. Houd elke tik circa een halve seconde vast en laat tussendoor volledig los.
|
||||
4. Wacht op de volgende terminalprompt. Ga niet zelf alvast naar een andere hoek.
|
||||
|
||||
Volgorde: linksboven, rechtsboven, rechtsonder, linksonder, midden.
|
||||
Gebruik een geschikte stompe stylus of een kleine, bewuste vingertik; geen
|
||||
scherpe punt. De doelen staan op `(20,20)`, `(299,20)`, `(299,219)`, `(20,219)`
|
||||
en `(160,120)`.
|
||||
|
||||
De wizard leest alleen touchlogs met `calibration=1`. Hij flasht niets, maakt
|
||||
geen netwerkverbinding en stuurt geen HA-acties. Een onvolledige meting wordt
|
||||
niet als geldig bestand opgeslagen. Bij een verkeerde tik: Ctrl+C en opnieuw
|
||||
beginnen. Gebruik een nieuwe bestandsnaam als een meting al bestaat.
|
||||
|
||||
## Een correctie berekenen
|
||||
|
||||
```sh
|
||||
python tools/calibrate.py fit measurements-before.json --output calibration.yaml --replace
|
||||
```
|
||||
|
||||
Het script:
|
||||
|
||||
- neemt per hoek de mediaan van de drie ruwe ADC-metingen;
|
||||
- bepaalt een affine correctie uit de vier hoeken;
|
||||
- controleert het **niet voor de fit gebruikte middenpunt**;
|
||||
- weigert te grote fouten (>12 px), spreiding (>18 px) en onbruikbare meetgeometrie;
|
||||
- bewaart de bestaande `calibration.yaml` als een gedateerde `.bak` voordat
|
||||
een nieuwe, complete versie wordt geplaatst.
|
||||
|
||||
De output bevat alleen de vier basisgrenzen en zes affine coëfficiënten in
|
||||
een ESPHome-substitutions-map. `device.yaml` importeert deze als calibration-
|
||||
package. Verander de coëfficiënten niet op gevoel en voeg geen tweede correctie
|
||||
in de driver toe. De `raw=`-logs bevatten de gefilterde **fysieke ADC-waarden**,
|
||||
ook als al een correctie is ingesteld; opnieuw kalibreren telt dus niet dubbel op.
|
||||
|
||||
Een geslaagde fit op bestaande data is nog geen geslaagde fysieke test.
|
||||
|
||||
## Meting B: de geflashte uitkomst onafhankelijk testen
|
||||
|
||||
Flash de correctie, nog steeds met het meetscherm:
|
||||
|
||||
```sh
|
||||
python -m esphome -s CALIBRATION_ON_BOOT true run device.yaml --device <USB_POORT>
|
||||
```
|
||||
|
||||
Sluit de loglezer met Ctrl+C en verzamel **nieuwe tikken**:
|
||||
|
||||
```sh
|
||||
python tools/calibrate.py capture --port <USB_POORT> --device-name display-keuken --output measurements-after.json
|
||||
python tools/calibrate.py verify measurements-after.json
|
||||
```
|
||||
|
||||
`verify` gebruikt de echte `native=`-coördinaten van de firmware, draait die
|
||||
naar de schermcoördinaten en vergelijkt ze met de doelen. Hij voert **geen
|
||||
nieuwe fit** uit. Alle vijf punten moeten slagen. Gebruik niet per ongeluk
|
||||
het bestand van vóór de flash voor deze controle.
|
||||
|
||||
Lukt dit niet? Bekijk welk punt faalt, controleer de volgorde/druk, meet opnieuw
|
||||
en lees [PROBLEMEN.md](PROBLEMEN.md). Verhoog niet alleen de tolerantie om de
|
||||
test groen te krijgen. Rapporteer een resterende hardwareafwijking eerlijk.
|
||||
|
||||
## Terug naar normale bediening
|
||||
|
||||
```sh
|
||||
python -m esphome run device.yaml --device <USB_POORT>
|
||||
```
|
||||
|
||||
Hier is **geen** `-s CALIBRATION_ON_BOOT true` opgegeven. In `device.yaml` blijft
|
||||
de instelling `false`. Controleer de werkelijke tegels en navigatie volgens
|
||||
[ACCEPTATIE.md](ACCEPTATIE.md).
|
||||
|
||||
Als de kalibratiemodus uitsluitend via de API was geopend, kun je hem sluiten:
|
||||
|
||||
```sh
|
||||
python diagnostics/control_ui.py end_touch_diagnostics --host display-keuken.local --name display-keuken
|
||||
```
|
||||
|
||||
Bewaar beide meetbestanden en `calibration.yaml` bij dit fysieke scherm.
|
||||
Na vervangen van het paneel opnieuw beginnen; geef alleen de neutrale
|
||||
starterbestanden aan een volgende eigenaar.
|
||||
Reference in New Issue
Block a user