สารบัญ:

Benewake TFmini - LiDAR ราคาไม่แพงพร้อม Teensy 3.5: 3 ขั้นตอน
Benewake TFmini - LiDAR ราคาไม่แพงพร้อม Teensy 3.5: 3 ขั้นตอน

วีดีโอ: Benewake TFmini - LiDAR ราคาไม่แพงพร้อม Teensy 3.5: 3 ขั้นตอน

วีดีโอ: Benewake TFmini - LiDAR ราคาไม่แพงพร้อม Teensy 3.5: 3 ขั้นตอน
วีดีโอ: TFmini LiDAR Module by Queen Hobby 2024, พฤศจิกายน
Anonim
Benewake TFmini - LiDAR ราคาไม่แพงพร้อม Teensy 3.5
Benewake TFmini - LiDAR ราคาไม่แพงพร้อม Teensy 3.5

หน่วย Benewake TFmini LiDAR เป็นเซ็นเซอร์ LiDAR ขนาดเล็กและน้ำหนักเบามากในราคาประมาณ 50 เหรียญแคนาดา เอกสารก็ดีแต่ไม่ครบ มันให้รายละเอียดเกี่ยวกับการรับข้อมูลจากเซ็นเซอร์ แต่ลืมพูดถึงสัญญาณที่จำเป็นในการทำให้เซ็นเซอร์เข้าสู่โหมดเริ่มต้นเพื่อให้ส่งข้อมูลได้จริง โชคดีที่อยู่ในเอกสารการดีบัก

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน และเป็นอุปกรณ์ที่ใช้งานง่ายจริงๆ

ฉันเลือกใช้ Teensy 3.5 เนื่องจากมีพอร์ต HW Serial หลายพอร์ต มันเร็วเกินพอที่จะรับข้อมูลและประมวลผลโดยไม่ปล่อยให้ข้อมูลกองพะเนินเทินทึก เพื่อความสนุกสนานฉันใช้ไลบรารี Teensy Threading เพื่อแยกการรับข้อมูลจากโค้ดที่เหลือ

ขั้นตอนที่ 1: เชื่อมต่อ TFmini กับ Teensy 3.5 (คล้ายกับ Arduino Mega)

เชื่อมต่อ TFmini กับ Teensy 3.5 (คล้ายกับ Arduino Mega)
เชื่อมต่อ TFmini กับ Teensy 3.5 (คล้ายกับ Arduino Mega)

ตัวอย่างนี้ต้องการการเชื่อมต่อแบบอนุกรมสองแบบ: แบบหนึ่งไปยัง TFmini และอีกแบบหนึ่งเพื่อแสดงผลลัพธ์บนคอมพิวเตอร์ของคุณ ด้วยเหตุผลนี้ และเท่าที่ฉันสามารถบอกได้ เหตุผลนี้เท่านั้น ตัวอย่างนี้ใช้ไม่ได้กับสิ่งใด ๆ ที่ต่ำกว่า Arduino Mega หรือ Teensy 3.x

ดังที่กล่าวไว้ สำหรับแอปพลิเคชันที่ไม่ต้องการเอาต์พุตแบบอนุกรมในการพิมพ์ไปยังหน้าจอคอมพิวเตอร์ โปรเจ็กต์เดียวกันควรปรับเปลี่ยนได้

ใช้สายรัดที่ให้มา:

1) เชื่อมต่อสายสีดำกับ Teensy GND (หากใช้แหล่ง VDC ต่างกัน ให้กราวด์ไปที่ GND บน Teensy ด้วย)

2) เชื่อมต่อสายสีแดงกับ Teensy Vin (หรือแหล่ง 5VDC)

3) เชื่อมต่อสายสีขาว (TFmini RX) กับพิน 1 บน Teensy (Serial1 TX)

4) เชื่อมต่อสายสีเขียว (TFmini TX) เพื่อพิน 0 บน Teensy (Serial RX)

สายรัดที่ให้มานั้นเล็กเกินไปสำหรับฉันที่จะใช้งานบนบอร์ดขนมปัง ดังนั้นฉันจึงตัดปลายด้านตรงข้าม TFmini และบัดกรีสายไฟเข้ากับเขียงหั่นขนม เพิ่มตัวเชื่อมต่อ JST เข้ากับเบรกบอร์ด และทำ JST กับจัมเปอร์ตัวผู้ สายรัด.

ขั้นตอนที่ 2: รหัสเพื่อเรียกใช้

ใช้รหัสต่อไปนี้ (สำหรับ Teensy 3.5) หรือดาวน์โหลดไฟล์แนบ:

สำหรับ Arduino Mega เธรดน่าจะใช้งานไม่ได้ ย้ายโค้ดจากฟังก์ชัน readLiDAR ไปยังลูปหลัก และลบสิ่งที่เกี่ยวข้องกับเธรด

