ラズベリーパイで距離を測る!

ラズベリーパイ4とVL53L0X距離センサーモジュールを利用し距離を測定します。

ラズベリーパイで距離を測る!
この記事ではラズベリーパイの基本的な操作やターミナルの利用方法を理解しているユーザーを想定しています。

利用したハードウェア

ラズベリーパイ4を利用しましたが、マシンパワーを必要としないためPi2や3でも差はほとんどありません。

VL53L0Xセンサー
  • 940nm 赤外線レーザーを用いたセンサー
  • 光が反射して戻ってくるまでの時間で距離を計算する
  • 最大2 mまでの計測が可能
電圧について
利用されるモジュールによっては3.3vまでしか対応していないものがあります、その場合5vを 接続すると壊れますのでご注意ください。

今回利用したモジュールは、データシート上3.3vまでとなっていましたが裏面をよく見てみるとDCDCレギューレーターっぽいものがくっついているので大丈夫な気がします・・しかし壊れると嫌なので試していません。

測定方法

ラズベリーパイから距離を測定するにはおもに2つ方法があります。

超音波センサー
測定対象の色や素材に影響されにくいというメリットがあります。 また、超音波であるためカメラなどの撮影においても影響を与えることはありません。
光学式センサー
測定対象に対して主に赤外線を照射し、反射して戻ってくるまでの時間から距離を計測します。 レーザーを照射するため、特に防犯カメラのような赤外線カメラに映り込んでしまう場合があります。

今回利用するVL53L0Xモジュールは光学式センサーになります。

配線

それでは配線していきます。ゲタを利用していますが、ラズベリーパイから直接繋いでも問題ありません。

作業を行う前に
配線を行う際は電源オフの状態で行ってください。電源ONのまま行うとセンサーやラズベリーパイを破損する場合があります。
ゲタ
GPIO延長ケーブルを利用していますが、ピン配列は同じです。

以下の通りケーブルを接続します。

配線

このような感じで接続しています。

完了

i2cを有効化する

ラズベリーパイの設定変更でおなじみの、raspi-configコマンドを実行します。

sudo raspi-config

起動すると以下のような画面が表示されます。

raspi-config

キーで5 Interfacing Optionsを選択し、TABで下の<select>へ移動し、Enterを押します。

raspi-config

次の画面ではI2Cを有効化するため、 キーキーでP5 I2Cを選択し、前のステップと同様にTABキーで下の<select>へ移動し、Enterを押します

Enable I2C

以下の画面が表示されるので、 キーで<Yes>を選択しEnterを押します。

Enabled I2C

"The ARM I2C interface is enabled"の表示が出れば、I2Cを有効にする設定が完了です。

<Ok>でEnterを押すと、最初の画面に戻りますので、<Finish>へTABキーを使って移動し、Enterを押します。

I2Cの設定はおこなったものの、その設定の反映には再起動が必要になりますので、<Yes>を選択し再起動します。

ソフトウェアを用意する

今回はなんとなくC++でやってみることにしました。他にもPythonのライブラリもあるようです。

まずはソースコードをダウンロードします

git clone https://github.com/kotamorishi/vl53l0x-linux
Gitがインストールされていない場合は

もし、”git : command not found” のように表示される場合は、gitのインストールが必要になりますので、以下のコマンドでインストールを行ってから、再度実行してみてください。

sudo apt-get install git

以下の通り順番にコマンドを実行し、ビルドします。

cd vl53l0x-linux
cd build
cmake ..
make

実行してみる

cd examples
./single
imageAltText

手をかざすとmm単位で距離が測定されていますね!!!

imageAltText
この記事は Raspberry Pi4 Model B メモリ2GB/Raspbian Buster with desktop Release date:2019-07-10 Kernel version:4.19 と CJVL53L0XV2 で動作確認を行いました。ハードウェアやソフトウェアのバージョンにより結果が異なる場合があります。

References

  1. Library for interfacing with VL53L0X time-of-flight distance sensor under Linux https://github.com/mjbogusz/vl53l0x-linux
  2. vl53l0x data sheet https://www.st.com/resource/en/datasheet/vl53l0x.pdf

記事の内容は間違いが無いように気をつけていますが、私の認識違いや、ミスなどにより間違っている可能性もあります。もし発見された場合はお問い合わせフォームよりご連絡頂けると幸いです。