Đo khoảng cách bằng Module Laser VL53L0X 6 chân cho Arduino
Trong hướng dẫn này, chúng ta sẽ học cách đo khoảng cách bằng cảm biến khoảng cách laser VL53L0X với mô-đun 6 chân. Cảm biến nhỏ nhưng mạnh mẽ này sử dụng công nghệ thời gian bay để cung cấp các phép đo khoảng cách chính xác lên đến 200 cm. Bằng cách làm theo hướng dẫn này, bạn sẽ có thể thiết lập cảm biến với Arduino và đọc giá trị khoảng cách trực tiếp từ màn hình nối tiếp của mình.

Đối với dự án này, chúng ta sẽ sử dụng cảm biến VL53L0X, loại cảm biến nhỏ gọn và dễ dàng tích hợp vào nhiều ứng dụng khác nhau. Cảm biến giao tiếp qua I2C, giúp việc kết nối với bo mạch Arduino trở nên đơn giản. Trong video, bạn sẽ tìm thấy các giải thích bổ sung và trình diễn về quy trình thiết lập (trong video tại 04:00).
Phần cứng được giải thích
VL53L0X là cảm biến khoảng cách thời gian bay, phát ra chùm tia laser và đo thời gian để ánh sáng quay trở lại sau khi chạm vào vật thể. Điều này cho phép nó tính toán khoảng cách đến vật thể một cách chính xác. Cảm biến hoạt động ở điện áp từ 2,6 V đến 3,5 V, nhưng có thể được cấp nguồn 5 V nhờ bộ điều chỉnh điện áp bên trong.
Mô-đun có sáu chân: VCC, GND, SDA (đường dữ liệu), SCL (đường xung nhịp), GPIO1 (I/O đa năng) và XSHUT (chân tắt nguồn). Chân GPIO1 không được sử dụng trong cấu hình này nhưng có thể để hở. Chân XSHUT cho phép bạn tắt cảm biến để tiết kiệm năng lượng khi không sử dụng.
Chi tiết bảng dữ liệu
| Nhà sản xuất | STMicroelectronics |
|---|---|
| Số bộ phận | VL53L0X |
| Điện áp logic/IO | 2,6 V đến 3,5 V (5 V với bộ điều chỉnh) |
| Nhiệt độ hoạt động | -20 °C đến 70 °C |
| Phạm vi đo | 30 mm đến 2000 mm |
| Tần số giao tiếp I2C | 400 kHz |
| Kích thước | 4,4 mm x 2,4 mm x 1 mm |
- Đảm bảo nguồn điện phù hợp (khuyến nghị 5 V).
- Kết nối SDA và SCL với các chân I2C thích hợp trên Arduino.
- Sử dụng điện trở kéo lên trên các đường I2C nếu cần.
- Không để GPIO1 kết nối; có thể để nó nổi.
- Giữ chân XSHUT ở mức cao trong quá trình hoạt động.
- Đo khoảng cách trong môi trường đủ ánh sáng để có độ chính xác tốt hơn.
- Hiệu chỉnh cảm biến để có phép đo chính xác.
- Kiểm tra phạm vi cảm biến bằng cách đặt vật thể ở các khoảng cách khác nhau.
- Theo dõi đầu ra nối tiếp để đọc khoảng cách và thông báo hết thời gian.
Hướng dẫn nối dây

Để nối cảm biến VL53L0X với Arduino của bạn, hãy bắt đầu bằng cách kết nối chân VCC của cảm biến với chân 5V trên Arduino. Tiếp theo, kết nối chân GND với GND trên Arduino. Chân SDA của cảm biến nên được kết nối với chân A4 trên Arduino (hoặc chân SDA nếu bo mạch của bạn có các chân I2C chuyên dụng). Tương tự, kết nối chân SCL của cảm biến với chân A5 (hoặc chân SCL). Để chân GPIO1 không kết nối vì nó không cần thiết cho dự án này.
Cuối cùng, kết nối chân XSHUT với chân kỹ thuật số 12 trên Arduino. Chân này sẽ được sử dụng để điều khiển trạng thái tắt nguồn của cảm biến. Đảm bảo tất cả các kết nối được chắc chắn để tránh bất kỳ vấn đề giao tiếp nào.
Ví dụ mã và hướng dẫn chi tiết
Trong mã, chúng ta bắt đầu bằng cách bao gồm các thư viện cần thiết và khởi tạo cảm biến VL53L0X. Hàm setup cấu hình cảm biến và bắt đầu các phép đo khoảng cách liên tục. Đây là một đoạn trích từ hàm setup:
void setup() {
pinMode(12, INPUT_PULLUP);
digitalWrite(12, HIGH);
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
sensor.startContinuous();
}
Trong đoạn trích này, chúng ta đặt chân 12 làm đầu vào với điện trở kéo lên và khởi tạo giao tiếp nối tiếp ở tốc độ 9600 baud. Chúng ta cũng khởi tạo cảm biến và đặt thời gian chờ cho các lần đọc, đảm bảo nó hoạt động liên tục.
Tiếp theo, chúng ta đọc khoảng cách trong hàm loop, nơi giá trị đo được in ra màn hình nối tiếp:
void loop() {
int distance = sensor.readRangeContinuousMillimeters();
Serial.print("Khoảng cách: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" HẾT THỜI GIAN"); }
Serial.println();
delay(100);
}
Mã này đọc khoảng cách tính bằng milimét và in nó ra màn hình nối tiếp. Nếu xảy ra hết thời gian, nó cho biết cảm biến không nhận được kết quả đọc hợp lệ.
Trình diễn / Điều gì sẽ xảy ra
Khi bạn chạy chương trình, bạn sẽ bắt đầu thấy các phép đo khoảng cách trên màn hình nối tiếp. Đầu ra sẽ dao động khi bạn di chuyển vật thể đến gần hoặc ra xa cảm biến. Bạn có thể nhận thấy các thông báo hết thời gian thỉnh thoảng nếu cảm biến không nhận được kết quả đọc (trong video tại 10:30). Để cải thiện độ chính xác, hãy cân nhắc lấy trung bình nhiều lần đọc.
/* This example shows how to use continuous mode to take
range measurements with the 6-pin VL53L0X module. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.
The range readings are in units of mm.
Original source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com/RJT83
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
Watch the instruction video for this code https://youtu.be/S2jaAQEv3Yo
Pin connection
VL53L0X Pin Arduino Pin
VCC 5V
GND GND
SDA A4 or SDA if available
SCL A5 or SCL if available
GPIO1 leave it unconnected
XSHUT D12 (digital 12 or pin 12)
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
pinMode(12,INPUT_PULLUP);
digitalWrite(12,HIGH);
Serial.begin(9600);
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()
{
int distance =sensor.readRangeContinuousMillimeters();
//int distance =sensor.startContinuous(100);
//distance = distance;
Serial.print("Distance: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
Nghĩ bạn có thể cần
-
eBayPurchase VL53l0x from eBayebay.us
-
AliExpressPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
BanggoodPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
Tài nguyên & tài liệu tham khảo
-
Bên ngoàiPurchase 1 to 10 pcs of VL53L0X from AliExpresss.click.aliexpress.com
-
Bên ngoàiPurchase 1 to 10 pcs of VL53L0X from Banggoodbanggood.com
-
Bên ngoàiPurchase VL53L0X from Amazonamzn.to
-
Bên ngoàiPurchase VL53l0x from eBayebay.us
Tập tin📁
Tập tin Fritzing
-
VL53L0X_Distance_sensor_Squares
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB -
Adafruit VL6180X Time of Flight Distance SensorFritzing part for the Adafruit VL6180X Time of Flight distance sensor. This sensor measures absolute distance up to 100mm and ambient light, communicating via I2C. Includes the sensor breakout board and pin connections for use in Fritzing projects.
Adafruit VL6180X Time of Flight Distance Sensor-1.fzpz0.02 MB
Các tập tin khác
-
Thư viện Polou VL53L0X
robojax-VL53L0X-polou-arduino-master.zip0.02 MB -
VL53L0X_Distance_sensor_purple
VL53L0X_Distance_sensor_purple.fzpz0.01 MB