สารบัญ:

การสร้างเรนจ์ไฟนเดอร์โดยใช้เลเซอร์และกล้อง: 6 ขั้นตอน
การสร้างเรนจ์ไฟนเดอร์โดยใช้เลเซอร์และกล้อง: 6 ขั้นตอน

วีดีโอ: การสร้างเรนจ์ไฟนเดอร์โดยใช้เลเซอร์และกล้อง: 6 ขั้นตอน

วีดีโอ: การสร้างเรนจ์ไฟนเดอร์โดยใช้เลเซอร์และกล้อง: 6 ขั้นตอน
วีดีโอ: โครตเท่ 🔥🔥🔥ทุกคนว่าแต่ละกระบอกราคาเท่าไหร่?? ‼️ 2024, มิถุนายน
Anonim
การสร้างเรนจ์ไฟน์เดอร์ด้วยเลเซอร์และกล้อง
การสร้างเรนจ์ไฟน์เดอร์ด้วยเลเซอร์และกล้อง

ฉันกำลังวางแผนงานตกแต่งภายในสำหรับฤดูใบไม้ผลิปีหน้า แต่เนื่องจากฉันเพิ่งซื้อบ้านหลังเก่า ฉันไม่มีแผนบ้านใดๆ ฉันเริ่มวัดระยะห่างระหว่างผนังกับผนังโดยใช้ไม้บรรทัด แต่มันช้าและมีโอกาสผิดพลาดได้ ฉันคิดว่าจะซื้อเครื่องวัดระยะเพื่อให้กระบวนการนี้ง่ายขึ้น แต่แล้วฉันก็พบบทความเก่าเกี่ยวกับการสร้างเครื่องวัดระยะโดยใช้เลเซอร์และกล้อง ปรากฎว่า ฉันมีส่วนประกอบเหล่านั้นในเวิร์กชอปของฉัน

โครงการนี้อ้างอิงจากบทความนี้:

ข้อแตกต่างเพียงอย่างเดียวคือฉันจะสร้างเครื่องวัดระยะโดยใช้ Raspberry Pi Zero W, LCD และโมดูลกล้อง Raspberry Pi ฉันจะใช้ OpenCV เพื่อติดตามเลเซอร์ด้วย

ฉันคิดว่าคุณเข้าใจเทคโนโลยีและคุ้นเคยกับการใช้ Python และบรรทัดคำสั่ง ในโครงการนี้ ฉันใช้ Pi ในโหมดหัวขาด

เริ่มกันเลย!

ขั้นตอนที่ 1: รายการวัสดุ

สำหรับโครงการนี้ คุณจะต้อง:

  • เลเซอร์ 6mm 5mW ราคาถูก
  • ตัวต้านทาน 220 Ω
  • ทรานซิสเตอร์ 2N2222A หรือสิ่งที่เทียบเท่า
  • ราสเบอร์รี่ Pi Zero W
  • กล้อง Raspberry Pi v2
  • จอ LCD Nokia 5110 หรือเทียบเท่า
  • สายจัมเปอร์และเขียงหั่นขนมขนาดเล็ก

ฉันใช้เครื่องพิมพ์ 3 มิติเพื่อพิมพ์จิ๊กที่ช่วยฉันในระหว่างการทดลอง ฉันยังวางแผนที่จะใช้เครื่องพิมพ์ 3 มิติเพื่อสร้างกล่องหุ้มที่สมบูรณ์สำหรับตัวค้นหาระยะ คุณสามารถทำได้โดยสิ้นเชิงโดยไม่ต้อง

ขั้นตอนที่ 2: การสร้างเลเซอร์และจิ๊กกล้อง

การสร้างเลเซอร์และจิ๊กกล้อง
การสร้างเลเซอร์และจิ๊กกล้อง
การสร้างเลเซอร์และจิ๊กกล้อง
การสร้างเลเซอร์และจิ๊กกล้อง
การสร้างเลเซอร์และจิ๊กกล้อง
การสร้างเลเซอร์และจิ๊กกล้อง

ระบบจะถือว่าระยะห่างคงที่ระหว่างเลนส์กล้องกับเอาต์พุตเลเซอร์ เพื่อความสะดวกในการทดสอบ ฉันพิมพ์จิ๊กเพื่อติดตั้งกล้อง เลเซอร์ และวงจรขับเคลื่อนขนาดเล็กสำหรับเลเซอร์

ฉันใช้ขนาดของโมดูลกล้องเพื่อสร้างฐานยึดสำหรับกล้อง ฉันใช้คาลิปเปอร์ดิจิตอลและไม้บรรทัดที่มีความแม่นยำเป็นหลักในการวัด สำหรับเลเซอร์ ฉันสร้างรูขนาด 6 มม. พร้อมเสริมแรงเล็กน้อยเพื่อให้แน่ใจว่าเลเซอร์จะไม่เคลื่อนที่ ฉันพยายามจัดพื้นที่ให้เพียงพอเพื่อให้มีเขียงหั่นขนมเล็กๆ ติดอยู่ที่ด้านหลังของจิ๊ก

