Benewake LiDAR TFmini (คู่มือฉบับสมบูรณ์): 5 ขั้นตอน (พร้อมรูปภาพ)
Benewake LiDAR TFmini (คู่มือฉบับสมบูรณ์): 5 ขั้นตอน (พร้อมรูปภาพ)
Anonim
Benewake LiDAR TFmini (คู่มือฉบับสมบูรณ์)
Benewake LiDAR TFmini (คู่มือฉบับสมบูรณ์)
Benewake LiDAR TFmini (คู่มือฉบับสมบูรณ์)
Benewake LiDAR TFmini (คู่มือฉบับสมบูรณ์)

คำอธิบาย

โมดูล Benewake TFMINI Micro LIDAR มีการออกแบบทางแสง โครงสร้าง และอิเล็กทรอนิกส์ที่เป็นเอกลักษณ์ ผลิตภัณฑ์มีข้อดีหลักสามประการ: ต้นทุนต่ำ ปริมาณน้อย และใช้พลังงานต่ำ

อัลกอริธึมในตัวที่ปรับให้เข้ากับสภาพแวดล้อมในร่มและกลางแจ้งสามารถรับประกันประสิทธิภาพการทำงานที่หลากหลายด้วยต้นทุนที่ต่ำและในปริมาณน้อย ซึ่งช่วยขยายขอบเขตการใช้งานและสถานการณ์ของ LiDAR ได้อย่างมาก และวางรากฐานที่มั่นคงสำหรับ "ดวงตา" ในอนาคตในอุปกรณ์อัจฉริยะ ยุค.

ข้อมูลจำเพาะ

  • แรงดันไฟฟ้าขาเข้า: 5v
  • กำลังไฟเฉลี่ย: 0.12W
  • โปรโตคอลการสื่อสาร: UART (อัตราบอด: 115200)
  • อุณหภูมิในการทำงาน: -20 ℃ ~ 60 ℃
  • FOV: 2.3°

ขนาด

  • ขนาด: 42mmx15mmx16mm
  • น้ำหนัก: 6.1g

ข้อจำกัด

ช่วง "คนตาบอด" 0 ซม.-30 ซม

ซื้อที่ไหน

  • RobotShop
  • อเมซอน

คำแนะนำนี้ต้องการให้คุณคุ้นเคยกับสิ่งต่อไปนี้:

  • อุปกรณ์อิเล็กทรอนิกส์พื้นฐาน
  • เครื่องมือช่าง เช่น เครื่องตัดลวดและเครื่องปอก
  • การอ่านแผนผังและไดอะแกรมการเชื่อมต่อ
  • การเขียนโปรแกรม C/C++ สำหรับ Arduino (ทางเลือก)
  • การเขียนโปรแกรม Python สำหรับ Raspberry Pi (ทางเลือก)

ขั้นตอนที่ 1: รวบรวมวัสดุ

รวบรวมวัสดุ
รวบรวมวัสดุ
รวบรวมวัสดุ
รวบรวมวัสดุ
รวบรวมวัสดุ
รวบรวมวัสดุ

คำแนะนำนี้จะนำคุณไปสู่วิธีการต่างๆ ในการปรับใช้ TFmini LiDAR โดยใช้ Windows PC และ Raspberry Pi แต่ละวิธีมีข้อกำหนดและสามารถเปลี่ยนแปลงได้ตามความต้องการของคุณ

**คุณจะต้องใช้ Benewake TFmini LiDAR สำหรับแต่ละกรณี (แน่นอน)**

สำหรับการใช้งานบนพีซี:

  • ระบบปฏิบัติการ: Windows
  • ตัวแปลง USB-TTL
  • สายจัมเปอร์

สำหรับการนำ Raspberry Pi ไปใช้:

  • ราสเบอร์รี่ปี่
  • สายจัมเปอร์
  • ไฟ LED (อุปกรณ์เสริม)
  • ตัวแปลง USB-TTL (อุปกรณ์เสริม)
  • เขียงหั่นขนม (ไม่จำเป็น)
  • ตัวต้านทาน (ระหว่าง 100-1k โอห์ม) (อุปกรณ์เสริม)

ขั้นตอนที่ 2: การใช้งานบนพีซีโดยใช้แอพ Benewake

การใช้งานบนพีซีโดยใช้แอพ Benewake
การใช้งานบนพีซีโดยใช้แอพ Benewake
การใช้งานบนพีซีโดยใช้แอพ Benewake
การใช้งานบนพีซีโดยใช้แอพ Benewake
  1. เชื่อมต่อ TFmini LiDAR กับตัวแปลง USB-TTL โดยใช้สายจัมเปอร์ (ชาย-หญิง) ตามแผนผังที่แสดง

    • สายสีแดง 5V
    • ลวดดำ GND
    • ลวดขาว/น้ำเงิน Tx
    • กรีน ไวร์ Rx
  2. เสียบ USB-TTL เข้ากับคอมพิวเตอร์ของคุณ
  3. ไปที่ Device Manager (Win + X) และค้นหา " Prolific USB-to-Serial Comm Port " ใต้ Ports (COM & LPT) ตรวจสอบให้แน่ใจว่า Windows รู้จักอุปกรณ์
  4. ดาวน์โหลดและแตกไฟล์ WINCC_TF.rar
  5. เรียกใช้ WINCC_TFMini.exe จากไฟล์ที่แยกออกมา
  6. เลือกพอร์ต COM ที่เกี่ยวข้องจากเมนูแบบเลื่อนลงในแอพ Benewake ใต้หัวข้อ Serial Port
  7. คลิกเชื่อมต่อ

ขั้นตอนที่ 3: การใช้งานพีซีโดยใช้ Python (PySerial)

การใช้งานพีซีโดยใช้ Python (PySerial)
การใช้งานพีซีโดยใช้ Python (PySerial)
  1. เชื่อมต่อ TFmini LiDAR กับพีซีโดยใช้ตัวแปลง USB-TTL
  2. ดาวน์โหลดและเปิด PC_Benewake_TFmini_LiDAR.py โดยใช้ Python IDLE (ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง PySerial และ Python บนพีซีของคุณแล้ว)
  3. แก้ไขพอร์ต COM ในรหัสให้ตรงกับพอร์ต COM ของตัวแปลง USB-TTL บนพีซีของคุณ (ดูภาพ)
  4. คลิกเรียกใช้ tab
  5. คลิกเรียกใช้โมดูล

**อ้างถึงขั้นตอนที่ 5 สำหรับคำอธิบายของรหัส

ขั้นตอนที่ 4: การใช้งาน Raspberry Pi

การใช้งาน Raspberry Pi
การใช้งาน Raspberry Pi
การใช้งาน Raspberry Pi
การใช้งาน Raspberry Pi
การใช้งาน Raspberry Pi
การใช้งาน Raspberry Pi
การใช้งาน Raspberry Pi
การใช้งาน Raspberry Pi
  1. เชื่อมต่อ TFmini LiDAR กับ RPi โดยใช้ตัวแปลง USB-TTL หรือพอร์ต UART โดยใช้ GPIO
  2. ดาวน์โหลดและเปิด Pi_benewake_LiDAR.py โดยใช้ Python IDLE
  3. หากคุณกำลังใช้ตัวแปลง USB-TTL กับ RPi ให้เปิด Arduino IDE คลิกที่ Tools ->Serial Port แล้วแก้ไขโค้ดตามนั้น หากคุณใช้พอร์ต UART GPIO ให้เขียน /dev/ttyAMA0
  4. เรียกใช้รหัส

**โค้ดสามารถใช้พิมพ์ระยะทางได้ แต่เนื่องจาก RPi ไม่มีกำลังประมวลผลมากนัก จึงแนะนำให้จุดไฟ LED หากระยะทางที่บันทึกต่ำกว่าช่วงที่กำหนด (แนบแผนผังสำหรับ LED ที่มี RPi)

ถาม ทำไมต้องใช้ตัวแปลง USB-TTL กับ RPi

RPi มีพอร์ต UART เพียงพอร์ตเดียว และบางครั้งคุณต้องใส่โมดูลสองสามตัวที่ต้องการการสื่อสาร UART USB-TTL มีพอร์ต UART เพิ่มเติมให้กับ RPi ทำให้เรามีโอกาสเชื่อมต่ออุปกรณ์ UART มากกว่าหนึ่งเครื่อง (เช่น TFmini LiDAR สองเครื่องขึ้นไป) กับ RPi

ขั้นตอนที่ 5: เกี่ยวกับรหัส

