Hướng dẫn đo khoảng cách bằng LiDAR Sensor TFMini-S với Arduino
Hướng dẫn này sẽ giúp bạn làm quen cách sử dụng cảm biến LiDAR TFMini-S để đo khoảng cách với Arduino. LiDAR Sensor là một cảm biến được thiết kế nhỏ gọn, giá thành thấp được sử dụng phổ biến trong các dự án đòi hỏi có tính chính xác cao.
Thông qua bài viết, bạn sẽ được hướng dẫn cách kết nối cảm biến với Arduino, cấu hình và lập trình để đọc dữ liệu từ cảm biến và hiển thị khoảng cách được đo lên màn hình.
Linh kiện cần thiết cho dự án
TÊN LINH KIỆN | SỐ LƯỢNG | NƠI BÁN |
Arduino Uno R3 | 1 | Shopee | Cytron |
Cảm biến LiDAR TFMini-S | 1 | Shopee | Cytron |
Dây cắm | 10-20 | Shopee | Cytron |
Breadboard | 1 | Shopee | Cytron |
Nguyên lý hoạt động của cảm biến LiDAR TFMini-S
LiDAR Sensor là viết tắt của cụm từ “Light Detection And Ranging”, có nghĩa là “Phát hiện và Đo khoảng cách bằng Ánh sáng”. LiDAR tương tự như RADAR, nhưng thay vì sử dụng sóng radio, nó sử dụng ánh sáng.
Cơ bản, LiDAR hoạt động bằng cách bắn một tia laser vào một đối tượng. Tia laser phản xạ từ đối tượng và quay trở lại cảm biến. Bằng cách đo thời gian mà ánh sáng mất để quay trở lại cảm biến, ta có thể ước tính khoảng cách đến đối tượng. Khoảng cách này có thể thay đổi tùy thuộc vào môi trường và khả năng phản xạ của đối tượng.
Bằng cách quét hoặc quay một cảm biến LiDAR, ta có thể nhanh chóng xây dựng một bản đồ 3D của khu vực. Thông thường, điều này được trình bày dưới dạng “đám mây điểm” để hiểu rõ hơn về những gì LiDAR đang thu thập.
Tổng quan về LiDAR Sensor TFMini-S
LiDAR Sensor là một cảm biến LiDAR ToF (Time of Flight) đơn điểm có độ chính xác cao, được sản xuất bởi công ty Benewake (Beijing) Co. Ltd. Nên rất thích hợp để đo khoảng cách trên dự án cần độ chính xác cao.
Với kích thước nhỏ gọn như một cái USB, TFMini-S cho phép bạn tích hợp LiDAR Sensor vào các dự án mà trước đây chỉ dành cho các cảm biến nhỏ hơn như cảm biến đo khoảng cách hồng ngoại.
LiDAR Arduino có khả năng đo khoảng cách đến vật cản từ 10cm đến 12m.
Ngoài giá thành thấp, kích thước nhỏ và khoảng cách đo xa, TFMini-S còn có độ chính xác đo khoảng cách cao hơn trong khoảng từ 6 mét và sai số ±1% ở khoảng cách lớn hơn.
Phạm vi hoạt động hiệu quả của Sensor LiDAR TFMini-S
Tương tự như các cảm biến LiDAR khác, phạm vi phát hiện vật cản hiệu quả của TFMini-S phụ thuộc vào điều kiện ánh sáng, thời tiết và độ phản xạ của đối tượng mục tiêu.
Đồ thị dưới đây mô tả phạm vi hoạt động của TFMini-S trong các điều kiện khác nhau.
- 0-10cm là vùng mù của LiDAR Sensor, trong phạm vi này, dữ liệu không thực sự chính xác.
- Dưới điều kiện cực đoan, phạm vi hoạt động của TFMini-S là 0.1-3m. Điều kiện cực đoan bao gồm ánh sáng mạnh (với cường độ chiếu sáng khoảng 100klux ngoài trời vào buổi trưa hè) và phát hiện đối tượng màu đen (với độ phản xạ là 10%).
- Dưới điều kiện ánh sáng mặt trời bình thường (cường độ chiếu sáng khoảng 70klux), phạm vi hoạt động của TFMini-S là 0.1-7m.
- Môi trường trong nhà hoặc với ánh sáng môi trường thấp, phạm vi hoạt động của LiDAR Arduino là 0.1-12m.
Giao tiếp truyền thông
Theo mặc định TFMini-S giao tiếp qua UART, với các chân RX và TX UART thông thường hoạt động ở tốc độ 115200bps.
Bạn cũng có thể cấu hình cảm biến để giao tiếp qua I2C bằng cách gửi các lệnh tương ứng.
Tần suất đo
Theo tài liệu kỹ thuật, TFMini-S có thể thực hiện lên đến 1000 đo trong một giây (mặc định là 100 lần đo/ giây). Tần số này có thể thay đổi bằng cách gửi các lệnh tương ứng.
Lưu ý rằng việc tăng tần số đầu ra sẽ làm giảm độ chính xác. Do đó, tùy thuộc vào mức độ chính xác mà bạn muốn, bạn nên điều chỉnh tần số đầu ra cho phù hợp.
Nguồn cấp
Cảm biến LiDAR hoạt động với điện áp 5V và tiêu thụ khoảng 140 mA trong quá trình thu thập dữ liệu. Dòng tối đa mà nó có thể tiêu thụ là khoảng 200 mA.
Tuy nhiên, trong quá trình thử nghiệm, cảm biến chỉ tiêu thụ khoảng 70mA khi hoạt động một mình. Vì vậy, nếu bạn sử dụng Arduino 5V dự kiến bạn sẽ tiêu thụ khoảng 100mA. Do đó, cho các dự án đơn giản, cảm biến có thể được cung cấp nguồn từ cổng USB (5V/500mA) mà không gặp vấn đề.
Lưu ý: rằng cảm biến LiDAR không có bảo vệ quá áp, vì vậy hãy giữ dao động điện áp nguồn trong phạm vi 0.1V.
Mức logic
LiDAR Sensor TFMini-S sử dụng mức logic 3.3V cho các chân I/O của nó. Điều này có nghĩa là tín hiệu logic HIGH ở mức điện áp 3.3V và tín hiệu logic LOW điện áp thấp hơn 0.8V.
Khi sử dụng cảm biến với một vi điều khiển hoặc linh kiện khác có mức điện áp logic 5V, cần sử dụng một bộ chuyển mức logic để đảm bảo tương thích giữa hai mức điện áp khác nhau.
Thông số kỹ thuật
Detection range | 10cm – 12m |
Resolution | 1cm |
Ranging Accuracy | ±6cm up to 6m and ±1% thereafter |
Input Voltage | 5V |
UART TTL Voltage | 3.3V |
Current Consumption | 140mA (typ.), 800mA (peak) |
Detection Frequency | 1 to 1000 scans per second (adjustable) |
Light Wavelength | 850nm |
Field of view | 2.3° |
Communication interfaces | UART and I2C |
Baud Rate | 115200 |
Sơ đồ chân của cảm biến LiDAR TFMini-S
- GND: là chân kết nối đất (Ground).
- VCC: Kết nối với nguồn cấp 5V.
- RXD/SDA: là chân mà bạn có thể sử dụng để gửi dữ liệu tới cảm biến (khi giao tiếp qua UART) hoặc gửi/nhận dữ liệu (khi giao tiếp qua I2C). Đây là mức logic 3.3V.
- TXD/SCL: là chân mà cảm biến truyền dữ liệu tới vi điều khiển của bạn (khi giao tiếp qua UART) hoặc hoạt động như một tín hiệu xung (clock) (khi giao tiếp qua I2C). Lưu ý rằng đây cũng là mức logic 3.3V.
Sơ đồ đấu nối cảm biến LiDAR TFMini-S với Arduino
Arduino | Cảm biến đo khảng cách LiDAR |
5V | Dây màu đỏ |
GND | Dây màu đen |
2 | Dây màu xanh lá |
3 | Dây màu trắng |
Code cảm biến LiDAR
#include <SoftwareSerial.h> //header file of software serial port SoftwareSerial Serial1(2, 3); //define software serial port name as Serial1 and define pin2 as RX & pin3 as TX int dist; //actual distance measurements of LiDAR int strength; //signal strength of LiDAR int check; //save check value int i; int uart[9]; //save data measured by LiDAR const int HEADER = 0x59; //frame header of data package void setup() { Serial.begin(9600); //set bit rate of serial port connecting Arduino with computer Serial1.begin(115200); //set bit rate of serial port connecting LiDAR with Arduino } void loop() { if (Serial1.available()) //check if serial port has data input { if (Serial1.read() == HEADER) //assess data package frame header 0x59 { uart[0] = HEADER; if (Serial1.read() == HEADER) //assess data package frame header 0x59 { uart[1] = HEADER; for (i = 2; i < 9; i++) //save data in array { uart[i] = Serial1.read(); } check = uart[0] + uart[1] + uart[2] + uart[3] + uart[4] + uart[5] + uart[6] + uart[7]; if (uart[8] == (check & 0xff)) //verify the received data as per protocol { dist = uart[2] + uart[3] * 256; //calculate distance value strength = uart[4] + uart[5] * 256; //calculate signal strength value Serial.print("distance = "); Serial.print(dist); //output measure distance value of LiDAR Serial.print('\t'); Serial.print("strength = "); Serial.print(strength); //output signal strength value Serial.print('\n'); } } } } }
Phần mềm TFMini
Phần mềm TFMini là một công cụ dùng để kiểm tra cảm biến LiDAR. Đây là một phần mềm miễn phí, nhưng chỉ có thể sử dụng trên nền tảng Windows.
Bạn có thể tải phần mềm này từ trang web chính thức của Benewake.
Kết nối LiDAR Sensor với phần mềm
Để sử dụng phần mềm TFMini, kết nối cảm biến TFMini-S với máy tính bằng cách sử dụng một mạch chuyển đổi USB sang TTL CP2102. Chỉ cần đảm bảo rằng bạn cung cấp 5V cho chân VCC.
Hướng dẫn sử dụng phần mềm TFMini
Các bạn tải về và giải nén vào một thư mục tuỳ chọn. Chạy tệp WINCC_TF.exe. Phần mềm sẽ khởi động như hình dưới đây.
Phần Cài đặt chọn loại cảm biến cần kiểm tra là TFMiniS. Tiếp theo, chọn cổng COM và nhấn nút Kết nối.
Sau khi thiết bị được kết nối, màn hình sẽ hiển thị biểu đồ đo khoảng cách. Bên dưới, phần “Real Time Data” hiển thị khoảng cách hiện tại (Dist), số điểm dữ liệu hiệu quả mỗi giây (Effective Points) và cường độ tín hiệu (Strength).