STMicroelectronicsのTime-of-Flight方式の距離センサであるVL53L0X,4.4×2.4×1.0mmの大きさで,数センチから2メートルまでの距離をミリレベルの精度で測ることができる優れものです.今回は研究関係で複数利用したので,ポイントだけざっくりメモを残しておきます.
IDの設定
I2C通信を用いてデータを取得しますが,一つのバスで複数利用する場合にはひと手間必要です.各チップは電源を切るとIDがリセットされるため,電源投入のたびにIDを設定しなおす必要があります.しかし,当然設定しなおす時点では全チップが同じIDを持っているため,一見すると特定のチップのみのIDを変更することができません.そのためにVL53L0XにはSHUTピンが用意されており,このピンをLowにするとそのチップはシャットダウンされます.このピンをマイコンから個別に操作できるようにしておき,
①全てのチップをシャットダウン
②チップ1をONにし,IDを変更
③チップ2をONにし,IDを変更
・・・
といった手順で全てのチップに異なるIDを設定することができます.この操作を電源投入時に毎回行う必要があります.
ライブラリの利用
このセンサを使うためのライブラリはmbedやarduino用のものはあるようですが,今回僕は自分で設計した基板で素のマイコン(STM32F405)を使ったので,これらのライブラリはそのままでは使えませんでした.
ライブラリを使用しない場合の情報が少なかったため,ライブラリをいじって使うことにしました.下記ライブラリのVL53L0X.h/cppを利用します.
このライブラリに合わせた形でI2Cの通信を行う部分のライブラリを自分で作成し,I2C通信の部分を自作のものに置き換えれば,上記ライブラリのVL53L0Xのクラスが使えるようになります.この方法で連続測定モードで使うことができました.
以上,とりあえずのざっくりメモでした.