vl53l1x --- ไดรเวอร์เซนเซอร์วัดระยะ VL53L1X ToF

โมดูลนี้จัดเตรียมไดรเวอร์สำหรับเซนเซอร์วัดระยะแบบ time-of-flight VL53L1X ของ STMicroelectronics ผ่าน I2C เซนเซอร์ VL53L1X วัดระยะสัมบูรณ์ได้ถึงประมาณ 4 เมตร โดยใช้เลเซอร์ที่มองไม่เห็น 940 nm และอาร์เรย์รับ 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)

สร้าง instance ไดรเวอร์ VL53L1X

  • bus คือออบเจกต์ I2C bus machine.I2C ที่ตั้งค่าแล้ว ใช้สำหรับสื่อสารกับเซนเซอร์

  • address คือที่อยู่ I2C 7 บิตของอุปกรณ์ ค่าเริ่มต้นคือ 0x29

คอนสตรักเตอร์ทำการ soft reset, ตรวจสอบ model ID ของชิป, เขียนบล็อกการตั้งค่าเริ่มต้นลงในอุปกรณ์, และใช้การแก้ไข register เริ่มต้นที่ ST API ทำในการเริ่มต้น ranging ครั้งแรก การเรียกนี้จะบล็อกประมาณ 200 ms ขณะที่เซนเซอร์ตั้งตัว จะยก RuntimeError หาก register model ID ไม่คืนค่าที่คาดหวัง 0xEACC

writeReg(reg: int, value: int) None

เขียน value 8 บิตเดียวไปยังที่อยู่ register อุปกรณ์ 16 บิต reg

writeReg16Bit(reg: int, value: int) None

เขียน value 16 บิต (big-endian) ไปยังที่อยู่ register อุปกรณ์ 16 บิต reg

readReg(reg: int) int

อ่านค่า 8 บิตเดียวจากที่อยู่ register อุปกรณ์ 16 บิต reg และคืนค่าเป็น int

readReg16Bit(reg: int) int

อ่านค่า 16 บิต (big-endian) จากที่อยู่ register อุปกรณ์ 16 บิต reg และคืนค่าเป็น int

read_model_id() int

คืนเนื้อหาของ register model-ID 16 บิตที่ 0x010F ค่าที่คาดหวังสำหรับ VL53L1X คือ 0xEACC

reset() None

ทำการ soft reset ของอุปกรณ์โดยสลับ register soft-reset 0x0000 บล็อก 100 ms ขณะที่อุปกรณ์อยู่ในสถานะ reset

read() int

เรียก register read ของ RESULT__RANGE_STATUS (0x0089) และคืนระยะทาง crosstalk-corrected สุดท้ายในหน่วยมิลลิเมตรของตัวตรวจจับ single-zone SD0 เป็น int

ค่าคงที่

vl53l1x.VL51L1X_DEFAULT_CONFIGURATION: bytes

บล็อกการตั้งค่า 91 ไบต์เริ่มต้นที่เขียนลงในอุปกรณ์เริ่มจาก register 0x2D ระหว่างการสร้าง บล็อกนี้กำหนด interrupt polarity, sigma threshold, signal threshold, intermeasurement period, distance thresholds, ROI center/size และพารามิเตอร์ ranging อื่นๆ ที่แนะนำโดยไดรเวอร์ ultra-light ของ ST ส่วนใหญ่ไม่สามารถปรับเปลี่ยนได้โดยผู้ใช้ โปรดดูคอมเมนต์ในซอร์สสำหรับฟิลด์ที่ผู้ใช้ปรับได้