- VL6180X Time-of-Flight (ToF) Range Finder Sensor
- แผนภูมิวงจรรวม
- การเพิ่มไลบรารีที่จำเป็นสำหรับ VL6180 ToF Sensor
- คำอธิบายการเขียนโปรแกรมและการทำงาน
TOF หรือ Time of flight เป็นวิธีที่ใช้กันทั่วไปในการวัดระยะของวัตถุที่อยู่ห่างไกลโดยเซ็นเซอร์วัดระยะต่างๆเช่นเซ็นเซอร์อัลตราโซนิก การวัดเวลาที่อนุภาคคลื่นหรือวัตถุเดินทางเป็นระยะทางผ่านสื่อเรียกว่า Time-of-flight (TOF) จากนั้นสามารถใช้การวัดนี้เพื่อคำนวณความเร็วหรือความยาวเส้นทาง นอกจากนี้ยังสามารถใช้เพื่อเรียนรู้เกี่ยวกับอนุภาคหรือคุณสมบัติของตัวกลางเช่นองค์ประกอบหรืออัตราการไหล สามารถตรวจจับวัตถุเดินทางได้โดยตรงหรือโดยอ้อม
อุปกรณ์วัดระยะทางอัลตราโซนิกเป็นหนึ่งในอุปกรณ์ที่เก่าแก่ที่สุดโดยใช้หลักการของเวลาบิน อุปกรณ์เหล่านี้จะปล่อยพัลส์อัลตร้าโซนิคและวัดระยะทางไปยังวัสดุที่เป็นของแข็งตามเวลาที่คลื่นจะตีกลับไปที่ตัวปล่อย เราใช้เซ็นเซอร์อัลตราโซนิกในหลาย ๆ แอปพลิเคชันของเราเพื่อ วัดระยะทาง:
- การวัดระยะทางโดยใช้เซ็นเซอร์ Arduino และอัลตราโซนิก
- วัดระยะทางโดยใช้ Raspberry Pi และ HCSR04 Ultrasonic Sensor
- วิธีการวัดระยะห่างระหว่างเซนเซอร์อัลตราโซนิกสองตัว
เวลาของวิธีการบินยังสามารถใช้เพื่อประมาณความคล่องตัวของอิเล็กตรอน จริงๆแล้วมันถูกออกแบบมาสำหรับการวัดฟิล์มบางที่เป็นสื่อกระแสไฟฟ้าต่ำหลังจากนั้นมันก็ถูกปรับให้เหมาะกับเซมิคอนดักเตอร์ทั่วไป เทคนิคนี้ใช้สำหรับทรานซิสเตอร์สนามผลอินทรีย์รวมทั้งโครงสร้างโลหะ - อิเล็กทริก - โลหะ โดยการใช้เลเซอร์หรือพัลส์แรงดันไฟฟ้าจะเกิดประจุส่วนเกิน
หลักการ TOF ถูกนำมาใช้สำหรับการวัดระยะห่างระหว่างเซ็นเซอร์และวัตถุ เวลาที่สัญญาณส่งกลับไปยังเซ็นเซอร์หลังจากสะท้อนจากวัตถุจะถูกวัดและใช้ในการคำนวณระยะทาง สัญญาณประเภทต่างๆ (พาหะ) เช่นเสียงแสงสามารถใช้ได้ด้วยหลักการ TOF เมื่อใช้ TOF สำหรับการค้นหาระยะจะมีพลังมากเมื่อเปล่งแสงมากกว่าเสียง เมื่อเทียบกับอัลตราซาวนด์จะให้การอ่านที่เร็วขึ้นความแม่นยำที่สูงขึ้นและช่วงที่กว้างขึ้นยังคงรักษาน้ำหนักที่ต่ำขนาดเล็กและลักษณะการใช้พลังงานต่ำ
ที่นี่ในการกวดวิชานี้เราจะใช้ Finder เซนเซอร์ VL6180X TOF ช่วงกับ Arduino ในการคำนวณระยะห่างระหว่างเซ็นเซอร์และวัตถุ เซ็นเซอร์นี้ยังบอกค่าความเข้มของแสงใน LUX
VL6180X Time-of-Flight (ToF) Range Finder Sensor
VL6180 แตกต่างจากเซ็นเซอร์วัดระยะอื่น ๆ เนื่องจากใช้นาฬิกาที่แม่นยำในการวัดเวลาที่แสงสะท้อนกลับจากพื้นผิวใด ๆ สิ่งนี้ทำให้ VL6180 มีประโยชน์เหนือเซ็นเซอร์อื่น ๆ เนื่องจากมีความแม่นยำและป้องกันเสียงรบกวนมากกว่า
VL6180 เป็นแพคเกจแบบ 3-in-1 ที่ มีอีซีแอล IR, เซ็นเซอร์แสงโดยรอบและเซ็นเซอร์ช่วง มันสื่อสารผ่านอินเทอร์เฟซI 2 C มีออนบอร์ด 2.8V regulator ดังนั้นแม้ว่าเราจะเสียบแรงดันไฟฟ้าที่มากกว่า 2.8V มันจะถูกเลื่อนลงโดยอัตโนมัติโดยไม่ทำให้บอร์ดเสียหาย มัน มีขนาดช่วงของขึ้นถึง 25 ซม. มี GPIO ที่ตั้งโปรแกรมได้สองตัว
แผนภูมิวงจรรวม
ที่นี่ Nokia 5110 LCD ใช้เพื่อแสดงระดับแสงและระยะทาง Nokia 5110 LCD ทำงานที่ 3.3V ดังนั้นจึงไม่สามารถเชื่อมต่อกับหมุดดิจิตอล Arduino Nano ได้โดยตรง ดังนั้นให้เพิ่มตัวต้านทาน 10k ในอนุกรมพร้อมกับสัญญาณข้อมูลเพื่อป้องกันสาย 3.3V จากหมุดดิจิตอล 5V เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ Nokia 5110 LCD กับ Arduino
VL6180 เซนเซอร์ สามารถเชื่อมต่อโดยตรงกับ Arduino การสื่อสารระหว่าง VL6180 และ Arduino คือ I2C โปรโตคอลการสื่อสาร I2C ที่จริงรวมคุณสมบัติที่ดีที่สุดของ SPI และ UART ที่นี่เราสามารถเชื่อมต่อทาสหลายตัวเข้ากับมาสเตอร์ตัวเดียวและเราสามารถมีมาสเตอร์หลายตัวควบคุมทาสเดี่ยวหรือหลายตัว เช่นเดียวกับการสื่อสาร UART I2C ใช้สายไฟสองเส้นสำหรับการสื่อสาร SDA (Serial Data) และ SCL (Serial Clock) คือสายข้อมูลและสายนาฬิกา
แผนภาพวงจรสำหรับ เชื่อมต่อ VL6180 ToF Range Finder Sensor กับ Arduino แสดงไว้ด้านล่าง:
- เชื่อมต่อ RST Pin ของ LCD เข้ากับขา 6 ของ Arduino ผ่านตัวต้านทาน 10K
- เชื่อมต่อ CE Pin ของ LCD เข้ากับขา 7 ของ Arduino ผ่านตัวต้านทาน 10K
- เชื่อมต่อ DC Pin ของ LCD เข้ากับขา 5 ของ Arduino ผ่านตัวต้านทาน 10K
- เชื่อมต่อ DIN Pin ของ LCD เข้ากับพิน 4 ของ Arduino ผ่านตัวต้านทาน 10K
- เชื่อมต่อ CLK Pin ของ LCD เข้ากับขา 3 ของ Arduino ผ่านตัวต้านทาน 10K
- เชื่อมต่อ VCC Pin ของ LCD เข้ากับขา 3.3V ของ Arduino
- เชื่อมต่อ GND Pin ของ LCD เข้ากับ GND ของ Arduino
- เชื่อมต่อขา SCL ของ VL6180 กับขา A5 ของ Arduino
- เชื่อมต่อขา SDA ของ VL6180 กับพิน A4 ของ Arduino
- เชื่อมต่อขา VCC ของ VL6180 กับขา 5V ของ Arduino
- เชื่อมต่อพิน GND ของ VL6180 กับพิน GND ของ Arduino
การเพิ่มไลบรารีที่จำเป็นสำหรับ VL6180 ToF Sensor
สามไลบรารีจะใช้ในการเชื่อมต่อเซ็นเซอร์ VL6180 กับ Arduino
1. Adafruit_PCD8544
Adafruit_PCD8544 เป็นไลบรารีสำหรับจอแสดงผล LCD Monochrome Nokia 5110 จอแสดงผลเหล่านี้ใช้ SPI สำหรับการสื่อสาร ต้องใช้หมุดสี่หรือห้าขาในการเชื่อมต่อ LCD นี้ ลิงค์สำหรับดาวน์โหลดไลบรารีนี้มีให้ด้านล่าง:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
ไลบรารี Adafruit_GFX สำหรับ Arduino เป็นไลบรารีกราฟิกหลักสำหรับจอแสดงผล LCD ซึ่งมีไวยากรณ์ทั่วไปและชุดของกราฟิกพื้นฐาน (จุดเส้นวงกลม ฯลฯ) จำเป็นต้องจับคู่กับไลบรารีเฉพาะฮาร์ดแวร์สำหรับอุปกรณ์แสดงผลแต่ละเครื่องที่เราใช้ (เพื่อจัดการฟังก์ชันระดับล่าง) ลิงค์สำหรับดาวน์โหลดไลบรารีนี้มีให้ด้านล่าง:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 เป็นไลบรารี Arduino ที่มีฟังก์ชันพื้นฐานของเซ็นเซอร์ VL6180 VL6180 ประกอบด้วยตัวส่งสัญญาณ IR เซ็นเซอร์ช่วงและเซ็นเซอร์วัดแสงโดยรอบซึ่งสื่อสารผ่านอินเทอร์เฟซ I2C ไลบรารีนี้ช่วยให้คุณอ่านระยะทางและแสงที่ส่งออกจากเซ็นเซอร์และส่งออกข้อมูลผ่านการเชื่อมต่อแบบอนุกรม ลิงค์สำหรับดาวน์โหลดไลบรารีนี้มีให้ด้านล่าง:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
เพิ่มไลบรารีทั้งหมดทีละรายการโดยไปที่ Sketch >> รวมไลบรารี >> เพิ่มไลบรารี. ZIP ใน Arduino IDE จากนั้นอัปโหลดไลบรารีที่คุณดาวน์โหลดจากลิงก์ด้านบน
บางครั้งคุณไม่จำเป็นต้องเพิ่มไลบรารีลวดและ SPI แต่หากคุณได้รับข้อผิดพลาดโปรดดาวน์โหลดและเพิ่มลงใน Arduino IDE ของคุณ
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
คำอธิบายการเขียนโปรแกรมและการทำงาน
โค้ดที่สมบูรณ์พร้อมวิดีโอที่ใช้งานได้ จะได้รับในตอนท้ายของบทช่วยสอนนี้เรากำลังอธิบายโปรแกรมทั้งหมดเพื่อทำความเข้าใจการทำงานของโครงการ
ในโปรแกรมนี้ชิ้นส่วนส่วนใหญ่จัดการโดยไลบรารีที่เราเพิ่มเข้ามาดังนั้นคุณไม่จำเป็นต้องกังวลเกี่ยวกับเรื่องนี้
ใน ส่วน การตั้งค่า s กำหนดอัตราการส่งข้อมูลเป็น 115200 และเริ่มต้นไลบรารี Wire สำหรับ I2C จากนั้นตรวจสอบว่าเซ็นเซอร์ VL6180 ทำงานอย่างถูกต้องหรือไม่หากไม่ทำงานแสดงข้อความแสดงข้อผิดพลาด
ในส่วนต่อไปนี้เรากำลังตั้งค่าการแสดงผลคุณสามารถเปลี่ยนความคมชัดเป็นค่าที่คุณต้องการได้ที่นี่ฉันตั้งค่าเป็น 50
การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); // เริ่ม Serial ที่ 115200bps Wire.begin (); // เริ่มการ หน่วงเวลา ไลบรารี I2C (100); // ล่าช้า. ถ้า (sensor.VL6180xInit ()! = 0) { Serial.println ("FAILED TO INITALIZE"); // เริ่มต้นอุปกรณ์และตรวจสอบข้อผิดพลาด }; เซ็นเซอร์. VL6180xDefautSettings (); // โหลดการตั้งค่าเริ่มต้นเพื่อเริ่มต้น ล่าช้า (1,000); // หน่วงเวลา 1s display.begin (); // init done // คุณสามารถเปลี่ยนความคมชัดรอบ ๆ เพื่อปรับการแสดงผล // เพื่อการรับชมที่ดีที่สุด! display.setContrast (50); display.display (); // แสดง splashscreen display.clearDisplay (); }
ใน วงเป็นโมฆะ ส่วน การตั้งค่าคำแนะนำในการแสดงค่าบนหน้าจอ LCD ที่นี่เรากำลังแสดงค่าสองค่าค่าหนึ่งคือ "ระดับแสงโดยรอบเป็น Lux" (หนึ่งลักซ์คือหนึ่งลูเมนต่อพื้นที่ตารางเมตร) และค่าที่สองคือ "ระยะทางวัดเป็นมม. ในการแสดงค่าที่แตกต่างกันบนหน้าจอ LCD ให้กำหนดตำแหน่งของแต่ละข้อความที่ควรแสดงบนหน้าจอ LCD โดยใช้ "display.setCursor (0,0);"
โมฆะ loop () { display.clearDisplay (); // รับระดับแสงโดยรอบและรายงานใน LUX Serial.print ("Ambient Light Level (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (สีดำ); display.setCursor (0,0); display.println ("ระดับแสง"); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // รับ Distance และรายงานในหน่วย mm Serial.print ("ระยะทางที่วัดได้ (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (สีดำ); display.setCursor (0, 24); display.println ("ระยะทาง (มม.) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); ล่าช้า (500); }
หลังจากอัปโหลดโปรแกรมแล้วให้เปิดมอนิเตอร์แบบอนุกรมและควรแสดงผลลัพธ์ดังที่แสดงด้านล่าง
เครื่องมือค้นหาช่วง VL6180 TOF ใช้ในสมาร์ทโฟนอุปกรณ์หน้าจอสัมผัสแบบพกพาแท็บเล็ตแล็ปท็อปอุปกรณ์เล่นเกมและเครื่องใช้ในบ้าน / อุปกรณ์อุตสาหกรรม
เรากำลังแสดง ระดับแสงโดยรอบเป็น Lux และระยะทางเป็นมม.
ค้นหา โปรแกรมที่สมบูรณ์และวิดีโอสาธิต ด้านล่าง ตรวจสอบวิธีการวัดระยะทางโดยใช้เซ็นเซอร์อัลตราโซนิกและระดับแสงโดยใช้ BH1750 Ambient Light Sensor