5.9 KiB
近接検知 - Raspberry Pi
このレッスンでは、Raspberry Piに近接センサーを追加し、距離を読み取る方法を学びます。
ハードウェア
Raspberry Piには近接センサーが必要です。
使用するセンサーはGrove Time of Flight距離センサーです。このセンサーはレーザー測距モジュールを使用して距離を検知します。このセンサーの測定範囲は10mmから2000mm(1cm - 2m)で、この範囲内の値をかなり正確に報告します。1000mmを超える距離は8109mmとして報告されます。
レーザー測距モジュールはセンサーの背面にあり、Groveソケットの反対側に位置しています。
これはI²Cセンサーです。
Time of Flightセンサーを接続する
Grove Time of FlightセンサーはRaspberry Piに接続できます。
タスク - Time of Flightセンサーを接続する
Time of Flightセンサーを接続します。
-
Groveケーブルの片方の端をTime of Flightセンサーのソケットに差し込みます。このケーブルは一方向にしか差し込めません。
-
Raspberry Piの電源をオフにした状態で、Groveケーブルのもう片方の端を、Piに取り付けられたGrove Base HatのI²Cと記されたソケットの1つに接続します。このソケットは下段にあり、GPIOピンの反対側で、カメラケーブルスロットの隣にあります。
Time of Flightセンサーをプログラムする
Raspberry Piをプログラムして、接続されたTime of Flightセンサーを使用できるようにします。
タスク - Time of Flightセンサーをプログラムする
デバイスをプログラムします。
-
Piの電源を入れ、起動を待ちます。
-
fruit-quality-detector
コードをVS Codeで開きます。Pi上で直接開くか、Remote SSH拡張機能を使用して接続します。 -
VL53L0X Time of Flight距離センサーとやり取りするPythonパッケージであるrpi-vl53l0x Pipパッケージをインストールします。以下のpipコマンドを使用してインストールします。
pip install rpi-vl53l0x
-
このプロジェクトに新しいファイル
distance-sensor.py
を作成します。💁 複数のIoTデバイスをシミュレーションする簡単な方法は、それぞれを別々のPythonファイルで作成し、それらを同時に実行することです。
-
このファイルに以下のコードを追加します:
import time from grove.i2c import Bus from rpi_vl53l0x.vl53l0x import VL53L0X
これにより、Grove I²Cバスライブラリと、Grove Time of Flightセンサーに組み込まれたコアセンサーのハードウェア用ライブラリがインポートされます。
-
次に、センサーにアクセスするための以下のコードを追加します:
distance_sensor = VL53L0X(bus = Bus().bus) distance_sensor.begin()
このコードは、Grove I²Cバスを使用して距離センサーを宣言し、センサーを開始します。
-
最後に、距離を読み取るための無限ループを追加します:
while True: distance_sensor.wait_ready() print(f'Distance = {distance_sensor.get_distance()} mm') time.sleep(1)
このコードは、センサーから値を読み取る準備ができるのを待ち、コンソールに値を表示します。
-
このコードを実行します。
💁 このファイルは
distance-sensor.py
という名前です!app.py
ではなく、Pythonで実行することを忘れないでください。 -
コンソールに距離測定値が表示されます。センサーの近くに物体を置くと、距離測定値が表示されます:
pi@raspberrypi:~/fruit-quality-detector $ python3 distance_sensor.py Distance = 29 mm Distance = 28 mm Distance = 30 mm Distance = 151 mm
測距モジュールはセンサーの背面にあるため、距離を測定する際には正しい側を使用してください。
💁 このコードはcode-proximity/piフォルダーにあります。
😀 近接センサーのプログラムが成功しました!
免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された原文が公式な情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の使用に起因する誤解や誤認について、当方は一切の責任を負いません。