2021.7.8 Coskx Lab
M5Stack GrayにM5Stack_ToF_UNIT(レーザー距離センサ)を接続して周囲の対象物までの距離を測定します。
M5Stack_ToF_UNITはレーザー距離センサVL53L0X(STMicroelectronics)をM5StackのGrovePortA(I2C)接続専用として販売されています。
VL53L0Xは,赤外線レーザにより2m程度までの距離を測定することができ,M5StackにはI2Cでデータを転送します。
VL53L0Xを基板上に取り付けた製品は多数ありますがそのうちの一つです。
付属のケーブルで,M5StackのPortA(赤いポート)にM5Stack_ToF_UNITをつなげます。
M5StackのPortAの電源ラインには5Vが供給されていますが,SCL,SDAの信号線は3.3Vで通信しています。(M5Stackの信号は3.3Vです。M5Stack_ToF_UNITは内部で5V電源から3.3Vを作って,信号を3.3Vにしています。)
注意 PortAのソケットの形が同じだからといって,M5Stack_ToF_UNITを5V系のマイコンに接続して使うことはできません。
Groveシステムは接続は簡単なのですが,信号の電圧という落とし穴があります。
PortAにはM5Stackの5V,GND,SDA,SCLが引き出されているだけなので,PortA経由ではなく直接5V,GND,SDA,SCLにつないでも,OKです。(3.5Vにつながないように気を付けてください。)
VL53L0XはI2CでCPUとデータをやり取りしますが,そのためのライブラリが必要です。
Arduino IDEにて,「ツール」メニューから,「ライブラリを管理」を選び,「ライブラリマネージャ」を開きます。
上部にある「タイプ すべて」,「トピック すべて」の右側の長いボックスが検索欄なので,
そこに「VL53L0X」と書き込むと検索されます。複数の「VL53L0X」が見つかりますが,
「by PoLolu」と書いてあるものを選んでインストールします。
ライブラリを使わずに,プログラムした(長いプログラムになります)例も
https://github.com/m5stack/M5Stack/blob/master/examples/Unit/ToF_VL53L0X/ToF_VL53L0X.ino
にあります。
https://github.com/pololu/vl53l0x-arduino
を参考にさせていただきました。
実行時に,測定距離2m以上(実際には1.2mを超えた付近から)の場合,8190mmが表示されますが,これは測定が失敗しているときです。
動作テスト用プログラム本体(センサは常時稼働)
センサを手にもって,周囲に向けたところ,1.2m程度までの距離測定ができました。