vl53l1x — Driver pentru senzorul de distanță ToF VL53L1X

Acest modul oferă un driver pentru senzorul de telemetrie time-of-flight VL53L1X de la STMicroelectronics prin I2C. VL53L1X măsoară distanța absolută până la ~4 m folosind un emițător laser invizibil de 940 nm și un tablou de recepție SPAD.

Exemplu de utilizare:

import time
from machine import I2C
import vl53l1x

bus = I2C(1)
tof = vl53l1x.VL53L1X(bus)

while True:
    print("Distance: {} mm".format(tof.read()))
    time.sleep_ms(100)

Clase

class vl53l1x.VL53L1X(bus: machine.I2C, address: int = 0x29)

Construiește o instanță de driver VL53L1X.

  • bus este un obiect de magistrală machine.I2C configurat, folosit pentru a comunica cu senzorul.

  • address este adresa I2C pe 7 biți a dispozitivului. Implicit 0x29.

Constructorul efectuează o resetare software, verifică ID-ul modelului cipului, scrie blocul de configurare implicit în dispozitiv și aplică corecția registrelor de pornire pe care API-ul ST o efectuează la prima pornire a telemetriei. Apelul blochează ~200 ms cât timp senzorul se stabilizează. Generează RuntimeError dacă registrul ID-ului modelului nu returnează valoarea așteptată 0xEACC.

writeReg(reg: int, value: int) None

Scrie o singură value pe 8 biți în adresa de registru pe 16 biți a dispozitivului reg.

writeReg16Bit(reg: int, value: int) None

Scrie o value pe 16 biți (big-endian) în adresa de registru pe 16 biți a dispozitivului reg.

readReg(reg: int) int

Citește o singură valoare pe 8 biți din adresa de registru pe 16 biți a dispozitivului reg și o returnează ca int.

readReg16Bit(reg: int) int

Citește o valoare pe 16 biți (big-endian) din adresa de registru pe 16 biți a dispozitivului reg și o returnează ca int.

read_model_id() int

Returnează conținutul registrului ID-ului modelului pe 16 biți de la 0x010F. Valoarea așteptată pentru un VL53L1X este 0xEACC.

reset() None

Efectuează o resetare software a dispozitivului prin comutarea registrului de resetare software 0x0000. Blochează 100 ms cât timp dispozitivul este menținut în resetare.

read() int

Declanșează o citire de registru a RESULT__RANGE_STATUS (0x0089) și returnează distanța finală corectată pentru diafonie, în milimetri, a detectorului cu o singură zonă SD0 ca int.

Constante

vl53l1x.VL51L1X_DEFAULT_CONFIGURATION: bytes

Blocul de configurare implicit de 91 de octeți scris în dispozitiv începând de la registrul 0x2D în timpul construcției. Blocul setează polaritatea întreruperii, pragul sigma, pragul de semnal, perioada dintre măsurători, pragurile de distanță, centrul/dimensiunea ROI și alți parametri de telemetrie recomandați de driverul ultra-light al ST. Majoritatea octeților nu pot fi modificați de utilizator; consultați comentariile din sursă pentru câmpurile ajustabile de utilizator.