สารบัญ:

อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino: 10 ขั้นตอน (พร้อมรูปภาพ)
อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino: 10 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: วัดระยะทางด้วยโมดูลเลเซอร์ 6 พิน VL53L0X พร้อม Arduino 2024, กรกฎาคม
Anonim
อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino
อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino
อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino
อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino
อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino
อาร์เรย์เรดาร์นิ่ง (LIDAR) พร้อม Arduino

เมื่อฉันสร้างหุ่นยนต์สองขา ฉันมักจะคิดว่าจะมีอุปกรณ์เจ๋งๆ ที่สามารถติดตามคู่ต่อสู้ของฉันและโจมตีด้วยมันได้ โครงการเรดาร์/ไลดาร์จำนวนมากมีอยู่แล้วที่นี่ อย่างไรก็ตาม มีข้อจำกัดบางประการสำหรับจุดประสงค์ของฉัน:

  • โมดูลเซ็นเซอร์คลื่นอัลตราโซนิกมีขนาดค่อนข้างใหญ่ หุ่นยนต์ทุกตัวจะมีลักษณะเหมือน WALL-E
  • โครงการเรดาร์ปัจจุบันทั้งหมดรวมถึงเซ็นเซอร์ (ทั้งคลื่นอัลตราโซนิก, IR, เลเซอร์, …) และเซอร์โวมอเตอร์ที่อยู่ตรงกลาง การสแกนสภาพแวดล้อมต้องการให้เซอร์โวเคลื่อนที่ไปด้านข้าง การเคลื่อนย้ายสิ่งของไปมาทำให้เกิดการเปลี่ยนแปลงซึ่งส่งผลเสียต่อการทรงตัวและการเดินแบบสองขา
  • ความถี่ในการสแกนถูกจำกัดด้วยความเร็วของเซอร์โว สามารถทำได้เพียงหลายเฮิรตซ์เท่านั้น แม้ว่าซุปเปอร์เซอร์โวบางตัวจะเพิ่มความถี่ในการสแกนได้ แต่ก็จะส่งผลให้เกิดการสั่นสะท้านอย่างหนัก
  • [เซ็นทรัลเซอร์โวมอเตอร์ - เซ็นเซอร์] การจัดเรียงยังจำกัดตำแหน่งสำหรับการติดตั้งและการออกแบบ ติดอย่างอื่นยากกว่าหัว ซึ่งทำให้คนสองเท้าของฉันดูเหมือน WALL-E หัวสั่นทุกครั้ง ไม่เจ๋ง!
  • การจัดเรียง [เซ็นเซอร์เซอร์โว] ยังสามารถสร้างขึ้นในรูปแบบ [เซ็นเซอร์มอเตอร์] ได้อีกด้วย เซ็นเซอร์ (หรือเซ็นเซอร์) หมุนไปตามแกนมอเตอร์อย่างต่อเนื่อง ซึ่งอาจช่วยขจัดปัญหาการกระตุกของโมเมนตัมและปัญหาความถี่ในการสแกนต่ำ แต่ไม่ใช่ข้อจำกัดในการออกแบบลำตัว ความยากลำบากในการเดินสายก็จะเพิ่มขึ้นอย่างมากเช่นกัน

หลังจากค้นหา เซ็นเซอร์ขนาดเล็ก VL53L0X จาก ST ก็สาดเข้าตาฉัน โดยอ้างว่าเซ็นเซอร์วัดระยะเวลาบิน "โลกที่เล็กที่สุด" มีมิติเพียง 4.4 x 2.4 x 1.0 มม. เนื้อเรื่อง

  • บนชิป IR เลเซอร์อีซีแอลและเครื่องตรวจจับ
  • ระยะสูงสุด 2 ม. (1.2 ม. ในโหมดเร็ว)
  • ที่อยู่ I2C ที่ตั้งโปรแกรมได้
  • พินเอาต์พุตขัดจังหวะ GPIO
  • ปลอดภัยต่อดวงตา

คุณสมบัติพิเศษทั้งหมดเหล่านี้รวมกันช่วยให้ฉันสามารถเอาชนะปัญหาข้างต้นได้ หากอาร์เรย์ของเซ็นเซอร์ VL53L0X สามารถทำงานได้ เดิมที ฉันคิดว่าเรดาร์นี้จะเรียกว่าเรดาร์โซลิดสเตต แต่พบว่าคำนี้ใช้สำหรับอย่างอื่น ดังนั้นคำว่า "เครื่องเขียน" ในชื่อหมายความว่าไม่มีชิ้นส่วนที่เคลื่อนไหวในอุปกรณ์เรดาร์นี้ นอกจากนี้ แม้ว่า LIDAR (การตรวจจับแสงและระยะ) เป็นคำศัพท์ที่ถูกต้องทางเทคนิคสำหรับชิปนี้ แต่ RADAR ถูกอ้างถึงในที่นี้ว่าเป็นคำทั่วไปมากกว่า

เหตุผลที่ที่อยู่ I2C ที่ตั้งโปรแกรมได้และพินเอาต์พุต GPIO มีความสำคัญต่อโครงการนี้จะอธิบายในภายหลัง

ขั้นตอนที่ 1: เครื่องมือและชิ้นส่วน

เครื่องมือและอะไหล่
เครื่องมือและอะไหล่
เครื่องมือและอะไหล่
เครื่องมือและอะไหล่

เครื่องมือ

จำเป็นต้องมีเครื่องมือต่อไปนี้ในโครงการนี้:

  • หัวแร้ง
  • บัดกรีช่วยมือ
  • เครื่องมือย้ำดูปองท์
  • ตัวขับหกเหลี่ยม 1.5 มม.
  • เครื่องมือถอดเคลือบลวด
  • เครื่องตัดลวด
  • ปืนกาวร้อน
  • แหนบ
  • แว่นขยาย (ทางกายภาพหรือแอพในโทรศัพท์ของคุณ)
  • คีมปากแบน

อะไหล่

ส่วนต่อไปนี้ถูกใช้ในโครงการนี้:

  • 10x VL53L0X GY-530 บอร์ดฝ่าวงล้อม
  • Arduino (Uno, Nano, Mega, Zero, Mini, … ฯลฯ)
  • เขียงหั่นขนมและสายเขียงหั่นขนม some
  • AWG #26 สายไฟหลากสี
  • AWG #30 สายแกนเดี่ยว
  • 5x ขั้วต่อชายดูปองท์
  • 5x ตัวเรือนดูปองท์ขาเดียว
  • ที่ใส่บอร์ดฝ่าวงล้อมที่พิมพ์ 3 มิติ 10x
  • 1x 3D พิมพ์กรอบวงกลม
  • สกรูหัวแบน 10x M2x10
  • 10x 0804 LED (แนะนำสีน้ำเงิน)
  • 10x SOT-23 AO3400 N-Channel MOSFET
  • ตัวเก็บประจุขนาดเล็ก (10 ~ 100uF)

กระดานฝ่าวงล้อม

บอร์ดฝ่าวงล้อม VL53L0X ที่ฉันใช้คือ GY-530 นอกจากนี้ยังมีรุ่น Adafruit และรุ่น Pololu หากเป็นไปได้ ฉันขอแนะนำให้ใช้ผลิตภัณฑ์ของ Adafruit หรือ Pololu เพราะพวกเขาสร้างผลิตภัณฑ์ที่ยอดเยี่ยม บทช่วยสอนที่ยอดเยี่ยม และไลบรารีซอฟต์แวร์ที่ยอดเยี่ยม ฉันทดสอบกับไลบรารี VL53L0X ของ Adafruit และใช้ไลบรารี VL53L0X ของ Pololu เวอร์ชันดัดแปลง

ขั้วต่อดูปองท์

ตัวเชื่อมต่อดูปองท์ใช้สำหรับเขียงหั่นขนม คุณสามารถใช้การเชื่อมต่อประเภทอื่นที่คุณมีได้

สกรูและชิ้นส่วนที่พิมพ์ 3 มิติ

สกรู M2 ตัวจับยึด และโครงทรงกลมใช้สำหรับวางเซ็นเซอร์ในลักษณะวงกลม คุณอาจใช้วิธีอื่น เช่น การใช้กระดานการ์ด ไม้จำลอง ดินเหนียว หรือแม้แต่การทากาวร้อนบนกระป๋อง

ขั้นตอนที่ 2: แฮ็ค Breadout Board

แฮ็คบอร์ด Breadout
แฮ็คบอร์ด Breadout
แฮ็คบอร์ด Breadout
แฮ็คบอร์ด Breadout
แฮ็คบอร์ด Breadout
แฮ็คบอร์ด Breadout
แฮ็คบอร์ด Breadout
แฮ็คบอร์ด Breadout

กรวยของการตรวจจับ

ฉันใช้โมดูลเดียวในการวาดกรวยของการตรวจจับ ใช้หุ่นยนต์พิมพ์ 3 มิติเป็นส่วนใหญ่เป็นเป้าหมาย ระยะทางจะแสดงบนจอแสดงผล LED และวัดอย่างคร่าวๆ ข้อมูลที่วัดได้จะถูกบันทึกลงในไฟล์ Microsoft Excel และใช้ฟังก์ชันการปรับให้พอดีส่วนโค้ง ความพอดีที่ดีที่สุดคือเส้นโค้งลอการิทึมธรรมชาติ โดยมีระยะห่างระหว่าง 3 ซม. ถึงประมาณ 100 ซม.

ที่ 60 ซม. เส้นโค้งการตรวจจับสำหรับเซ็นเซอร์ตัวเดียวจะอยู่ที่ประมาณ 22 ซม. ด้วยเป้าหมายที่กว้าง 20 ซม. ระยะห่างแบบวงกลม 10 ~ 15 องศาสำหรับอาร์เรย์เรดาร์ควรให้ความละเอียดในการสแกนที่ยอมรับได้

ที่อยู่ I2C

ในขณะที่ที่อยู่อุปกรณ์ VL53L0X I2C สามารถตั้งโปรแกรมได้ แต่จำเป็นต้องมีการควบคุมพิน XSHUT อย่างสมบูรณ์โดยไมโครคอนโทรลเลอร์ ลำดับที่จะทำคือ:

  1. พลังงานถูกนำไปใช้กับ AVDD
  2. ชิป VL53L0X ทั้งหมดถูกนำไปยังสถานะ Hw Standby (รีเซ็ต) โดยการขับพิน XSHUT ทั้งหมดไปที่ LOW
  3. ชิปแต่ละตัวจะถูกนำออกจากสถานะรีเซ็ตทีละตัว ที่อยู่ I2C เริ่มต้นหลังจากการบูทคือ 0x52
  4. ที่อยู่ชิปจะเปลี่ยนเป็นที่อยู่ใหม่โดยใช้คำสั่ง I2C ตัวอย่างเช่น 0x52 เปลี่ยนเป็น 0x53
  5. ทำซ้ำขั้นตอนที่ 3 และ 4 สำหรับชิปทั้งหมด

ในทางทฤษฎี สามารถขับได้สูงสุด 126 ยูนิตในบัสเดียวกันสำหรับช่วงแอดเดรส 7 บิต อย่างไรก็ตาม ในทางปฏิบัติ ความจุบัสและขีดจำกัดกระแสไฟที่จมของไมโครคอนโทรลเลอร์อาจ/ควรจำกัดจำนวนอุปกรณ์สูงสุด

ที่อยู่ I2C ใหม่จะไม่ถูกเก็บไว้ในชิป VL53L0X เมื่อปิดเครื่องหรือรีเซ็ต ดังนั้นขั้นตอนนี้จะต้องทำครั้งเดียวทุกครั้งที่เปิดเครื่อง ซึ่งหมายความว่าต้องมีพินอันล้ำค่าหนึ่งอันสำหรับทุกยูนิตในอาร์เรย์เรดาร์ นี่เป็นวิธีที่ไม่เป็นมิตรต่อการเดินสายและการใช้พินมากเกินไปสำหรับสายพานเรดาร์ที่มียูนิต 10+ หรือ 20+

ดังที่กล่าวไว้ใน STEP1 โชคดีที่มีพิน GPIO1 บนชิป VL53L0X ซึ่งเดิมใช้สำหรับอินเตอร์รัปต์สามารถทำงานได้

โซ่เดซี่ GPIO-XSHUTN

เอาต์พุต GPIO อยู่ในสถานะอิมพีแดนซ์สูงเมื่อบูทและเปิดเดรนให้ต่ำขณะใช้งาน หมุด GPIO และ XSHUT ถูกดึงให้สูงไปที่ AVDD บนบอร์ดฝ่าวงล้อม GY-530 ตามที่แนะนำในแผ่นข้อมูล เพื่อให้ชิป VL53L0X ทั้งหมดเข้าสู่สถานะ Hw Standby ได้อย่างน่าเชื่อถือ (ขับ XSHUT ต่ำ) เราจำเป็นต้องมีลอจิก NOT gate (อินเวอร์เตอร์) สำหรับพิน XSHUT ทุกตัว จากนั้นเราเชื่อมต่อเอาต์พุต GPIO ของชิปหนึ่งตัว (ชิป Nth) กับ XSHUTN (XSHUT-NOT) ของชิปดาวน์สตรีม (ชิป N+1)

เมื่อเปิดเครื่อง หมุด GPIO ทั้งหมด (ไม่ได้ใช้งาน) จะถูกดึงขึ้น หมุด XSHUT ที่ตามมาทั้งหมดจะถูกขับให้ต่ำโดยเกท NOT (ยกเว้นชิปแรกสุดที่พิน XSHUTN เชื่อมต่อกับไมโครคอนโทรลเลอร์) การเปลี่ยนที่อยู่ I2C และการเปิดตัวชิปดาวน์สตรีม XSHUT ทำได้ในซอฟต์แวร์ ทีละรายการ

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

การเพิ่ม LED

ในขั้นตอนต่อไป ไฟ LED 0805 SMD ขนาดเล็กจะถูกเพิ่มลงในบอร์ดฝ่าวงล้อม ซึ่งเชื่อมต่อจากแผ่น XSHUT กับขั้ว GND ของตัวเก็บประจุที่อยู่ติดกัน แม้ว่า LED เองจะไม่ส่งผลต่อการทำงานของโมดูล แต่ก็ให้สัญญาณภาพที่ดีในระดับตรรกะ XSHUT

การต่อ LED แบบอนุกรมกับตัวต้านทานแบบดึงขึ้น (10k ในกรณีของฉัน) บนพิน XSHUT จะทำให้แรงดันไฟฟ้าตก แทนที่จะเป็นระดับลอจิกสูง 3.3v แรงดันไฟฟ้ าข้างหน้าสำหรับ LED 0805 สีแดงจะถูกวัด 1.6v แม้ว่าแรงดันไฟฟ้านี้จะสูงกว่าระดับลอจิกสูง (1.12v) ในแผ่นข้อมูล แต่ไฟ LED สีฟ้าจะดีกว่าสำหรับการแฮ็กนี้ แรงดันตกคร่อมไปข้างหน้าสำหรับ LED สีน้ำเงินวัดได้ประมาณ 2.4v ซึ่งอยู่เหนือระดับลอจิกของชิปอย่างปลอดภัย

การเพิ่มอินเวอร์เตอร์ N-MOS (ลอจิกไม่เกต)

SOT-23 N-channel MOSFET ขนาดเล็กวางซ้อนกันบน LED ที่เราเพิ่มเข้าไป ต้องบัดกรีสองขั้ว (D, S) บนบอร์ดฝ่าวงล้อมและเทอร์มินัลที่เหลือ (G) เชื่อมต่อกับพิน GPIO ของบอร์ดต้นน้ำโดยใช้สาย # 26

หมายเหตุเกี่ยวกับการเพิ่มส่วนประกอบ SMD

การบัดกรีส่วนประกอบ SMD บนบอร์ดฝ่าวงล้อมที่ไม่ได้ออกแบบมาสำหรับไม่ใช่เรื่องง่าย หากคุณยังไม่เคยได้ยินเกี่ยวกับ 0805, SMD, SOT-23 มาก่อน คุณอาจไม่เคยบัดกรีส่วนประกอบเล็กๆ น้อยๆ เหล่านั้นมาก่อน ขณะจัดการส่วนประกอบเล็กๆ เหล่านั้นด้วยมือ เป็นเรื่องปกติมากที่:

  • สิ่งเล็กๆ ที่หลุดลอยหายไปตลอดกาล
  • แผ่นเล็ก ๆ บนสิ่งเล็กน้อยเพิ่งลอกออก
  • ขาเล็ก ๆ ของตัวเล็กเพิ่งหัก
  • ดีบุกบัดกรีรวมตัวกันเป็นหยดและไม่สามารถแยกออกจากกันได้
  • และอื่น ๆ…

หากคุณยังต้องการสร้างเรดาร์นี้ คุณสามารถ:

  • เปลี่ยนส่วนประกอบเป็นแพ็คเกจที่ใหญ่ขึ้น เช่น สไตล์ DIP
  • รับส่วนประกอบมากกว่าขั้นต่ำที่จำเป็นสำหรับการปฏิบัติและการบริโภค

ขั้นตอนที่ 3: บัดกรี 0805 LED

บัดกรี 0805 LED
บัดกรี 0805 LED
บัดกรี 0805 LED
บัดกรี 0805 LED
บัดกรี 0805 LED
บัดกรี 0805 LED
บัดกรี 0805 LED
บัดกรี 0805 LED

บัดกรี 0805 SMD LED

การบัดกรี LED 0805 ด้วยมือบนกระดานฝ่าวงล้อมที่ไม่ได้ออกแบบมาสำหรับ SMD ไม่ใช่เรื่องง่ายเลย ขั้นตอนต่อไปนี้เป็นคำแนะนำของฉันในการประสาน LED

  1. ใช้มือผู้ช่วยจับกระดานฝ่าวงล้อมของคุณ
  2. ใส่น้ำยาบัดกรีที่ขอบตัวเก็บประจุ SMD และแผ่น "XSHUT"
  3. ใช้หัวแร้งเพื่อใส่บัดกรีเพิ่มเติมบนขอบตัวเก็บประจุ
  4. ใส่น้ำยาบัดกรีที่ปลายทั้งสองของ 0805 LED
  5. ใช้หัวแร้งใส่ดีบุกที่ปลายทั้งสองของ 0805 LED
  6. ใช้แหนบเพื่อวาง LED ตามที่แสดงในภาพ ปกติปลายแคโทดจะมีเส้นกำกับอยู่ ในตัวอย่างของฉัน มีเส้นสีเขียวที่ปลายแคโทด วางปลายแคโทดไปที่ปลายตัวเก็บประจุ
  7. ใช้แหนบเพื่อเพิ่มแรงกดเบา ๆ บน LED ไปทางตัวเก็บประจุ และประสาน LED เข้ากับปลายตัวเก็บประจุ โดยเพิ่มความร้อนไปที่ปลายตัวเก็บประจุพร้อมกัน อย่ากด LED แรงๆ ฝาครอบอาจแตกได้ภายใต้ความร้อนและแรงกดมากเกินไป หลังจากการบัดกรี ให้เพิ่มแรงกดเบาๆ บน LED ไปด้านข้าง เพื่อทดสอบว่า LED ถูกบัดกรีเข้าที่หรือไม่
  8. ตอนนี้ประสาน LED ที่แผ่นจุ่ม XSHUT ขั้นตอนนี้น่าจะง่ายกว่า

หมายเหตุ: ปลายตัวเก็บประจุที่แสดงในภาพคือขั้วต่อกราวด์บนบอร์ดฝ่าวงล้อมนี้ และแผ่นจุ่ม XSHUT ถูกดึงขึ้นโดยตัวต้านทาน

การทดสอบ LED

ไฟ LED ควรสว่างขึ้นเมื่อคุณใช้พลังงาน (เช่น 5V) และกราวด์กับบอร์ดฝ่าวงล้อม

ขั้นตอนที่ 4: การบัดกรี N-Channel MOSFET

การบัดกรี N-Channel MOSFET
การบัดกรี N-Channel MOSFET
การบัดกรี N-Channel MOSFET
การบัดกรี N-Channel MOSFET
การบัดกรี N-Channel MOSFET
การบัดกรี N-Channel MOSFET
การบัดกรี N-Channel MOSFET
การบัดกรี N-Channel MOSFET

การบัดกรี AO3400 N-Channel MOSFET

MOSFET นี้อยู่ในแพ็คเกจ SOT-23 เราจำเป็นต้อง "ซ้อน" มันบน LED และเพิ่มลวดด้วย:

  1. ใส่สารบัดกรีและดีบุกทั้งสามขั้ว
  2. ใช้แหนบเพื่อวาง MOSFET ไว้ด้านบนของ LED 0805 ขั้ว S ควรสัมผัสด้านบนของตัวเก็บประจุ
  3. บัดกรีขั้ว S ด้วยปลายตัวเก็บประจุดังแสดงในรูปภาพ
  4. ตัดลวดแกนเดี่ยว AWG #30 ส่วนเล็กๆ แล้วเอาสารเคลือบออกประมาณ 1 ซม.
  5. ใช้หัวแร้งเพื่อละลายบัดกรีในรู XSHUT จากด้านล่าง และใส่ลวด #30 จากด้านบน ดังแสดงในรูปภาพ
  6. บัดกรีปลายด้านบนของสายเข้ากับขั้ว MOSFET D
  7. ตัดลวดเสริมออก

หมายเหตุ: ขั้วต่อ MOSFET S เชื่อมต่อกับปลายตัวเก็บประจุดังแสดงในภาพ ปลายนี้เป็นขั้วกราวด์ ขั้วต่อ MOSFET D เชื่อมต่อกับพิน XSHUT เดิม

Terminal G ไม่ได้เชื่อมต่อในขณะนี้ ตำแหน่งของมันอยู่เหนือตัวต้านทานแบบดึงขึ้นบางตัว ตรวจสอบให้แน่ใจว่ามีช่องว่างระหว่างกัน (N-MOS และตัวต้านทาน) และไม่สัมผัสกัน

ขั้นตอนที่ 5: การเดินสายอาร์เรย์เซนเซอร์

การเดินสายไฟอาร์เรย์เซนเซอร์
การเดินสายไฟอาร์เรย์เซนเซอร์
การเดินสายไฟอาร์เรย์เซนเซอร์
การเดินสายไฟอาร์เรย์เซนเซอร์
การเดินสายไฟอาร์เรย์เซนเซอร์
การเดินสายไฟอาร์เรย์เซนเซอร์

การเดินสายไฟทั่วไป

รถโดยสารประจำทางรวมถึง:

  • พลังวีซีซี แดงในรูป. ฉันใช้ Arduino nano กับลอจิก 5v กระดานฝ่าวงล้อมมี LDO และตัวเลื่อนระดับ ดังนั้นจึงปลอดภัยที่จะใช้ 5v เป็น Vin
  • พื้น. สีดำในภาพ
  • เอสดีเอ สีเขียวในภาพ
  • เอสซีแอล สีเหลืองในรูป

สี่บรรทัดนี้เป็นบรรทัดทั่วไป ตัดสายไฟตามความยาวที่เหมาะสมและบัดกรีแบบขนานกับโมดูลเซ็นเซอร์ทั้งหมด ฉันใช้ 20 ซม. จาก Arduino ถึงเซ็นเซอร์ตัวแรกและ 5 ซม. หลังจากนั้น

สายไฟ XSHUTN และ GPIO

สายสีขาวขนาด 20 ซม. มาจากพินควบคุม Arduino ถึงพิน XSHUTN ของเซ็นเซอร์ตัวแรก นี่คือสายควบคุมที่จำเป็นในการนำชิป VL53L0X ตัวแรกออกจากการรีเซ็ตและเปลี่ยนที่อยู่ I2C

สายสีขาว 5 ซม. ระหว่างแต่ละโมดูลคือสายควบคุมสายโซ่เดซี่ ชิปอัปสตรีม (เช่น ชิป #3) GPIO pad เชื่อมต่อกับดาวน์สตรีม (เช่น ชิป #4) ขา XSHUTN (เทอร์มินัล N-Channel MOSFET G)

ระวังอย่าให้ขั้ว G สัมผัสกับตัวต้านทานด้านล่าง คุณสามารถเพิ่มเทปฉนวนในช่องว่าง สามารถใช้แผ่นซับป้องกันที่มาพร้อมกับชิป VL53L0X ได้ที่นี่

ใช้ปืนความร้อนติดสายควบคุม

กาวร้อน

ดังที่คุณเห็นในภาพ มีกาวร้อนหยดบนสายควบคุมสีขาว ใกล้กับเทอร์มินัล N-MOS G ขั้นตอนนี้สำคัญมากและจำเป็นอย่างยิ่ง การบัดกรีแบบลอยตรงไปยังขาของส่วนประกอบ SMD นั้นอ่อนมาก แม้แต่แรงกดเล็กน้อยบนลวดก็อาจทำให้ขาหักได้ ทำตามขั้นตอนนี้อย่างเบามือ

การทดสอบ LED

เมื่อคุณจ่ายไฟ (เช่น 3.3v-5v) และกราวด์กับอาร์เรย์เซ็นเซอร์ LED บนโมดูลแรกควรตอบสนองด้วยระดับลอจิกของสาย XSHUTN หากคุณเชื่อมต่อ XSHUTN กับลอจิกสูง (เช่น 3.3v-5v) ไฟ LED ควรดับ หากคุณเชื่อมต่อสาย XSHUTN กับพื้นต่ำ (กราวด์) ไฟ LED บนโมดูลแรกควรติดสว่าง

สำหรับโมดูลที่ตามมาทั้งหมด LED ควรดับลง

การทดสอบนี้ดำเนินการก่อนเชื่อมต่อกับ Arduino

ขั้นตอนที่ 6: การทำ Sensor Array ให้เสร็จ

Image
Image
เสร็จสิ้นอาร์เรย์เซนเซอร์
เสร็จสิ้นอาร์เรย์เซนเซอร์
เสร็จสิ้นอาร์เรย์เซนเซอร์
เสร็จสิ้นอาร์เรย์เซนเซอร์
เสร็จสิ้นอาร์เรย์เซนเซอร์
เสร็จสิ้นอาร์เรย์เซนเซอร์

การทดสอบโซ่เดซี่

ตอนนี้เราต้องการทดสอบว่าการเปลี่ยนที่อยู่ I2C ใช้ได้กับเซ็นเซอร์ทั้งหมดในอาร์เรย์หรือไม่ ดังที่ได้กล่าวมาแล้ว ชิปตัวแรกถูกควบคุมโดย Arduino ชิปตัวที่สองถูกควบคุมโดยชิปตัวแรกเป็นต้น

  1. ติดตั้งบอร์ดขนมปัง 5V และ Ground rail เชื่อมต่อโดยตรงจาก adriano 5V และกราวด์ ปริมาณการใช้กระแสไฟสำหรับเซ็นเซอร์แต่ละตัวได้รับการจัดอันดับ 19ma ในแผ่นข้อมูล
  2. เพิ่มตัวเก็บประจุบนรางจ่ายไฟเพื่อช่วยให้ Vin เสถียร
  3. เชื่อมต่อ Vin และ Ground จากอาร์เรย์เซ็นเซอร์กับรางจ่ายไฟ
  4. เชื่อมต่อ SDA กับ arduino Nano pin A4 (อาจแตกต่างกันสำหรับไมโครคอนโทรลเลอร์อื่น)
  5. เชื่อมต่อ SCL กับ arduino Nano pin A5 (อาจแตกต่างกันสำหรับไมโครคอนโทรลเลอร์อื่น)
  6. เชื่อมต่อสาย XSHUTN กับ Arduino Nano pin D2 (สามารถเปลี่ยนเป็นแบบร่างได้)
  7. ไปที่ github https://github.com/FuzzyNoodle/Fuzzy-Radar แล้วดาวน์โหลดไลบรารี่
  8. เปิดตัวอย่าง "Daisy_Chain_Testing" และอัปโหลดแบบร่าง

หากทุกอย่างทำงานได้ คุณจะเห็นไฟ LED แสดงสถานะสว่างขึ้นทีละตัว คล้ายกับวิดีโอคลิปด้านบน

คุณยังสามารถเปิด Serial Window และดูความคืบหน้าในการเริ่มต้น ผลลัพธ์จะปรากฏดังนี้:

กำลังเปิดพอร์ต เปิดพอร์ต ร่างเริ่มต้น ตั้งค่าชิป 0 เข้าสู่โหมดรีเซ็ต ไฟ LED แสดงสถานะทั้งหมดควรดับลง ตอนนี้กำหนดค่าเซ็นเซอร์ LED ควรสว่างขึ้นทีละดวง การกำหนดค่าชิป 0 - รีเซ็ตที่อยู่ I2C เป็น 83 - เริ่มต้นเซ็นเซอร์ การกำหนดค่าชิป 1 - รีเซ็ตที่อยู่ I2C เป็น 84 - เริ่มต้นเซ็นเซอร์ การกำหนดค่าชิป 2 - รีเซ็ตที่อยู่ I2C เป็น 85 - เริ่มต้นเซ็นเซอร์ การกำหนดค่าอาร์เรย์เรดาร์เสร็จสมบูรณ์

ประกอบที่ยึดและกรอบ

  1. วางโมดูล GY-530 แต่ละโมดูลอย่างระมัดระวังด้วยสกรู M2x10 อย่ากด MOSFET หรือดึงสายไฟ XSHUTN
  2. วางที่ยึดแต่ละอันลงในกรอบวงกลม ใช้กาวร้อนติดชิ้นส่วน

อีกครั้ง สกรู M2 ตัวจับยึด และโครงทรงกลมใช้สำหรับวางเซ็นเซอร์ในลักษณะวงกลม คุณอาจใช้วิธีอื่น เช่น การใช้กระดานการ์ด ไม้จำลอง ดินเหนียว หรือแม้แต่การทากาวร้อนบนกระป๋อง

ไฟล์ที่พิมพ์ 3 มิติที่ฉันใช้มีให้ด้านล่าง กรอบวงกลมมี 9 โมดูล และแต่ละโมดูลแยกจากกัน 10 องศา หากคุณมีสายตาที่เฉียบคม มี 10 โมดูลในรูปภาพก่อนหน้า เหตุผล? อธิบายด้านล่าง…

ถอดแผ่นป้องกันออก

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

เกี่ยวกับแผ่นป้องกัน แผ่นข้อมูลระบุว่า: "ลูกค้าต้องถอดออกก่อนติดตั้งกระจกครอบ" รูเล็กๆ สองรู (ตัวปล่อยและตัวรับ) บนชิป VL53L0X มีความเสี่ยงต่อมลภาวะ เช่น ฝุ่น จารบี กาวร้อน ฯลฯ…

เมื่อปนเปื้อนแล้ว ช่วงอาจลดลง และการอ่านค่าอาจลดลงอย่างเห็นได้ชัด หนึ่งในโมดูลทดสอบของฉันเกิดมลพิษจากกาวดินโดยไม่ได้ตั้งใจ ระยะการทำงานลดลงเหลือ 40 ซม. และการอ่านระยะทางเพิ่มขึ้นอย่างผิดพลาด 50% ดังนั้นจงระวัง!

ขั้นตอนที่ 7: รับข้อมูล

Image
Image
Laser Tracer (สาธิต)
Laser Tracer (สาธิต)

การใช้ตัวอย่าง Raw_Data_Serial_Output

ตอนนี้เราต้องการดูข้อมูลจากอาร์เรย์เซ็นเซอร์ของเรามาก ในห้องสมุด Arduino บน GitHub:

https://github.com/FuzzyNoodle/Fuzzy-Radar

มีตัวอย่างที่เรียกว่า Raw_Data_Serial_Output ตัวอย่างนี้แสดงเอาต์พุตข้อมูลดิบจากอาร์เรย์เซ็นเซอร์ ค่าเอาต์พุตมีหน่วยเป็นมิลลิเมตร

หลังจากเริ่มต้นเซ็นเซอร์แล้ว ควรเห็นสิ่งนี้ในหน้าต่างซีเรียลเมื่อคุณโบกมือผ่านเซ็นเซอร์:

อ้างถึงคลิปวิดีโอสำหรับการสาธิตสด

การใช้ตัวอย่าง Fuzzy_Radar_Serial_Output

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

  • ระยะห่างเป็นมิลลิเมตร ซึ่งสัมพันธ์กับพื้นผิวเซ็นเซอร์ การคืนค่า 0 หมายความว่าเป้าหมายอยู่นอกช่วง
  • มุมเป็นองศาบนระนาบแนวนอน รหัสที่คาดว่าเซ็นเซอร์จะมีระยะห่างเท่า ๆ กัน การคืนค่า 0 องศาหมายความว่าเป้าหมายอยู่ที่ตำแหน่งกึ่งกลางของอาร์เรย์

อัลกอริทึมการกรองบางตัวถูกนำไปใช้ในไลบรารี:

  • การกำจัดเสียงรบกวน:

    • การอ่านแบบสั้น (ในแง่ของจำนวนตัวอย่าง) ถือเป็นสัญญาณรบกวนและจะถูกลบออก
    • การอ่านที่อยู่ห่างไกลจากค่าเฉลี่ยจะถูกลบออก
  • การคำนวณมุมน้ำหนัก (ดูภาพประกอบด้านบน)

    • วัตถุเป้าหมายจะถือว่าเป็นพื้นผิวเรียบ
    • หากเซ็นเซอร์ตรวจจับวัตถุหลายตัวพร้อมกัน ระบบจะคำนวณน้ำหนักสำหรับเซ็นเซอร์แต่ละตัว
    • น้ำหนักของเซ็นเซอร์แต่ละตัวสัมพันธ์ผกผันกับระยะทาง
    • เทวดาผลลัพธ์คำนวณจากมุมถ่วงน้ำหนักของเซ็นเซอร์แต่ละตัว
  • การเลือกเป้าหมายหลัก:

    • หากมีกลุ่มการอ่านมากกว่าหนึ่งกลุ่ม กลุ่มที่กว้างที่สุด (ที่มีจำนวนการอ่านเซนเซอร์มากกว่า) จะยังคงอยู่
    • ตัวอย่างเช่น หากคุณวางมือสองข้างไว้หน้าอาร์เรย์เซ็นเซอร์ มือที่ตรวจพบโดยเซ็นเซอร์จำนวนมากขึ้นจะยังคงอยู่
  • การเลือกเป้าหมายที่ใกล้ที่สุด:

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

ระยะและมุมเอาต์พุตจะปรับให้เรียบผ่านฟิลเตอร์กรองความถี่ต่ำ

ใน Raw_Data_Serial_Output การอ่านระยะทางดิบจะถูกแปลงเป็นค่าระยะทางและมุม เมื่อคุณอัปโหลดภาพร่างแล้ว คุณสามารถเปิดหน้าต่างอนุกรมเพื่อดูผลลัพธ์ที่คล้ายกับสิ่งนี้:

ไม่พบวัตถุ ไม่พบวัตถุไม่พบวัตถุ ระยะทาง = 0056 มุม = 017 ระยะทาง = 0066 มุม = 014 ระยะทาง = 0077 มุม = 011 ระยะทาง = 0083 มุม = 010 ระยะทาง = 0081 มุม = 004 ระยะทาง = 0082 มุม = 000 ระยะทาง = 0092 มุม = 002 ระยะทาง = 0097 มุม = 001 ระยะทาง = 0096 มุม = 001 ระยะทาง = 0099 มุม = 000 ระยะทาง = 0101 มุม = -002 ระยะทาง = 0092 มุม = -004 ระยะทาง = 0095 มุม = -007 ระยะทาง = 0101 มุม = -008 ระยะทาง = 0112 มุม = -014 ระยะทาง = 0118 มุม = -017 ระยะทาง = 0122 มุม = -019 ระยะทาง = 0125 มุม = -019 ระยะทาง = 0126 มุม = -020 ระยะทาง = 0125 มุม = -022 ระยะทาง = 0124 มุม = -024 ระยะทาง = 0133 มุม = -027 ระยะทาง = 0138 มุม = - 031 ระยะทาง = 0140 มุม = -033 ระยะทาง = 0136 มุม = -033 ระยะทาง = 0125 มุม = -037 ระยะทาง = 0120 มุม = -038 ระยะทาง = 0141 มุม = -039 ไม่พบวัตถุ ไม่พบวัตถุ ไม่พบวัตถุ

ตอนนี้ คุณมีเรดาร์ (LIDAR):

  • เล็กกว่าโมดูลเซ็นเซอร์อัลตราโซนิก
  • ไม่มีชิ้นส่วนที่เคลื่อนไหว
  • สแกนที่ 40 Hz
  • รูปทรงคล้ายเข็มขัด ใส่กรอบกลมได้
  • ใช้สายไฟควบคุมเพียงสามเส้น รวมกำลังและสายดิน
  • มีช่วงตั้งแต่ 30 มม. ถึงประมาณ 1,000 มม.

ในขั้นตอนต่อไปนี้ เราจะแสดงการสาธิตเจ๋งๆ ให้คุณดู!

ขั้นตอนที่ 8: Laser Tracer (สาธิต)

Image
Image
Laser Tracer (สาธิต)
Laser Tracer (สาธิต)

นี่เป็นตัวอย่างหนึ่งของการใช้ Stationary Radar ที่เราสร้างขึ้นจากขั้นตอนก่อนหน้านี้ ขั้นตอนนี้ไม่ได้เขียนอย่างละเอียด เนื่องจากเป็นการสาธิตเรดาร์ โดยทั่วไป คุณต้องมีรายการเพิ่มเติมเหล่านี้เพื่อสร้างโครงการสาธิตนี้:

  • เซอร์โวสองตัว
  • หัวปล่อยปากกาเลเซอร์
  • ทรานซิสเตอร์ MOSFET หรือ NPN เพื่อควบคุมเอาต์พุตของหัวเลเซอร์
  • แหล่งพลังงานสำหรับเซอร์โว ควรแยกออกจากไมโครคอนโทรลเลอร์

สามารถดาวน์โหลดรหัสได้ที่นี่

โปรดดูวิดีโอที่ให้ไว้

ขั้นตอนที่ 9: จ้องมอง Poopeyes (สาธิต)

Image
Image

สาธิตการใช้เรดาร์เพื่อติดตามตำแหน่งของวัตถุและระยะทาง

แนะนำ: