VL53L0Xはレーザー光を利用したTOF型距離センサです。
最大測定距離は以下の通り。
Target reflectance level(full FOV) | Conditions | Indoor(2) | Outdoor overcast (2) |
---|---|---|---|
White target (88%) | Typical | 200cm+ (1) | 80cm |
Minimum | 120cm | 60cm | |
Grey target (17%) | Typical | 80cm | 50cm |
Minimum | 70cm | 40cm |
(VL53L0X Datasheet P.26より)
ホストとはI2Cで接続されます。I2Cバスの最大速度は400kbpsです。レジスタの仕様は公開されていない。
測定方法は以下の2つの方法です。
- ポーリングモード
- 割込みモード: 値が利用可能になると割込みピン(GPIO1)がホストに割込みを送信します。
ポーリングモードで測定する場合はAPI呼び出し後、timing buget(デフォルトは33msec) の時間以内で測定します。
Range profile | Range timing budget | Typical performance | Typical application |
---|---|---|---|
Default mode | 30 ms | 1.2 m, accuracy omit | Standard |
High accuracy | 200 ms | 1.2 m, accuracy < +/- 3 % | Precise measurement |
Long range | 33 ms | 2 m, accuracy omit | Long ranging, only for dark conditions (no IR) |
High speed | 20 ms | 1.2 m, accuracy +/- 5 % | High speed where accuracy is not priority |
(VL53L0X Datasheet P.28より)
timing budgetは、最小 20 ms, 最大 1000 ms。
Cargo.tomlの設定は creates.io を参照。
【インスタンスの生成】 VL53L0x::new(i2c)
【単発での測定】
- read_range_single_millimeters_blocking()
【割込みでの連続測定】
- start_continuous(timing budgetのミリ秒)
- 割込み発生
- read_range_continuous_millimeters_blocking() もしくは read_range_mm()
- 2, 3の繰り返し
- (測定停止の場合)stop_continuous()
【timing budget】
get_measurement_timing_budget(ミリ秒) set_measurement_timing_budget(ミリ秒)
使用例
- ポーリングモードの例