vl53l1x — sterownik czujnika odległości ToF VL53L1X

Ten moduł udostępnia sterownik dla czujnika dalmierza time-of-flight VL53L1X firmy STMicroelectronics przez I2C. VL53L1X mierzy odległość bezwzględną do ~4 m, wykorzystując niewidzialny emiter laserowy 940 nm oraz matrycę odbiorczą SPAD.

Przykład użycia:

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)

Klasy

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

Tworzy instancję sterownika VL53L1X.

  • bus to skonfigurowany obiekt magistrali machine.I2C używany do komunikacji z czujnikiem.

  • address to 7-bitowy adres I2C urządzenia. Domyślnie 0x29.

Konstruktor wykonuje miękki reset, weryfikuje identyfikator modelu układu, zapisuje do urządzenia domyślny blok konfiguracyjny i stosuje poprawkę rejestrów startowych, którą ST API wykonuje przy pierwszym uruchomieniu pomiaru. Wywołanie blokuje na ~200 ms, podczas gdy czujnik się ustala. Zgłasza RuntimeError, jeśli rejestr identyfikatora modelu nie zwraca oczekiwanej wartości 0xEACC.

writeReg(reg: int, value: int) None

Zapisuje pojedynczą 8-bitową wartość value do 16-bitowego adresu rejestru urządzenia reg.

writeReg16Bit(reg: int, value: int) None

Zapisuje 16-bitową wartość value (big-endian) do 16-bitowego adresu rejestru urządzenia reg.

readReg(reg: int) int

Odczytuje pojedynczą 8-bitową wartość z 16-bitowego adresu rejestru urządzenia reg i zwraca ją jako int.

readReg16Bit(reg: int) int

Odczytuje 16-bitową wartość (big-endian) z 16-bitowego adresu rejestru urządzenia reg i zwraca ją jako int.

read_model_id() int

Zwraca zawartość 16-bitowego rejestru identyfikatora modelu pod adresem 0x010F. Oczekiwana wartość dla VL53L1X to 0xEACC.

reset() None

Wykonuje miękki reset urządzenia poprzez przełączenie rejestru miękkiego resetu 0x0000. Blokuje na 100 ms, podczas gdy urządzenie jest utrzymywane w stanie resetu.

read() int

Wyzwala odczyt rejestru RESULT__RANGE_STATUS (0x0089) i zwraca końcową, skorygowaną o przesłuch odległość, w milimetrach, jednostrefowego detektora SD0 jako int.

Stałe

vl53l1x.VL51L1X_DEFAULT_CONFIGURATION: bytes

Domyślny 91-bajtowy blok konfiguracyjny zapisywany do urządzenia, począwszy od rejestru 0x2D podczas tworzenia instancji. Blok ustawia polaryzację przerwania, próg sigma, próg sygnału, okres międzypomiarowy, progi odległości, środek/rozmiar ROI oraz inne parametry pomiaru zalecane przez sterownik ultra-light firmy ST. Większość bajtów nie podlega modyfikacji przez użytkownika; pola dostrajalne przez użytkownika opisano w komentarzach w kodzie źródłowym.