3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VL53L1X ToFセンサーをRaspberry Piで使ってみた

Last updated at Posted at 2020-10-28

#はじめに
前にUS-100超音波センサーを使った記事を投稿しましたが、VL53L1XというToF(Time-of-Flight)センサーも使ってみたので、そのことを書いていこうと思います。

#ToFセンサーとは
ToFセンサーは、赤外線レーザーの飛行時間を用いて距離を測るセンサーです。超音波センサーでは超音波の跳ね返ってくる時間で距離を出していましたが、ToFセンサーはそれがレーザーになった形です。

今回用いたToFセンサーは、VL53L1Xです。SwitchScienceにて購入しました。
image.png

こちらのボードは2.6V~5.5Vの入力電圧で動作するように、2.8Vのリニアレギュレータとレベルシフタが搭載されています。I2Cで通信します。

#回路図
回路図は次の画像の通りです。(画像はVL53L0Xになっていますが、VL53L1Xと思ってください。ポートは変わらないです)
image.png

I2C通信なので、SDA, SCL同士をつなげます。今回はVCCに3.3Vを与えています。実際につなげたものが次の画像です。(前回の記事の流用です…すみません)
IMG_5678.JPG

#プログラム
サンプルプログラムがGitHubにあったので、これを用いました。ただ、これをそのまま使ったときに、なぜか終了(Ctrl+C)ができなかったので、その部分だけ改変しました。なお、あらかじめターミナルで次のコマンドを実行してインストールする必要があります。

sudo pip install vl53l1x
VL53L1X_test.py
#!/usr/bin/env python

import sys
sys.path.insert(0, "build/lib.linux-armv7l-2.7/")

import VL53L1X
import time
from datetime import datetime

tof = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29)
print("Python: Initialized")
tof.open()
print("Python: Opened")

tof.start_ranging(1)

# try:
#   while True:
#        distance_mm = tof.get_distance()
#        print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm))
#        time.sleep(0.001)
# except KeyboardInterrupt:
#    tof.stop_ranging()
while True:
    flug_stop = input("Pless Enter to measure, input \"EXIT\" to exit... : ")
    if(flug_stop != "EXIT"):
        distance_mm = tof.get_distance()
        print("Time: {} Distance: {}mm".format(datetime.utcnow().strftime("%S.%f"), distance_mm))
        time.sleep(0.001)
    else:
        tof.stop_ranging()
        break

途中コメントアウトしている部分は、サンプルプログラムでの測定のプログラムですが、これだとなぜかCtrl+Cがきかなかったので、EXITと入力することで処理を終了するように変更しました。
tof.get_distance()で距離を測定しています。

#使ってみた
実際にこのプログラムを使ったところ、次の画像のようになりました。
image.png
きちんと距離が測れていることが分かります。一応、巻き尺を使って正確に測れているかも見てみました。

距離(cm) 10 20 30 40 50 60 70 80 90 100
測定結果(cm) 11.3 20.6 29.6 39.3 49.4 59.3 69.1 78.8 88.3 98.0
距離(cm) 110 120 130 140 150 160 170 180 190 200
測定結果(cm) 108.0 116.7 126.8 135.8 146.2 155.3 165.7 174.5 183.6 194.3

140㎝あたりから、最初に全然違う値が測定された時がありました。ただ、何回か計測をするとちゃんとした値が出たので、測定用の遮蔽物を動かす時に出たレーザーの値がでていたと考えています。

#感想
超音波センサーよりも精度良く出るのかなと思っていたのですが、意外と変わらなくて驚きました(ただしこっちの精度が悪いのではなく、超音波センサーの精度が想像以上に良かったというほうです)。大きさとしてはこっちのほうが小さいので、利便性みたいなものはこっちのほうがいいと思います。まあ目に安全とはなっているとはいえ、レーザーですので、どのような状況でも使えるものではないかもしれないですが…(超音波センサーなら超音波なので直視しても一切問題なし)
測定した後で気づいたのですが、どうやらスタートするときに長さにおけるいくつかのモードがあるらしく(start_ranging(1)の部分)、そのモードを長距離のものにすれば、長距離の精度が上がるかもしれません。多分自分はそっちの測定はやらないので、興味がある方は買って試してみるのもいいかもしれませんね。
ここまでご覧くださり、ありがとうございました。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?