Mục lục:

Benewake TFmini - LiDAR không tốn kém với Teensy 3,5: 3 bước
Benewake TFmini - LiDAR không tốn kém với Teensy 3,5: 3 bước
Anonim
Benewake TFmini - LiDAR không tốn kém với Teensy 3.5
Benewake TFmini - LiDAR không tốn kém với Teensy 3.5

Đơn vị Benewake TFmini LiDAR là một cảm biến LiDAR nhỏ, trọng lượng rất nhẹ với giá khoảng 50 đô la Canada. Tài liệu tốt, nhưng không đầy đủ. Nó cung cấp chi tiết về việc nhận dữ liệu từ cảm biến, nhưng quên đề cập đến tín hiệu cần thiết để đưa cảm biến vào chế độ mặc định để nó thực sự gửi dữ liệu. May mắn thay, đó là trong tài liệu gỡ lỗi.

Vì vậy, đây là những gì đã làm việc cho tôi và nó thực sự là một thiết bị dễ sử dụng.

Tôi đã chọn sử dụng Teensy 3.5 vì nó có nhiều cổng HW Serial, nó đủ nhanh để nhận dữ liệu và xử lý mà không để dữ liệu chồng chất. Để giải trí, tôi đã sử dụng thư viện Teensy Threading để tách việc lấy dữ liệu khỏi phần còn lại của mã.

Bước 1: Kết nối TFmini với Teensy 3.5 (tương tự cho Arduino Mega)

Kết nối TFmini với Teensy 3.5 (tương tự cho Arduino Mega)
Kết nối TFmini với Teensy 3.5 (tương tự cho Arduino Mega)

Ví dụ này yêu cầu hai kết nối nối tiếp: một với TFmini và một để hiển thị kết quả trên máy tính của bạn. Vì lý do này, và theo như tôi có thể nói, chỉ vì lý do này, ví dụ cụ thể này sẽ không hoạt động trên bất kỳ thứ gì bên dưới Arduino Mega hoặc Teensy 3.x.

Điều đó đang được nói, đối với các ứng dụng không yêu cầu đầu ra nối tiếp để in ra màn hình máy tính, cùng một dự án nên có thể thích ứng được.

Sử dụng dây nịt bao gồm:

1) kết nối dây đen với Teensy GND (nếu sử dụng nguồn VDC khác nhau, đảm bảo nối đất cũng đi đến GND trên Teensy)

2) kết nối dây màu đỏ với Teensy Vin (hoặc nguồn 5VDC)

3) kết nối dây trắng (TFmini RX) với chân 1 trên Teensy (Serial1 TX)

4) kết nối dây màu xanh lá cây (TFmini TX) với chân 0 trên Teensy (Serial RX)

Dây nịt đi kèm quá nhỏ để tôi làm việc với bảng mạch bánh mì, vì vậy tôi đã cắt đầu đối diện với TFmini và hàn dây vào bảng mạch bánh mì, thêm đầu nối JST vào bảng ngắt và tạo JST cho cầu nhảy nam dây nịt.

Bước 2: Mã để chạy nó

Sử dụng mã sau (cho Teensy 3.5) hoặc tải xuống tệp đính kèm:

Đối với Arduino Mega, khả năng phân luồng sẽ không hoạt động. Di chuyển mã từ hàm readLiDAR sang vòng lặp chính và xóa bất kỳ thứ gì liên quan đến luồng.

#include #include "TeensyThreads.h"

// Sử dụng cáp đi kèm:

// - Black = GND (kết nối với GND) // - Red = 5V (4.5 - 6.0V) (kết nối với Vin trên Teensy 3.5 hoặc 5V trên Arduino) // - White = TFmini RX (hay còn gọi là kết nối với vi điều khiển TX, pin1 trên Teensy 3.5) // - Green = TFmini TX (còn gọi là. kết nối với vi điều khiển RX, pin0 trên Teensy 3.5) // LƯU Ý: đối với bản phác thảo này, bạn cần một bộ vi điều khiển với các cổng nối tiếp bổ sung ngoài cổng kết nối với cáp USB / / Điều này bao gồm Arduino MEGA (sử dụng Serial1), Teensy (3.x) (sử dụng một trong các kết nối HW Serial có sẵn)

dễ bay hơi int liDARval = 0;

void readLiDAR () {

// Định dạng dữ liệu cho Benewake TFmini // =============================== // Tổng số 9 byte cho mỗi tin nhắn: // 1) 0x59 // 2) 0x59 // 3) Dist_L (8bit thấp) // 4) Dist_H (8bit cao) // 5) Strength_L (8bit thấp) // 6) Strength_H (8bit cao) // 7) Các byte dành riêng // 8) Mức chất lượng tín hiệu gốc // 9) Bit chẵn lẻ Checksum (8bit thấp), Checksum = Byte1 + Byte2 +… + Byte8. Đây chỉ là 8 bit thấp mặc dù while (1) {// Tiếp tục hoạt động mãi mãi trong khi (Serial1.available ()> = 9) // Khi có ít nhất 9 byte dữ liệu (số byte dự kiến cho 1 tín hiệu), thì read {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // byte 1 và byte 2 {unsigned int t1 = Serial1.read (); // byte 3 = Dist_L unsigned int t2 = Serial1.read (); // byte 4 = Dist_H t2 << = 8; t2 + = t1; liDARval = t2; t1 = Serial1.read (); // byte 5 = Strength_L t2 = Serial1.read (); // byte 6 = Strength_H t2 << = 8; t2 + = t1; for (int i = 0; i <3; i ++) Serial1.read (); // byte 7, 8, 9 bị bỏ qua}}}}

void setup ()

{Serial1.begin (115200); // HW Serial cho TFmini Serial.begin (115200); // Đầu ra nối tiếp qua USB đến máy tính delay (100); // Cho một chút thời gian để mọi thứ bắt đầu // Đặt ở chế độ Đầu ra chuẩn Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Thiết lập luồng để đọc đầu vào nối tiếp từ TFmini thread.addThread (readLiDAR); }

void loop ()

{trì hoãn (10); // Không muốn đọc quá thường xuyên như các mẫu TFmini ở 100Hz Serial.println (liDARval); }

Bước 3: Sử dụng Arduino IDE Xem kết quả trong Máy vẽ nối tiếp

Sử dụng Arduino IDE Xem kết quả trong Máy vẽ nối tiếp
Sử dụng Arduino IDE Xem kết quả trong Máy vẽ nối tiếp

Bạn có thể sử dụng bất kỳ phương pháp nào bạn muốn, nhưng IDE của Arduino sẽ vẽ các kết quả một cách độc đáo.

Kết nối với Teensy và mở Serial Monitor. Đảm bảo Baudrate được đặt thành 115200.

Đề xuất: