注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。

なぜ参加するのか?

  • 専門的なサポート:購入後の問題や技術的な課題をコミュニティやチームの助けを借りて解決。

  • 学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。

  • 限定プレビュー:新製品発表や予告編に早期アクセス。

  • 特別割引:最新製品の特別割引を楽しむ。

  • フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。

👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!

レッスン21: 飛行時間型マイクロLIDAR距離センサー (VL53L0X)

このレッスンでは、Raspberry Piを使用して飛行時間型マイクロLIDAR距離センサー (VL53L0X) を接続する方法を学びます。センサーのセットアップ、I2C通信の初期化、およびリアルタイムでの距離測定について順を追って説明します。このプロジェクトは、ハードウェアをRaspberry Piに接続し、Pythonを使った実践的な応用についての理解を深めるものです。また、さまざまな精度と速度のニーズに対応するための測定パラメータの調整についても学びます。

必要なコンポーネント

このプロジェクトでは、以下のコンポーネントが必要です。

全てが揃ったキットを購入すると便利です。リンクはこちらです:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

以下のリンクから個別に購入することもできます。

Component Introduction

Purchase Link

Raspberry Pi 5

-

Time of Flight マイクロLIDAR距離センサー (VL53L0X)

購入

ブレッドボード

購入

配線

../_images/Lesson_21_vl53l0x_pi_bb.png

ライブラリのインストール

注釈

adafruit-circuitpython-vl53l0xライブラリはBlinkaに依存しているため、Blinkaがインストールされていることを確認してください。ライブラリのインストール方法については、Adafruit_Blinka (CircuitPython)のインストール - 任意 を参照してください。

ライブラリをインストールする前に、仮想Python環境がアクティブになっていることを確認してください:

source ~/env/bin/activate

adafruit-circuitpython-vl53l0xライブラリをインストールします:

pip3 install adafruit-circuitpython-vl53l0x

コード

注釈

  • 「ライブラリのインストール」ステップに従って、コードを実行するために必要なPythonライブラリがインストールされていることを確認してください。

  • コードを実行する前に、blinkaがインストールされた仮想Python環境がアクティブになっていることを確認してください。仮想環境をアクティブにするには、以下のコマンドを使用します:

    source ~/env/bin/activate
    
  • このレッスンのコードは universal-maker-sensor-kit-main/pi/ ディレクトリにありますが、以下のコードを直接コピーして貼り付けても構いません。ターミナルで次のコマンドを実行してコードを実行します:

    python 21_vl53l0x_module.py
    
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

# Simple demo of the VL53L0X distance sensor.
# Will print the sensed range/distance every second.
import time

import board
import busio

import adafruit_vl53l0x

# Initialize I2C bus and sensor.
i2c = busio.I2C(board.SCL, board.SDA)
vl53 = adafruit_vl53l0x.VL53L0X(i2c)

# Optionally adjust the measurement timing budget to change speed and accuracy.
# See the example here for more details:
#   https://github.com/pololu/vl53l0x-arduino/blob/master/examples/Single/Single.ino
# For example a higher speed but less accurate timing budget of 20ms:
# vl53.measurement_timing_budget = 20000
# Or a slower but more accurate timing budget of 200ms:
# vl53.measurement_timing_budget = 200000
# The default timing budget is 33ms, a good compromise of speed and accuracy.

try:
    # Main loop will read the range and print it every second.
    while True:
        print("Range: {0}mm".format(vl53.range))
        time.sleep(1.0)
except KeyboardInterrupt:
    print("Exit")  # Exit on CTRL+C

コード解析

  1. ライブラリのインポート

    import time
    import board
    import busio
    import adafruit_vl53l0x
    
    • time: 遅延の実装に使用します。

    • board: Raspberry Piの物理ピンにアクセスします。

    • busio: Piとセンサー間のI2C通信を管理します。

    • adafruit_vl53l0x: VL53L0Xセンサー専用のライブラリです。 adafruit_vl53l0x ライブラリの詳細については、adafruit/Adafruit_CircuitPython_VL53L0X を参照してください。


  2. センサーの初期化

    # Initialize I2C bus and sensor.
    i2c = busio.I2C(board.SCL, board.SDA)
    vl53 = adafruit_vl53l0x.VL53L0X(i2c)
    
    • This sets up the I2C communication using SCL (clock line) and SDA (data line) pins.

    • The VL53L0X sensor is then initialized with this I2C bus.


  3. 設定(オプション)

    # Optionally adjust the measurement timing budget...
    # vl53.measurement_timing_budget = 20000
    # ...
    

    このコードの部分はコメントアウトされていますが、センサーのタイミング予算を調整し、速度と精度のバランスを変更することができます。

  4. メインループ

    try:
        while True:
            print("Range: {0}mm".format(vl53.range))
            time.sleep(1.0)
    except KeyboardInterrupt:
        print("Exit")
    
    • 無限ループ内で、センサーの測定距離が読み取られ、毎秒表示されます。

    • ループはCTRL+Cの割り込みで終了でき、この割り込みはKeyboardInterrupt例外で処理されます。