วิธีใช้เซ็นเซอร์ระยะทางของ VL53L0X Time-of-Flight กับ Arduino

How to Use the VL53L0X Time-of-Flight Distance Sensor with Arduino

VL53L0X เป็นเซ็นเซอร์ระยะทางที่มีขนาดกะทัดรัดและแม่นยำของการบิน (TOF) ที่สามารถวัดระยะทางได้สูงสุด 2 เมตรด้วยความแม่นยำมิลลิเมตร มันใช้เลเซอร์เพื่อวัดเวลาที่แสงเดินทางไปยังวัตถุและด้านหลังทำให้เหมาะสำหรับหุ่นยนต์การตรวจจับความใกล้ชิดและการตรวจจับอุปสรรค ในบทช่วยสอนนี้เราจะแนะนำคุณผ่านการเชื่อมต่อ VL53L0X กับ Arduino


สิ่งที่คุณต้องการ

  1. โมดูลเซ็นเซอร์ระยะทาง VL53L0X
  2. คณะกรรมการ Arduino (เช่น Uno, Mega, Nano)
  3. เครื่องหั่นขนมปังและสายจัมเปอร์
  4. คอมพิวเตอร์ที่ติดตั้ง Arduino IDE

ขั้นตอนที่ 1: ทำความเข้าใจกับเซ็นเซอร์ VL53L0X

VL53L0X สื่อสารโดยใช้โปรโตคอล I2C ทำให้ง่ายต่อการเชื่อมต่อกับ Arduino มันมีคุณสมบัติ:

  • อินเทอร์เฟซ I2C: ใช้สาย SDA และ SCL
  • ความสามารถต่าง ๆ : มาตรการระยะทางจากไม่กี่มิลลิเมตรถึง 2 เมตร

vl53l0x pinout

เข็มหมุด การทำงาน
vin แหล่งจ่ายไฟ (3.3V/5V)
gnd พื้น
SDA สายข้อมูล i2c
SCL สายนาฬิกา i2c
Xshut อินพุตปิดเครื่อง (ไม่บังคับ)
GPIO1 ขัดจังหวะ (ไม่บังคับ)

ขั้นตอนที่ 2: การเดินสาย VL53L0X ถึง Arduino

เชื่อมต่อ VL53L0X กับ Arduino ของคุณดังนี้:

VL53L0X PIN พิน Arduino
vin 5V
gnd gnd
SDA A4 (SDA)
SCL A5 (SCL)

บันทึก: หากคุณใช้ Arduino Mega หรือบอร์ดอื่น ๆ ให้ตรวจสอบ I2C Pinout


ขั้นตอนที่ 3: ติดตั้งไลบรารี VL53L0X

ห้องสมุด Adafruit VL53L0X ช่วยลดความซับซ้อนของการโต้ตอบกับเซ็นเซอร์

ขั้นตอนในการติดตั้ง:

  1. เปิด Arduino IDE
  2. ไป ร่าง > รวมห้องสมุด > จัดการห้องสมุด.
  3. ค้นหา "Adafruit VL53L0X" แล้วคลิก ติดตั้ง.

ขั้นตอนที่ 4: อัปโหลดรหัส

นี่คือตัวอย่างตัวอย่างในการอ่านการวัดระยะทางจาก VL53L0X:

#include <Wire.h>
#include <Adafruit_VL53L0X.h>

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    delay(1); // Wait for Serial Monitor to open
  }

  Serial.println("Adafruit VL53L0X Test");

  if (!lox.begin()) {
    Serial.println("Failed to find VL53L0X sensor! Check wiring.");
    while (1);
  }

  Serial.println("VL53L0X sensor initialized.");
}

void loop() {
  VL53L0X_RangingMeasurementData_t measure;

  lox.rangingTest(&measure, false); // Perform a ranging test

  if (measure.RangeStatus != 4) { // Check if valid
    Serial.print("Distance (mm): ");
    Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println("Out of range");
  }

  delay(100); // Wait before the next measurement
}

ขั้นตอนที่ 5: ทดสอบการตั้งค่า

  1. เชื่อมต่อ Arduino กับคอมพิวเตอร์ของคุณผ่าน USB
  2. เปิด Arduino IDE และเลือกที่ถูกต้อง กระดาน และ ท่าเรือ ภายใต้ เครื่องมือ เมนู.
  3. อัปโหลดรหัสไปยัง Arduino โดยคลิก อัพโหลด.
  4. เปิดมอนิเตอร์อนุกรม (เครื่องมือ > จอภาพอนุกรม) และตั้งค่าอัตราการรับส่งข้อมูลเป็น 9600.
  5. ชี้เซ็นเซอร์ VL53L0X ที่วัตถุ ระยะทางในมิลลิเมตรควรปรากฏในจอภาพอนุกรม

ตัวเลือก: การใช้เซ็นเซอร์ VL53L0X หลายตัว

ในการใช้เซ็นเซอร์ VL53L0X หลายตัวบนบัส I2C เดียวกันคุณต้องเปลี่ยนที่อยู่ I2C ของพวกเขาโดยใช้ไฟล์ XSHUT เข็มหมุด:

  1. ดึง XSHUT พินของเซ็นเซอร์หนึ่งตัวต่ำเพื่อปิดการใช้งาน
  2. เริ่มต้นเซ็นเซอร์ที่ใช้งานอยู่และเปลี่ยนที่อยู่ I2C
  3. ทำซ้ำสำหรับเซ็นเซอร์เพิ่มเติม

รหัสตัวอย่างสำหรับการเปลี่ยนที่อยู่ I2C:

lox.setAddress(0x31); // Set a new I2C address (default is 0x29)

แอปพลิเคชันของ VL53L0X

  1. การตรวจจับอุปสรรคสำหรับหุ่นยนต์
  2. เซ็นเซอร์ความใกล้ชิดสำหรับอุปกรณ์สมาร์ท
  3. การควบคุมแสงอัตโนมัติ
  4. ระบบการลงจอดโดรน

การแก้ไขปัญหา

  • ไม่มีการตอบสนองจากเซ็นเซอร์: ตรวจสอบสายไฟอีกครั้งและตรวจสอบให้แน่ใจว่าเซ็นเซอร์ใช้พลังงาน
  • นอกช่วงการอ่าน: ตรวจสอบให้แน่ใจว่าวัตถุเป้าหมายอยู่ในช่วงที่มีประสิทธิภาพของเซ็นเซอร์ (สูงสุด 2 เมตร)
  • เซ็นเซอร์หลายตัวรบกวน: ใช้ XSHUT PIN เพื่อกำหนดที่อยู่ I2C ที่ไม่ซ้ำกัน

บทสรุป

คุณได้ตั้งค่าเซ็นเซอร์ระยะทางระยะเวลา VL53L0X ของ VL53L0X สำเร็จด้วย Arduino ขนาดที่แม่นยำและขนาดกะทัดรัดทำให้เป็นเครื่องมือที่หลากหลายสำหรับโครงการต่าง ๆ ทดลองกับแอพพลิเคชั่นที่แตกต่างกันเช่นหุ่นยนต์หรือระบบสมาร์ทโฮมเพื่อใช้ประโยชน์จากเซ็นเซอร์ที่ทรงพลังที่สุด!

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.