ฉันใช้ Tinkercad สำหรับบิลด์ คุณสามารถค้นหาโมเดลได้ที่นี่:

มีระยะห่าง 3.75 ซม. ระหว่างศูนย์กลางของเลนส์เลเซอร์กับศูนย์กลางของเลนส์กล้อง

ขั้นตอนที่ 3: ขับเลเซอร์และ LCD

การขับเคลื่อนเลเซอร์และ LCD
การขับเคลื่อนเลเซอร์และ LCD
การขับเคลื่อนเลเซอร์และ LCD
การขับเคลื่อนเลเซอร์และ LCD

ฉันทำตามบทช่วยสอนนี้ https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi เพื่อขับเคลื่อนจอ LCD ด้วย Raspberry Pi Zero แทนที่จะแก้ไขไฟล์ /boot/config.txt คุณสามารถเปิดใช้งานอินเทอร์เฟซ SPI โดยใช้ sudo raspi-config ผ่านบรรทัดคำสั่ง

ฉันใช้ Raspberry Pi Zero ในโหมดหัวขาดโดยใช้ Raspbian Stretch ล่าสุด ณ วันที่ ฉันจะไม่ครอบคลุมการติดตั้งในคำแนะนำนี้ แต่คุณสามารถทำตามคำแนะนำนี้: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- command-line-or-using-the-network-97f065af722e

เพื่อให้ได้จุดเลเซอร์ที่สว่าง ฉันใช้ราง 5V ของ Pi สำหรับสิ่งนั้น ฉันจะใช้ทรานซิสเตอร์ (2N2222a หรือเทียบเท่า) เพื่อขับเคลื่อนเลเซอร์โดยใช้ GPIO ตัวต้านทาน 220 Ω ที่ฐานของทรานซิสเตอร์ช่วยให้กระแสไฟผ่านเลเซอร์ได้เพียงพอ ฉันใช้ RPi. GPIO เพื่อจัดการ Pi GPIO ฉันเชื่อมต่อฐานของทรานซิสเตอร์กับพิน GPIO22 (พินที่ 15) อิมิตเตอร์กับพื้นและตัวสะสมกับเลเซอร์ไดโอด

อย่าลืมเปิดใช้งานอินเทอร์เฟซของกล้องโดยใช้ sudo raspi-config ผ่านบรรทัดคำสั่ง

คุณสามารถใช้รหัสนี้เพื่อทดสอบการตั้งค่าของคุณ:

หากทุกอย่างเป็นไปด้วยดี คุณควรมีไฟล์ dot-j.webp

ในโค้ด เราตั้งค่ากล้องและ GPIO จากนั้นเราเปิดใช้งานเลเซอร์ เราจับภาพ และปิดใช้งานเลเซอร์ ขณะที่ฉันใช้งาน Pi ในโหมดหัวขาด ฉันต้องคัดลอกรูปภาพจาก Pi ของฉันไปยังคอมพิวเตอร์ก่อนที่จะแสดง

ณ จุดนี้ ฮาร์ดแวร์ของคุณควรได้รับการกำหนดค่า

ขั้นตอนที่ 4: การตรวจจับเลเซอร์โดยใช้ OpenCV

ก่อนอื่นเราต้องติดตั้ง OpenCV บน Pi โดยทั่วไปคุณมีสามวิธีในการทำ คุณสามารถติดตั้งเวอร์ชันแพ็คเกจเก่าด้วย apt คุณสามารถคอมไพล์เวอร์ชันที่คุณต้องการได้ แต่ในกรณีนี้ เวลาในการติดตั้งอาจนานถึง 15 ชั่วโมง และส่วนใหญ่จะเป็นการรวบรวมจริง หรือวิธีที่ฉันชอบ คุณสามารถใช้เวอร์ชันที่คอมไพล์ล่วงหน้าสำหรับ Pi Zero ที่จัดหาโดยบุคคลที่สาม

เพราะมันง่ายกว่าและเร็วกว่า ฉันจึงใช้แพ็คเกจของบุคคลที่สาม คุณสามารถค้นหาขั้นตอนการติดตั้งได้ในบทความนี้: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ ฉันลองใช้แหล่งอื่น ๆ มากมาย แต่แพ็คเกจของพวกเขาไม่ทันสมัย

ในการติดตามตัวชี้เลเซอร์ ฉันได้อัปเดตโค้ดจาก https://github.com/bradmontgomery/python-laser-tracker เพื่อใช้โมดูลกล้อง Pi แทนอุปกรณ์ USB คุณสามารถใช้รหัสได้โดยตรงหากคุณไม่มีโมดูลกล้อง Pi และต้องการใช้กล้อง USB

