レーザー測距センサモジュール(ToF)の VL53L1X を使用して距離を測定してみます。
ラズパイへの接続は以下のとおりです。
ラズパイのI2C通信を有効にします。
VL53L1XのI2Cアドレスを確認します。
i2cdetect -y 1
VL53L1XのI2Cアドレスが「0x29」であることが確認できました。
Pythonで処理するため、VL53L1Xのライブラリをインストールします。
pip3 install vl53l1x
1秒ごとに距離を測定するサンプルです。
import VL53L1X
import time
# アドレス設定
I2C_BUS = 1
I2C_ADDRESS = 0x29
# 測定モード
# 1:Short, 2:Medium, 3:Long
RANGE_MODE = 1
def main():
# 初期設定
tof = VL53L1X.VL53L1X(i2c_bus=I2C_BUS, i2c_address=I2C_ADDRESS)
tof.open()
try:
while True:
# 測定開始
tof.start_ranging(RANGE_MODE)
# 測定結果を取得
distance = tof.get_distance()
#測定終了
tof.stop_ranging()
# 測定結果を表示
print("{0}mm".format(distance))
# 1秒停止
time.sleep(1)
except KeyboardInterrupt:
print("\nCtrl+C")
finally:
print("Exit")
if __name__ == "__main__":
main()
VL53L1Xの計測範囲は約10cmから約400cm、1mm単位で測定結果を取得することができます。
測定モードが短距離用(1:Short)、中距離用(2:Medium)、長距離用(3:Long)の3種類あり、測定する環境に合わせて変更すると精度が上がるかもしれません。
※測定距離とモードによる精度については確認していません。
参考サイト