vl53l1x — Driver del sensore di distanza ToF VL53L1X

Questo modulo fornisce un driver per il sensore di telemetria time-of-flight VL53L1X di STMicroelectronics tramite I2C. Il VL53L1X misura la distanza assoluta fino a ~4 m utilizzando un emettitore laser invisibile a 940 nm e un array di ricezione SPAD.

Esempio di utilizzo:

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)

Classi

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

Costruisce un’istanza del driver VL53L1X.

  • bus è un oggetto bus machine.I2C configurato, usato per comunicare con il sensore.

  • address è l’indirizzo I2C a 7 bit del dispositivo. Il valore predefinito è 0x29.

Il costruttore esegue un soft reset, verifica l’ID del modello del chip, scrive il blocco di configurazione predefinito sul dispositivo e applica la correzione dei registri di avvio che l’API ST esegue al primo avvio della telemetria. La chiamata si blocca per ~200 ms mentre il sensore si stabilizza. Solleva RuntimeError se il registro dell’ID del modello non restituisce il valore atteso 0xEACC.

writeReg(reg: int, value: int) None

Scrive un singolo value a 8 bit nell’indirizzo del registro del dispositivo a 16 bit reg.

writeReg16Bit(reg: int, value: int) None

Scrive un value a 16 bit (big-endian) nell’indirizzo del registro del dispositivo a 16 bit reg.

readReg(reg: int) int

Legge un singolo valore a 8 bit dall’indirizzo del registro del dispositivo a 16 bit reg e lo restituisce come int.

readReg16Bit(reg: int) int

Legge un valore a 16 bit (big-endian) dall’indirizzo del registro del dispositivo a 16 bit reg e lo restituisce come int.

read_model_id() int

Restituisce il contenuto del registro dell’ID del modello a 16 bit all’indirizzo 0x010F. Il valore atteso per un VL53L1X è 0xEACC.

reset() None

Esegue un soft reset del dispositivo commutando il registro di soft reset 0x0000. Si blocca per 100 ms mentre il dispositivo è mantenuto in reset.

read() int

Attiva una lettura del registro RESULT__RANGE_STATUS (0x0089) e restituisce la distanza finale corretta per il crosstalk, in millimetri, del rilevatore a zona singola SD0 come int.

Costanti

vl53l1x.VL51L1X_DEFAULT_CONFIGURATION: bytes

Blocco di configurazione predefinito da 91 byte scritto sul dispositivo a partire dal registro 0x2D durante la costruzione. Il blocco imposta la polarità dell’interrupt, la soglia sigma, la soglia del segnale, il periodo intermisura, le soglie di distanza, il centro/dimensione della ROI e altri parametri di telemetria raccomandati dal driver ultra-leggero ST. La maggior parte dei byte non è modificabile dall’utente; fai riferimento ai commenti nel sorgente per i campi regolabili dall’utente.