M5StackGrayでレーザー距離センサの動作テスト

2021.7.17 Coskx Lab  

1 はじめに

M5Stack Grayにレーザー距離センサを接続して周囲の対象物までの距離を測定します。

VL53L0Xを基板上に取り付けた製品は多数ありますがここでは秋月電子のAE-VL53L0Xを使います。

2 使用環境

3 接続

図のようにAE-VL53L0XをM5Stackに接続します。
使用していないXSHUTとGPIOは線を外した方がノイズに強くなります。

名称機能配線色M5Stack配線先
V+3.3~5V 入力3.3V
GNDGNDGND
SDAデータ線SDA (21)
SCLクロック線SCL (22)
XSHUTシャットダウン入力端子接続しない
GPIOGPIO(2.8Vレベル)接続しない



4 準備

VL53L0XはI2CでCPUとデータをやり取りしますが,そのためのライブラリが必要です。
Arduino IDEにて,「ツール」メニューから,「ライブラリを管理」を選び,「ライブラリマネージャ」を開きます。
上部にある「タイプ すべて」,「トピック すべて」の右側の長いボックスが検索欄なので,
そこに「VL53L0X」と書き込むと検索されます。複数の「VL53L0X」が見つかりますが,
「by PoLolu」と書いてあるものを選んでインストールします。

ライブラリを使わずに,プログラムした(長いプログラムになります)例も
https://github.com/m5stack/M5Stack/blob/master/examples/Unit/ToF_VL53L0X/ToF_VL53L0X.ino
にあります。


5 テストプログラム

https://github.com/pololu/vl53l0x-arduino
を参考にさせていただきました。

実行時に,測定距離2m以上(実際には1.2mを超えた付近から)の場合,8190mmが表示されますが,これは測定が失敗しているときです。

  動作テスト用プログラム本体(センサは常時稼働)

//DistanceSenSor_VL53l0xTest01.ino//

//https://github.com/pololu/vl53l0x-arduino

#include <M5Stack.h>
#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

const int SDApin = 21; //SDAピン番号
const int SCLpin = 22; //SCLピン番号

void setup()
{
  M5.begin();
  M5.Power.begin();
  Wire.begin(SDApin,SCLpin); //ここをGray用に設定しないと通信に失敗する
  Wire.setClock(400000); // use 400 kHz I2C
  M5.Lcd.setTextSize(2); //高さ16 26文字/行

    while (1);
  if (!sensor.init())
  {
    M5.Lcd.println("Failed to detect and initialize sensor!");
  }
  sensor.setTimeout(500); //[msec]
  sensor.setMeasurementTimingBudget(50000); //測定タイミングバジェット(1回の距離測定)に許容される時間[micros]
  sensor.startContinuous();
  M5.Lcd.println("VL53L0X Started");
}

void loop()
{
  int distance = sensor.readRangeContinuousMillimeters();
  if (sensor.timeoutOccurred()) {
    M5.Lcd.setCursor(0, 80);
    M5.Lcd.print("TIMEOUT");
  } else {
    M5.Lcd.setCursor(0, 80);
    M5.Lcd.print("        ");
  }
  M5.Lcd.setCursor(0, 30);
  M5.Lcd.print("                          ");
  M5.Lcd.setCursor(0, 30);
  M5.Lcd.printf("distance[mm]:    %5d  \n",distance);
  delay(100);//[msec]
}

6 トラブルシューティング

動作が不安定,時折初期化を失敗するとき,モータを含むシステムで使って誤動作するとき
(1)センサケーブルが細くて耐ノイズ性に問題があります。ケーブルはきれいに束ねない方がよいようです。
(2)使用していないセンサのケーブル(XSHUTの青のケーブル,GPIOの紫ケーブル)はノイズの原因になりますので取り外した方が良いでしょう。(下の画像は紫ケーブルを外したところ。細いピンなどで詰めを持ち上げれば簡単に外れます。)



7 まとめ

センサを手にもって,周囲に向けたところ,1.2m程度までの距離測定ができました。