Files
homeassistant_espscreen/docs/CALIBREREN.md
T

5.2 KiB
Raw Blame History

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:
python -m esphome -s CALIBRATION_ON_BOOT true run device.yaml --device <USB_POORT>
  1. Controleer fysiek het donkere scherm met vijf witte + tekens. Het blijft aan en de tegelacties zijn hier niet toegankelijk.
  2. 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:

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

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

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:

python -m esphome -s CALIBRATION_ON_BOOT true run device.yaml --device <USB_POORT>

Sluit de loglezer met Ctrl+C en verzamel nieuwe tikken:

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. Verhoog niet alleen de tolerantie om de test groen te krijgen. Rapporteer een resterende hardwareafwijking eerlijk.

Terug naar normale bediening

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.

Als de kalibratiemodus uitsluitend via de API was geopend, kun je hem sluiten:

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.