vl53l1x — VL53L1X ToF-Distanzsensor-Treiber

Dieses Modul stellt einen Treiber für den ToF-Entfernungssensor (Time-of-Flight) VL53L1X von STMicroelectronics über I2C bereit. Der VL53L1X misst die absolute Distanz bis zu ~4 m mithilfe eines unsichtbaren 940-nm-Laseremitters und eines SPAD-Empfangsarrays.

Beispielverwendung:

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)

Klassen

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

Erzeugt eine VL53L1X-Treiberinstanz.

  • bus ist ein konfiguriertes machine.I2C-Busobjekt, das zur Kommunikation mit dem Sensor verwendet wird.

  • address ist die 7-Bit-I2C-Adresse des Geräts. Standardwert ist 0x29.

Der Konstruktor führt einen Soft-Reset durch, verifiziert die Chip-Modell-ID, schreibt den Standardkonfigurationsblock auf das Gerät und wendet die Start-up-Register-Korrektur an, die die ST-API beim ersten Start einer Messung durchführt. Der Aufruf blockiert für ~200 ms, während sich der Sensor einpegelt. Löst RuntimeError aus, wenn das Modell-ID-Register nicht den erwarteten Wert 0xEACC zurückgibt.

writeReg(reg: int, value: int) None

Schreibt einen einzelnen 8-Bit-value in die 16-Bit-Geräteregisteradresse reg.

writeReg16Bit(reg: int, value: int) None

Schreibt einen 16-Bit-value (Big-Endian) in die 16-Bit-Geräteregisteradresse reg.

readReg(reg: int) int

Liest einen einzelnen 8-Bit-Wert aus der 16-Bit-Geräteregisteradresse reg und gibt ihn als int zurück.

readReg16Bit(reg: int) int

Liest einen 16-Bit-Wert (Big-Endian) aus der 16-Bit-Geräteregisteradresse reg und gibt ihn als int zurück.

read_model_id() int

Gibt den Inhalt des 16-Bit-Modell-ID-Registers bei 0x010F zurück. Der erwartete Wert für einen VL53L1X ist 0xEACC.

reset() None

Führt einen Soft-Reset des Geräts durch, indem das Soft-Reset-Register 0x0000 umgeschaltet wird. Blockiert für 100 ms, während das Gerät im Reset gehalten wird.

read() int

Löst eine Registerleseoperation von RESULT__RANGE_STATUS (0x0089) aus und gibt die endgültige, übersprech-korrigierte Entfernung in Millimetern des Einzelzonen-Detektors SD0 als int zurück.

Konstanten

vl53l1x.VL51L1X_DEFAULT_CONFIGURATION: bytes

Standardmäßiger 91-Byte-Konfigurationsblock, der während der Konstruktion ab Register 0x2D auf das Gerät geschrieben wird. Der Block setzt die Interrupt-Polarität, den Sigma-Schwellenwert, den Signalschwellenwert, die Intermessungsperiode, die Distanzschwellenwerte, das ROI-Zentrum/die ROI-Größe und weitere Messparameter, die vom ST Ultra-Light-Treiber empfohlen werden. Die meisten Bytes sind nicht benutzermodifizierbar; die benutzerkonfigurierbaren Felder entnehmen Sie den Kommentaren im Quelltext.