เกี่ยวกับรหัส
เกี่ยวกับรหัส

รหัสสามารถแบ่งออกเป็นสามส่วน:

  • กำลังสร้างการเชื่อมต่อ
  • กำลังเขียนข้อมูล
  • การอ่านข้อมูล

การสร้างการเชื่อมต่อ:

หลังจากนำเข้าไฟล์ส่วนหัวที่จำเป็นแล้ว เราจะสร้างการเชื่อมต่อกับ TFmini LiDAR โดยระบุพอร์ต COM อัตราบอดและการเชื่อมต่อหมดเวลา

ser = serial. Serial('COM7', 115200, timeout = 1) #PC

ser = serial. Serial('/dev/ttyUSB1', 115200, หมดเวลา = 1) #Raspberry Pi

กำลังเขียนข้อมูล:

รหัสสามารถแบ่งออกเป็นสองส่วนคือการเขียนและการรับ ในการรับข้อมูล คุณต้องส่งต่อคำสั่งบางอย่างไปยัง TFmini LiDAR (ส่วนหนึ่งของกระบวนการเริ่มต้น) ในกรณีนี้ ฉันเลือก 4257020000000106 แม้ว่า RPi จะรัน Python รุ่นเดียวกัน แต่ไวยากรณ์มีการเปลี่ยนแปลงเล็กน้อย เนื่องจาก RPi ไม่ยอมรับข้อมูลอื่นนอกเหนือจากไบนารี

ser.write(0x42)

ser.write(0x57) ser.write(0x02) ser.write(0x00) ser.write(0x00) ser.write(0x00) ser.write(0x01) ser.write(0x06)

การอ่านข้อมูล:

แผนภูมิที่ให้ไว้ในแผ่นข้อมูลให้ 'รายละเอียด' ของข้อความ UART ขนาด 9 ไบต์แก่เรา สองไบต์แรกเป็นส่วนหัวของเฟรมที่มีค่าเลขฐานสิบหก 0x59 (อักขระ 'Y') สามารถอ่านและใช้เพื่อระบุจุดเริ่มต้นของข้อความ UART

if(('Y' == ser.read()) และ ('Y' == ser.read())):

เมื่ออ่านเฟรมส่วนหัวแล้ว สองไบต์ถัดไปซึ่งเป็นข้อมูลระยะทางที่บรรทุกได้ สามารถอ่านได้ ข้อมูลระยะทางแบ่งออกเป็นแพ็กเก็ต 8 บิตสองแพ็กเก็ต Dist_L (Byte3) - 8 บิตที่ต่ำกว่า และ Dist_H (Byte4) - สูงกว่า 8 บิต

Dist_L = ser.read() #Byte3Dist_H = ser.read() #Byte4

โดยการคูณ Dist_H ด้วย 256 ข้อมูลไบนารีจะถูกเลื่อนไปทางซ้าย 8 (เทียบเท่ากับ "<< 8") ตอนนี้สามารถเพิ่มข้อมูลระยะทาง 8 บิตที่ต่ำกว่า Dist_L ได้ส่งผลให้ข้อมูล Dist_Total 16 บิต

Dist_Total = (อ๊อด(Dist_H) * 256) + (อด(Dist_L))

เนื่องจากเรามีค่าระยะทาง 'ถอดรหัส' กับเรา ห้าไบต์ถัดไปอาจถูกละเว้น โปรดทราบว่าข้อมูลการอ่านจะไม่ถูกจัดเก็บไว้ที่ใด

สำหรับฉันอยู่ในช่วง (0, 5): ser.read()

**ในที่อื่น คุณอาจพบว่า 'delay' (time.sleep ใน Python) รวมอยู่ก่อนสิ้นสุดลูปเนื่องจาก TFmini LiDAR มีความถี่ในการทำงาน 100Hz ความล่าช้านี้ 'โปรแกรมล่าช้า' และจะส่งผลให้ข้อมูลถูกอัปเดตหลังจากเกิดความล่าช้า ผมเชื่อว่าเนื่องจากเรารอให้ข้อมูลมารวมกันเป็น 9 ไบต์แล้ว ไม่น่าจะมีอะไรล่าช้า

#time.sleep(0.0005) #ล่าช้าออกความเห็น

ในขณะที่ (ser.in_waiting >= 9):

แนะนำ: