vl53l1x — driver do sensor de distância ToF VL53L1X

Este módulo fornece um driver para o sensor de medição de distância por tempo de voo (ToF) STMicroelectronics VL53L1X via I2C. O VL53L1X mede distâncias absolutas até ~4 m utilizando um emissor laser invisível de 940 nm e um array de receção SPAD.

Exemplo de utilização:

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)

Classes

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

Constrói uma instância do driver VL53L1X.

  • bus é um objeto de barramento machine.I2C configurado, utilizado para comunicar com o sensor.

  • address é o endereço I2C de 7 bits do dispositivo. O valor predefinido é 0x29.

O construtor efetua um reset por software, verifica o ID do modelo do chip, escreve o bloco de configuração predefinido no dispositivo e aplica a correção de registos de arranque que a API ST executa no primeiro início de medição. A chamada bloqueia durante ~200 ms enquanto o sensor estabiliza. Levanta RuntimeError se o registo do ID do modelo não devolver o valor esperado 0xEACC.

writeReg(reg: int, value: int) None

Escreve um value de 8 bits num único registo do dispositivo no endereço de registo de 16 bits reg.

writeReg16Bit(reg: int, value: int) None

Escreve um value de 16 bits (big-endian) no endereço de registo de 16 bits reg.

readReg(reg: int) int

Lê um valor de 8 bits do endereço de registo de 16 bits reg e devolve-o como int.

readReg16Bit(reg: int) int

Lê um valor de 16 bits (big-endian) do endereço de registo de 16 bits reg e devolve-o como int.

read_model_id() int

Devolve o conteúdo do registo de ID de modelo de 16 bits em 0x010F. O valor esperado para um VL53L1X é 0xEACC.

reset() None

Efetua um reset por software do dispositivo alternando o registo de reset por software 0x0000. Bloqueia durante 100 ms enquanto o dispositivo está mantido em reset.

read() int

Aciona uma leitura de registo de RESULT__RANGE_STATUS (0x0089) e devolve o alcance final corrigido de crosstalk, em milímetros, do detetor de zona única SD0 como int.

Constantes

vl53l1x.VL51L1X_DEFAULT_CONFIGURATION: bytes

Bloco de configuração predefinido de 91 bytes escrito no dispositivo a partir do registo 0x2D durante a construção. O bloco define a polaridade de interrupção, o limiar sigma, o limiar de sinal, o período de intermeasurement, os limiares de distância, o centro/tamanho do ROI e outros parâmetros de medição recomendados pelo driver ultra-leve ST. A maioria dos bytes não é modificável pelo utilizador; consulte os comentários no código-fonte para os campos ajustáveis pelo utilizador.