vl53l1x --- VL53L1X ToF 距離センサードライバ

このモジュールは、I2C 経由の STMicroelectronics VL53L1X 飛行時間(ToF)測距センサー用のドライバを提供します。VL53L1X は 940 nm の不可視レーザーエミッタと SPAD 受光アレイを用いて、最大約 4 m までの絶対距離を測定します。

使用例:

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

16ビットのデバイスレジスタアドレス reg に単一の8ビット value を書き込みます。

writeReg16Bit(reg: int, value: int) None

16ビットのデバイスレジスタアドレス reg に16ビットの value(ビッグエンディアン)を書き込みます。

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)のレジスタ読み取りをトリガーし、単一ゾーン検出器 SD0 の最終的なクロストーク補正済み距離をミリメートル単位の int として返します。

定数

vl53l1x.VL51L1X_DEFAULT_CONFIGURATION: bytes

構築時にレジスタ 0x2D から書き込まれる、デバイスへの既定の91バイト設定ブロックです。このブロックは、割り込み極性、シグマしきい値、信号しきい値、測定間隔、距離しきい値、ROI の中心/サイズ、その他 ST ウルトラライトドライバが推奨する測距パラメータを設定します。ほとんどのバイトはユーザーが変更できません。ユーザーが調整可能なフィールドについてはソース内のコメントを参照してください。