vl53l1x --- VL53L1X ToF 距離感測器驅動程式

本模組提供一個透過 I2C 操作 STMicroelectronics VL53L1X 飛時測距(time-of-flight)感測器的驅動程式。VL53L1X 使用 940 nm 不可見雷射發射器與 SPAD 接收陣列,可測量最遠約 4 公尺的絕對距離。

使用範例::

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

建構子會執行軟重置、驗證晶片型號 ID、將預設組態區塊寫入裝置,並套用 ST API 在首次開始測距時所執行的開機暫存器修正。呼叫期間會阻塞約 200 ms 以待感測器穩定。若型號 ID 暫存器未回傳預期值 0xEACC,則引發 RuntimeError

writeReg(reg: int, value: int) None

將單一個 8 位元 value 寫入 16 位元的裝置暫存器位址 reg

writeReg16Bit(reg: int, value: int) None

將 16 位元 value(大端序)寫入 16 位元的裝置暫存器位址 reg

readReg(reg: int) int

從 16 位元的裝置暫存器位址 reg 讀取單一個 8 位元值,並以 int 形式回傳。

readReg16Bit(reg: int) int

從 16 位元的裝置暫存器位址 reg 讀取一個 16 位元值(大端序),並以 int 形式回傳。

read_model_id() int

回傳位於 0x010F 的 16 位元型號 ID 暫存器內容。VL53L1X 的預期值為 0xEACC

reset() None

透過切換軟重置暫存器 0x0000 對裝置執行軟重置。在裝置保持於重置狀態期間會阻塞 100 ms。

read() int

觸發對 RESULT__RANGE_STATUS0x0089)的暫存器讀取,並以 int 形式回傳單區偵測器 SD0 經串擾校正後的最終距離(單位為毫米)。

常數

vl53l1x.VL51L1X_DEFAULT_CONFIGURATION: bytes

在建構期間從暫存器 0x2D 開始寫入裝置的預設 91 位元組組態區塊。此區塊設定中斷極性、sigma 閾值、訊號閾值、量測間隔週期、距離閾值、ROI 中心/大小,以及 ST 超輕量驅動程式建議的其他測距參數。大多數位元組不可由使用者修改;可使用者調整的欄位請參閱原始碼中的註解。