距離センサー VL53L1X

購入当初は単純に距離計として購入したが、実は16×16のマトリクスで距離が計測できるとの情報入手
やってみることにした

仕様

項目詳細
パッケージOptical LGA12
サイズ4.9 x 2.5 x 1.56 mm
動作電圧2.6~3.5V
動作温度-20~85℃
視野角15~27度(設定可)
I2C最大400kHz(Fastモード)シリアルバス
アドレス 0x52(変更可)

表1. 技術仕様

測定中心は16×16の中心からX軸Y軸それぞれ-2~2で設定できる

半導体受光素子は4×4~16×16を設定できる

デフォルト設定

  • 距離モード:long
  • タイミング・バジェット(余裕時間?): 100ms
  • カバーガラスなし
  • ターゲットは視野全体

測定最小距離は4cm

データフォーマット

書込み

S: 開始
ADDRESS[7:0]: I2C書込みアドレス(デフォルト 0x52)
As: VL53L1X アドレス受信ACK
INDEX[15:8]: インデックス上位8ビット
As: VL53L1X インデックス上位受信ACK
INDEX[7:0]: インデックス下位8ビット
As: VL53L1X インデックス下位受信ACK
DATA[7:0]: データ8ビット
As: VL53L1X データ受信ACK
P: 停止

読込み

読込みは書込みの後に書き込みインデックスのデータを下記フォーマットで読み込める

S: 開始
ADDRESS[7:0]: I2C読込みアドレス(デフォルト 0x53)
As: VL53L1X アドレス受信ACK
DATA[7:0]: データ8ビット
Am: VL53L1X データ受信ACK
P: 停止

連続書込み

連続するインデックスに格納する場合、先頭のインデックスを指定するのみで書き込める

S: 開始
ADDRESS[7:0]: I2C書込みアドレス(デフォルト 0x52)
As: VL53L1X アドレス受信ACK
INDEX[15:8]: インデックス上位8ビット
As: VL53L1X インデックス上位受信ACK
INDEX[7:0]: インデックス下位8ビット
As: VL53L1X インデックス下位受信ACK
P: 停止 ←★ここがポイント
DATA[7:0]: データ8ビット
As: VL53L1X データ受信ACK

DATA[7:0]: データ8ビット
As: VL53L1X データ受信ACK
P: 停止

連続読込み

S: 開始
ADDRESS[7:0]: I2C書込みアドレス(デフォルト 0x52)
As: VL53L1X アドレス受信ACK
INDEX[15:8]: インデックス上位8ビット
As: VL53L1X インデックス上位受信ACK
INDEX[7:0]: インデックス下位8ビット
As: VL53L1X インデックス下位受信ACK
P: 停止 ←★ここがポイント
S: 開始
ADDRESS[7:0]: I2C読込みアドレス(デフォルト 0x53)
As: VL53L1X アドレス受信ACK
DATA[7:0]: データ8ビット
Am: VL53L1X データ受信ACK

DATA[7:0]: データ8ビット
Am: VL53L1X データ受信ACK
P: 停止

レジスター

参照レジスタ

レジスター名インデックス
モデルID0x010F0xEA
モデルタイプ0x1100xCC
マスクリビジョン0x1100x10



マルチバイトは最初にMSBとなる

マニュアルはここまでで、下記記述が💧
「お客様は、VL53L1X ソフトウェア ドライバーを使用して、パフォーマンスと精度の基準を満たす簡単で効率的な測距操作を行う必要があります。 したがって、完全なレジスタの詳細は公開されません。 お客様は、VL53L1X API ユーザー マニュアル (UM2356) を参照する必要があります。」
それで、Pololu社が出てくるのね。

Pololu社APIvl53l1x-arduino



複数接続方法

複数接続するために、別々のI2Cアドレスの設定をしたい。

これを実現するために下記VL53L1X仕様を利用する

  • I2Cアドレスはデフォルトで0x29となっている
  • I2Cアドレスはプログラムで変更可能、ただし、電源を落とすとデフォルトに戻る
  • XSHUTで起動停止できる

設定手順

下記手順で1個ずつ別のアドレスを設定していく

  • 全てXSHUTで停止
  • 1個目のデバイスをXSHUTで起動(I2Cアドレスは0x29)
  • 1個目のデバイスのI2Cアドレス設定(0x2A=0x29+1)
  • 2個目のデバイスをXSHUTで起動(I2Cアドレスは0x29)
  • 2個目のデバイスのI2Cアドレス設定(0x2B=0x29+2)
    :
  • N個目のデバイスをXSHUTで起動(I2Cアドレスは0x29)
  • N個目のデバイスのI2Cアドレス設定(0x2C=0x29+N)

複数接続M5StackGrayで2つのレーザー距離センサの同時接続テスト