秋月にて販売されているVL53L0X使用 レーザー測距センサモジュール(ToF)、
最大2mまで、距離を短い設定にすればミリ単位で計測ができ、PSDセンサーより使い勝手が良いと考えたため、arduinoで使用した。
今回問題として発生したのが仕様がi2cのため、センサーとarduinoとの配線距離が1m超えたあたりからエラーでタイムアウトが発生し、エラーが連続した際復帰がされず、距離が測れないという問題が起きた。
使用したライブラリ
Adafruit_VL53L0X Library
VL53L0X by Pololu
#対策まとめ
エラーが連続した際、再度i2cの設定を読み込ませようと考えたが他のi2c接続の通信が途切れるため、物理的にarduinoをもう一台用意しVL53L0X専用として使用し、arduino同士をシリアル通信で距離データを送りエラーが発生し続けた場合
、主arduinoからセンサー用arduino自体をリセットを掛けるという方法。デメリットとして、リセットを掛けている際データが途切れる点。
#VL53L0Xに関して
レジスタマップや制御方法が、メーカー非公開ということで、皆がライブラリを使用している。初期設定の一部分を書き直すだけで、簡単に長距離モード、高精度モード、距離を変更できるが、エラー部分の対応方法に関しては項目がなかった。ライブラリ内を確認し変更できれば、もしからしたら、今回の問題も解決できたかもしれない。
#その他
知見者にアドバイスをもらい、他に以下の行為を試してみたが今回は大きく状況が変わることがなかった。
・I2Cの通信速度自体を100khz→25khzに落とす
・プルアップ抵抗を内部33kΩから1.6kΩへ落とす
他にi2cから別の通信方法に変更する方法を教えてもらったが、簡単に済ますためマイコンを別途用意する方法を今回行った。
#参考ページ
・実際に機器に組み込んだ場合のコードを書いています。
測距センサ VL53L0X を用いた身長測定器
https://homemadegarbage.com/vl53l0x01
・arduinoとの接続配線と精度の説明をされています。
作りながら学ぶArduino+=電子工作入門
距離を正確に測る その2 レーザーVL53L0X
https://www.denshi.club/cookbook/sensor/distance/2vl53l0x.html
・設定値の説明をされています
平凡な日常を平凡に綴る
デジタル積雪計を作る
http://msms1003.blogspot.com/2017/12/vl53l0x.html
・スイッチサイエンス製での使用をされています。
Hobby robot laboratory
https://sites.google.com/site/memorandumjavaandalgorithm/arduino-jiang-zuo-ju-lisensa-vl53l0x
・精度を確認されています。
yuqlidの日記
http://yuqlid.hatenablog.com/entry/2016/09/11/002804
・今回使用しなかったが複数台使用参考になります。
ArduinoでVL53L0Xを複数同時に使う
http://rcj-quantity.info/2017/12/13/arduino%E3%81%A7vl53l0x%E3%82%92%E8%A4%87%E6%95%B0%E5%90%8C%E6%99%82%E3%81%AB%E4%BD%BF%E3%81%86/
・ライブラリーの説明をされています。
Adafruit_VL53L0X Library
https://learn.adafruit.com/adafruit-vl53l0x-micro-lidar-distance-sensor-breakout/arduino-code