#include #include "TeensyThreads.h"

// ใช้สายเคเบิลที่ให้มา:

// - สีดำ = GND (เชื่อมต่อกับ GND) // - สีแดง = 5V (4.5 - 6.0V) (เชื่อมต่อกับ Vin บน Teensy 3.5 หรือ 5V บน Arduino) // - สีขาว = TFmini RX (หรือที่รู้จักว่าเชื่อมต่อกับไมโครคอนโทรลเลอร์ TX, pin1 บน Teensy 3.5) // - Green = TFmini TX (หรือที่รู้จักว่าเชื่อมต่อกับไมโครคอนโทรลเลอร์ RX, pin0 บน Teensy 3.5) // หมายเหตุ: สำหรับภาพร่างนี้ คุณต้องมีไมโครคอนโทรลเลอร์ที่มีพอร์ตอนุกรมเพิ่มเติมนอกเหนือจากพอร์ตที่เชื่อมต่อกับสาย USB / / รวมถึง Arduino MEGA (ใช้ Serial1), Teensy (3.x) (ใช้การเชื่อมต่อ HW Serial ที่มีอยู่อย่างใดอย่างหนึ่ง)

liDARval int ผันผวน = 0;

เป็นโมฆะ readLiDAR (){

// รูปแบบข้อมูลสำหรับ Benewake TFmini // ============================== // 9 ไบต์ทั้งหมดต่อข้อความ: // 1) 0x59 // 2) 0x59 // 3) Dist_L (ต่ำ 8 บิต) // 4) Dist_H (สูง 8 บิต) // 5) Strength_L (ต่ำ 8 บิต) // 6) Strength_H (สูง 8 บิต) // 7) ไบต์ที่สงวนไว้ // 8) ระดับคุณภาพสัญญาณดั้งเดิม // 9) Checksum parity bit (ต่ำ 8 บิต), Checksum = Byte1 + Byte2 +…+Byte8 นี่เป็นเพียง 8 บิตที่ต่ำแม้ว่าในขณะที่(1){ // ทำต่อไปชั่วขณะ (Serial1.available()>=9) // เมื่อมีข้อมูลอย่างน้อย 9 ไบต์ (จำนวนไบต์ที่คาดไว้สำหรับ 1 สัญญาณ) ดังนั้น อ่าน { ถ้า ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // ไบต์ 1 และไบต์ 2 { unsigned int t1 = Serial1.read (); // ไบต์ 3 = Dist_L int ที่ไม่ได้ลงนาม t2 = Serial1.read (); // ไบต์ 4 = Dist_H t2 <<= 8; t2 += t1; liDARval = t2; t1 = Serial1.read(); // ไบต์ 5 = Strength_L t2 = Serial1.read(); // ไบต์ 6 = Strength_H t2 <<= 8; t2 += t1; สำหรับ(int i=0; i<3; i++)Serial1.read(); // ไบต์ 7, 8, 9 ถูกละเว้น } } } }

การตั้งค่าเป็นโมฆะ ()

{ Serial1.begin (115200); // HW Serial สำหรับ TFmini Serial.begin (115200); // เอาต์พุตแบบอนุกรมผ่าน USB ไปยังคอมพิวเตอร์ล่าช้า (100); // ให้เวลาเล็กน้อยสำหรับการเริ่มต้น // ตั้งค่าเป็นโหมดเอาต์พุตมาตรฐาน Serial1.write(0x42); Serial1.write(0x57); Serial1.write(0x02); Serial1.write(0x00); Serial1.write(0x00); Serial1.write(0x00); Serial1.write(0x01); Serial1.write(0x06); // ตั้งค่าเธรดสำหรับอ่านอินพุตแบบอนุกรมจาก TFmini threads.addThread (readLiDAR); }

วงเป็นโมฆะ ()

{ ล่าช้า(10); // ไม่ต้องการอ่านบ่อยเกินไปเหมือน TFmini ตัวอย่างที่ 100Hz Serial.println(liDARval); }

ขั้นตอนที่ 3: การใช้ Arduino IDE ดูผลลัพธ์ใน Serial Plotter

การใช้ Arduino IDE ดูผลลัพธ์ใน Serial Plotter
การใช้ Arduino IDE ดูผลลัพธ์ใน Serial Plotter

คุณสามารถใช้วิธีใดก็ได้ที่คุณต้องการ แต่ IDE ของ Arduino จะพล็อตผลลัพธ์อย่างดี

เชื่อมต่อกับ Teensy และเปิด Serial Monitor ตรวจสอบให้แน่ใจว่าตั้งค่า Baudrate เป็น 115200

แนะนำ: