ArduinoでCJMCU VL53L0Xレーザー距離計を使う
このチュートリアルでは、CJMCU VL53L0X レーザー距離計を Arduino で使う方法を解説します。 このモジュールは Texas Instruments の VL53L0X ToF センサーと双方向レベルシフター TXS0108E を搭載しており(ビデオの :06 で)、最大2メートルまでの高精度な距離測定が可能です(ビデオの :52 で)。3.3V、1.8V、5V といった各種ロジックレベルに対応しているため、様々なマイコンとの接続が簡単になります(ビデオの :21 で)。このプロジェクトは幅広い応用が可能になります。
プロジェクトのアイデア:
- ロボット工学:ロボットに障害物回避機能を実装する。
- 自動化:近接に応じて機械を制御する。
- スマートホーム:距離に基づいて自動的に照明を制御する
- セキュリティ:近接検知型の警報システムを開発する。
ハードウェア/コンポーネント
このプロジェクトを構築するには、次のコンポーネントが必要です:
- Arduinoボード(どのモデルでも動作します)
- CJMCU VL53L0X レーザー距離測定モジュール
- ジャンパー線
配線ガイド
VL53L0XモジュールのArduinoへの接続は次のとおりです:
モジュールのVCCピンをArduinoの5Vピンに接続してください。モジュール内蔵のレギュレータがセンサーに必要な3.3Vを供給します。(ビデオの01:50で)
モジュールのGNDピンをArduinoのGNDピンに接続してください。
モジュールのSDAピンをArduinoのA4ピンに接続してください。
モジュールのSCLピンをArduinoのA5ピンに接続してください。
シャットダウン制御に使用する必要がある場合を除き、XSHUTピンは未接続のままにしておいてください。(ビデオの03:50で)
コードの説明
提供されたコードはVL53L0Xライブラリを利用しています。以下に主要な設定項目の説明を示します:
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
Serial.begin(9600);
// ... other setup code ...
sensor.setTimeout(500); // Set timeout to 500ms (in video at 06:40)
sensor.startContinuous(); // Start continuous measurement mode (in video at 06:50)
}
void loop()
{
Serial.print(sensor.readRangeContinuousMillimeters()); // Read distance in mm (in video at 07:01)
// ... other loop code ...
}
そのsensor.setTimeout(500)この行は距離測定のタイムアウトを500ミリ秒に設定します。必要に応じてアプリケーションに合わせてこの値を調整してください(ビデオの06:40)。sensor.startContinuous()関数は連続測距を開始し、可能な限り速く距離測定値を提供します(ビデオの06:50で)。そのsensor.readRangeContinuousMillimeters()関数は測定された距離をミリメートル単位で返します(ビデオの07:01)。
ライブプロジェクト/デモンストレーション
このビデオはセンサーの動作を示しており、センサーとターゲットの距離が変わると距離の読み取り値がどのように変化するかを示しています。読み取り値は数ミリメートルの範囲で正確で、特に10mmより大きい距離では精度が高い(ビデオの08:20)。非常に近い距離(10mm未満)では精度が低下します(ビデオの09:50)。また、デモでは反射面が読み取り値に影響を与えること、特にレーザーが面に垂直でない場合に影響が出ることも示しています(ビデオの10:32)。
章
- [00:00] 導入とプロジェクトの概要
- [00:48] VL53L0X センサーの詳細
- [01:41] モジュールの概要と仕様
- [02:55] 用途と規格
- [03:35] ピン配置と接続
- [05:29] コードの説明
- [07:45] 配線と接続
- [08:18] ライブデモンストレーション
/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.
The range readings are in units of mm.
Updated by Ahmad Shamshiri for Robojax.com on July 23, 2018 in Ajax, Ontario, Canada.
Watch video instructions for this code: https://youtu.be/0PnAyt51IU4
Download the library and get other resources for this code at http://robojax.com
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
Serial.begin(9600);
Serial.println("Robojax CJMCU VL523L0X laser distance test");
Wire.begin();
sensor.init();
sensor.setTimeout(500);
// Start continuous back-to-back mode (take readings as
// fast as possible). To use continuous timed mode
// instead, provide a desired inter-measurement period in
// ms (e.g. sensor.startContinuous(100)).
sensor.startContinuous();
}
void loop()
{
Serial.print(sensor.readRangeContinuousMillimeters());// print distance
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
}
リソースと参考文献
-
外部Pololuダウンロード(GitHub)github.com
-
外部TXS0108E データシートti.com
ファイル📁
ファイルは利用できません。