vl53l1x — Драйвер датчика расстояния ToF VL53L1X

Этот модуль предоставляет драйвер для дальномерного датчика времени пролёта VL53L1X от STMicroelectronics, работающего по шине I2C. VL53L1X измеряет абсолютное расстояние до ~4 м, используя невидимый лазерный излучатель 940 нм и приёмную матрицу SPAD.

Пример использования:

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)

Классы

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

Создаёт экземпляр драйвера VL53L1X.

  • bus — это настроенный объект шины machine.I2C, используемый для связи с датчиком.

  • address — это 7-битный I2C-адрес устройства. По умолчанию 0x29.

Конструктор выполняет программный сброс, проверяет идентификатор модели чипа, записывает в устройство блок конфигурации по умолчанию и применяет стартовую коррекцию регистров, которую API от ST выполняет при первом запуске измерения. Вызов блокируется на ~200 мс, пока датчик стабилизируется. Возбуждает RuntimeError, если регистр идентификатора модели не возвращает ожидаемое значение 0xEACC.

writeReg(reg: int, value: int) None

Записывает одно 8-битное значение value в 16-битный адрес регистра устройства reg.

writeReg16Bit(reg: int, value: int) None

Записывает 16-битное значение value (старшим байтом вперёд) в 16-битный адрес регистра устройства reg.

readReg(reg: int) int

Считывает одно 8-битное значение из 16-битного адреса регистра устройства reg и возвращает его как int.

readReg16Bit(reg: int) int

Считывает 16-битное значение (старшим байтом вперёд) из 16-битного адреса регистра устройства reg и возвращает его как int.

read_model_id() int

Возвращает содержимое 16-битного регистра идентификатора модели по адресу 0x010F. Ожидаемое значение для VL53L1X — 0xEACC.

reset() None

Выполняет программный сброс устройства путём переключения регистра программного сброса 0x0000. Блокируется на 100 мс, пока устройство удерживается в состоянии сброса.

read() int

Запускает чтение регистра RESULT__RANGE_STATUS (0x0089) и возвращает итоговую дальность с поправкой на перекрёстные помехи в миллиметрах для однозонного детектора SD0 как int.

Константы

vl53l1x.VL51L1X_DEFAULT_CONFIGURATION: bytes

Блок конфигурации по умолчанию длиной 91 байт, записываемый в устройство начиная с регистра 0x2D при создании. Блок задаёт полярность прерывания, порог сигмы, порог сигнала, период между измерениями, пороги расстояния, центр/размер ROI и другие параметры измерения, рекомендованные ультра-облегчённым драйвером ST. Большинство байтов не подлежат изменению пользователем; за пользовательски настраиваемыми полями обращайтесь к комментариям в исходном коде.