คุณสามารถค้นหารหัสที่สมบูรณ์ได้ที่นี่:

ในการรันโค้ดนี้ คุณจะต้องติดตั้งแพ็คเกจ Python: pillow and picamera (sudo pip3 install pillow picamera)

ขั้นตอนที่ 5: การปรับเทียบตัวค้นหาช่วง

การปรับเทียบตัวค้นหาช่วง
การปรับเทียบตัวค้นหาช่วง
การปรับเทียบตัวค้นหาช่วง
การปรับเทียบตัวค้นหาช่วง
การปรับเทียบตัวค้นหาช่วง
การปรับเทียบตัวค้นหาช่วง

ในบทความต้นฉบับ ผู้เขียนได้ออกแบบขั้นตอนการสอบเทียบเพื่อให้ได้พารามิเตอร์ที่จำเป็นในการแปลงพิกัด y เป็นระยะทางจริง ฉันใช้โต๊ะในห้องนั่งเล่นเพื่อสอบเทียบและงานคราฟท์ชิ้นเก่า ทุกๆ 10 ซม. หรือมากกว่านั้น ฉันสังเกตพิกัด x และ y ลงในสเปรดชีต: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… เพื่อให้แน่ใจว่าทุกอย่างทำงานอย่างถูกต้อง ในทุกขั้นตอน ฉันตรวจสอบภาพที่ถ่ายเพื่อดูว่า เลเซอร์ถูกติดตามอย่างถูกต้อง หากคุณใช้เลเซอร์สีเขียวหรือหากเลเซอร์ของคุณไม่ถูกติดตามอย่างถูกต้อง คุณจะต้องปรับเฉดสี ความอิ่มตัว และเกณฑ์ค่าของโปรแกรมให้สอดคล้องกัน

เมื่อขั้นตอนการวัดเสร็จสิ้น ก็ถึงเวลาคำนวณพารามิเตอร์จริงๆ เช่นเดียวกับผู้เขียน ฉันใช้การถดถอยเชิงเส้น อันที่จริง Google สเปรดชีตทำงานให้ฉัน จากนั้นฉันก็นำพารามิเตอร์เหล่านั้นกลับมาใช้ใหม่เพื่อคำนวณระยะทางโดยประมาณ และตรวจสอบกับระยะทางจริง

ตอนนี้ได้เวลาใส่พารามิเตอร์ลงในโปรแกรม rangefinder เพื่อวัดระยะทาง

ขั้นตอนที่ 6: การวัดระยะทาง

การวัดระยะทาง
การวัดระยะทาง

ในรหัส: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c ฉันอัปเดตตัวแปร HEIGHT, GAIN และ OFFSET ตามการวัดการสอบเทียบ ฉันใช้สูตรระยะทางในบทความต้นฉบับเพื่อประเมินระยะทาง และฉันพิมพ์ระยะทางโดยใช้จอ LCD

รหัสจะตั้งค่ากล้องและ GPIO ก่อน จากนั้นเราต้องการเปิดไฟแบ็คไลท์ LCD เพื่อดูการวัดที่ดีขึ้น อินพุต LCD เสียบกับ GPIO14 ทุกๆ 5 วินาทีหรือมากกว่านั้น เราจะ:

  1. เปิดใช้งานเลเซอร์ไดโอด
  2. เก็บภาพไว้ในความทรงจำ
  3. ปิดการใช้งานเลเซอร์ไดโอด
  4. ติดตามเลเซอร์โดยใช้ตัวกรองช่วง HSV
  5. เขียนอิมเมจที่ได้ลงในดิสก์เพื่อการดีบัก
  6. คำนวณระยะทางตามพิกัด y
  7. เขียนระยะทางบนจอ LCD

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

ฉันยังสามารถเพิ่มความละเอียดของเรนจ์ไฟน์เดอร์ได้ด้วยการหมุนกล้อง 90º โดยใช้แบบเต็ม และเพิ่มความละเอียดให้สูงสุดที่กล้องรองรับ ด้วยการใช้งานในปัจจุบัน เราจำกัดช่วงพิกเซลไว้ที่ 0 ถึง 384 พิกเซล เราสามารถเพิ่มขีดจำกัดบนเป็น 1640 ซึ่งเป็น 4 เท่าของความละเอียดปัจจุบัน ระยะทางจะแม่นยำยิ่งขึ้น

ในการติดตามผล ฉันจะต้องปรับปรุงความแม่นยำที่ฉันได้กล่าวไว้ข้างต้น และสร้างกรอบสำหรับเครื่องวัดระยะ ตู้จะต้องมีความลึกที่แม่นยำเพื่อให้ง่ายต่อการวัดจากผนังถึงผนัง

โดยรวมแล้วระบบปัจจุบันก็เพียงพอแล้วสำหรับฉันและจะช่วยฉันประหยัดเงินได้บ้างในการวางแผนบ้านของฉัน!

แนะนำ: