สารบัญ:

โครงการ 3: SonarDuino: 9 ขั้นตอน
โครงการ 3: SonarDuino: 9 ขั้นตอน

วีดีโอ: โครงการ 3: SonarDuino: 9 ขั้นตอน

วีดีโอ: โครงการ 3: SonarDuino: 9 ขั้นตอน
วีดีโอ: The Best Way To Turn Your XBOX Rumble Motor Into an Arduino Sound Activated DC Motor 2024, กันยายน
Anonim
Image
Image

เพื่อนงานอดิเรกที่รัก

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

ขั้นตอนที่ 1: สิ่งที่คุณต้องการ

เตรียมการสนับสนุน Ultrasonic Sensor
เตรียมการสนับสนุน Ultrasonic Sensor

ในการสร้างงานสร้างนี้ คุณจะต้องซื้อสิ่งต่อไปนี้:

Arduino นาโน: https://www.ebay.com/itm/USB-Nano-V3-0-ATmega328-16M-5V-Micro-controller-CH340G-board-For-Arduino/201601613488?hash=item2ef0647eb0:g:DkoAAOSwvYZZpOl0:rk:2:pf:0

บอร์ดต้นแบบ: https://www.ebay.com/itm/20pcs-set-4Size-Double-Side-Protoboard-Circuit-Universal-DIY-Prototype-PCB-Board/192076517108?epid=506557101&hash=item2cb8a70ef4:g:cQ4AAOSwN ~Zbl232:rk:13:pf:0

เซอร์โวมอเตอร์: https://www.ebay.com/itm/5pcs-POP-9G-SG90-Micro-Servo-motor-RC-Robot-Helicopter-Airplane-Control-Car-Boat/142931003420?hash=item21475a081c:rk:16:pf:0&var

อัลตราโซนิกเซนเซอร์: https://www.ebay.com/itm/5PCS-Ultrasonic-Sensor-Module-HC-SR04-Distance-Measuring-Sensor-for-arduino-SR04/170897438205?epid=18020663283&hash=item27ca47f5fd:g:w ~IAAOSw--xbD5Fp:rk:2:pf:0

ขั้นตอนที่ 2: เอกสาร

อย่างที่พวกคุณบางคนอาจทราบแล้ว โครงการนี้ได้รับแรงบันดาลใจจากโครงการโอเพนซอร์ซอื่นที่เรียกว่า “Arduino Radar Project” ซึ่งสร้างโดย Dejan จาก “How to Mechatronics” @ ลิงก์ต่อไปนี้: https://howtomechatronics.com/projects/arduino -radar-โครงการ/

อีกจุดหนึ่งที่ต้องมีเอกสารประกอบคือการดาวน์โหลดไลบรารีสองไลบรารีต่อไปนี้ในสภาพแวดล้อมการพัฒนาของคุณ:

Adafruit-GFX-Library:

Adafruit_SSD1306:

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

ขั้นตอนที่ 3: เตรียมการรองรับ Ultrasonic Sensor

เตรียมการสนับสนุน Ultrasonic Sensor
เตรียมการสนับสนุน Ultrasonic Sensor
เตรียมการสนับสนุน Ultrasonic Sensor
เตรียมการสนับสนุน Ultrasonic Sensor
เตรียมการสนับสนุน Ultrasonic Sensor
เตรียมการสนับสนุน Ultrasonic Sensor

นำกระดาษแข็งชิ้นใดก็ได้มาตัดตามขนาดของสายต่อที่ต่อกับเซ็นเซอร์ดังแสดงในภาพแรก หลังจากนั้น พับชิ้นสุดท้ายแล้วติดเข้ากับส่วนรองรับเซอร์โวมอเตอร์ เมื่อเสร็จแล้วให้กาวเซ็นเซอร์อัลตราโซนิกสองตัวตามภาพสุดท้าย โปรดทราบว่าควรบัดกรีส่วนหัวของเซ็นเซอร์เพื่อให้สายเคเบิลออกไปด้านหน้าเซ็นเซอร์ วิธีนี้จะช่วยให้สายเซ็นเซอร์ไม่รบกวนกันเมื่อใช้การหมุน 360 องศา

ขั้นตอนที่ 4: ติดตั้งทุกอย่างลงในบอร์ดสร้างต้นแบบ

ติดตั้งทุกอย่างลงในบอร์ดสร้างต้นแบบ
ติดตั้งทุกอย่างลงในบอร์ดสร้างต้นแบบ
ติดตั้งทุกอย่างลงในบอร์ดสร้างต้นแบบ
ติดตั้งทุกอย่างลงในบอร์ดสร้างต้นแบบ
ติดตั้งทุกอย่างลงในบอร์ดสร้างต้นแบบ
ติดตั้งทุกอย่างลงในบอร์ดสร้างต้นแบบ

ในขั้นตอนนี้ คุณจะเริ่มต้นด้วยการติดตั้งส่วนหัวที่เตรียมไว้ในขั้นตอนก่อนหน้าในเซอร์โวมอเตอร์ที่เกี่ยวข้อง เมื่อเซอร์โวมอเตอร์คุ้นเคยดีแล้ว คุณจะประกอบทุกอย่างเข้าด้วยกันเป็นบอร์ดต้นแบบ คุณจะเริ่มต้นด้วยการบัดกรี Arduino Nano จากนั้นติดกาวเซอร์โวที่อยู่ข้างๆ ในที่สุด คุณจะประสานจอแสดงผล OLED ขนาดเล็กที่ขอบอีกด้านของบอร์ด

ขั้นตอนที่ 5: การสร้างการเชื่อมต่อขั้นสุดท้าย

การเชื่อมต่อขั้นสุดท้าย
การเชื่อมต่อขั้นสุดท้าย
การเชื่อมต่อขั้นสุดท้าย
การเชื่อมต่อขั้นสุดท้าย
การเชื่อมต่อขั้นสุดท้าย
การเชื่อมต่อขั้นสุดท้าย

ขั้นตอนนี้จะสรุปด้านฮาร์ดแวร์ของโครงการนี้ คุณจะต้องปฏิบัติตามแผนผังที่ให้มาเพื่อสร้างการเชื่อมต่อที่จำเป็นทั้งหมด

ขั้นตอนที่ 6: การบูตโปรแกรม

กำลังบูตโปรแกรม
กำลังบูตโปรแกรม

มีสองรหัสที่คุณจะต้องบูต

Arduino (C):https://github.com/ReconaissantL/RadarDuino/blob/master/radarduino.ino

กำลังประมวลผล (java):https://github.com/ReconaissantL/RadarDuino/blob/master/radarduino_java.pde

เมื่อรันโค้ด คุณจะมีสองตัวเลือกให้เลือก:

ตัวเลือกที่ 1: การใช้จอแสดงผล OLED เพื่อที่คุณจะต้องตั้งค่าตัวแปร MODE ในโค้ด C เป็น 0

ตัวเลือกที่ 2: การใช้ Your Monitor เพื่อที่คุณจะต้องตั้งค่าตัวแปร MODE ในรหัส C เป็น 1 นอกจากนี้ คุณจะต้องดาวน์โหลดและติดตั้งสภาพแวดล้อมการพัฒนาการประมวลผล และดาวน์โหลดแบบอักษรเรดาร์จากลิงก์นี้: https:// github.com/lastralab/ArduinoRadar/blob/ma…

และเพิ่มไฟล์นั้นลงในไฟล์โค้ดประมวลผลของคุณ เพื่อให้โค้ดจาวาของคุณรู้จักฟอนต์เมื่อถูกเรียก

ขั้นตอนที่ 7: ทำความเข้าใจรหัส C

การทำความเข้าใจรหัส C
การทำความเข้าใจรหัส C

รหัสประกอบด้วยส่วนใหญ่สอง 'for' ลูป หนึ่งมีความสัมพันธ์กับการส่งต่อในขณะที่อีกคนหนึ่งมีความสัมพันธ์กับการส่งต่อ ภายในทั้งคู่ ฟังก์ชันหลัก draw_scanner() ซึ่งจะลากเส้นของเรดาร์ลงบนหน้าจอ ถูกเรียกหลายครั้ง หลังจากทดสอบการกำหนดค่าหลายแบบ ฉันได้ข้อสรุปว่าเราจำเป็นต้องเขียนทับเส้นเรดาร์สีขาว ณ เวลา t ด้วยเส้นเรดาร์เดียวกันนั้นเป็นสีดำ ณ เวลา t+1 เพื่อลบออก มิฉะนั้น การกะพริบจะเกิดขึ้นทุกครั้งที่คุณทำความสะอาดจอแสดงผลโดยใช้ฟังก์ชัน “clearDisplay()” ก่อนที่จะกดกริดพิกเซลใหม่ ขณะที่ฉันกำลังจัดการกับ 7 บรรทัด – เพื่อจุดประสงค์ในการออกแบบ ฉันต้องบันทึกและส่งอาร์เรย์จำนวนเต็มของ 7 องค์ประกอบ โดยที่แต่ละองค์ประกอบยืนสำหรับรัศมีระหว่างจุดศูนย์กลางของเรดาร์ไปยังวัตถุที่ตรวจพบ หากมี เมื่อคำนึงถึงสิ่งนี้ โค้ดที่เหลือควรตรงไปตรงมาเพื่อทำความเข้าใจ

ขั้นตอนที่ 8: ทำความเข้าใจกับโค้ด Java

ในการประมวลผล ฉันต้องเลี่ยงการเรียกใช้ฟังก์ชันสำหรับ serialEvent() ซึ่งใช้งานได้กับพอร์ตอนุกรมที่ชื่อ COM เท่านั้น ขณะที่ฉันทำงานบน Mac พอร์ตอนุกรมของฉันก็ใช้ชื่ออื่น ดังที่กล่าวไปแล้ว ฉันคลายแพ็กฟังก์ชันนั้นลงในฟังก์ชันหลักในการประมวลผล "draw()" ฉันได้อัปเดตแอปพลิเคชันเพื่อให้ตรงกับการออกแบบปฏิวัติเต็มรูปแบบ สุดท้าย ฉันได้อัปเดตรูปร่างและข้อความที่วาดทั้งหมดตามความกว้างของหน้าจอ เพื่อให้ผลิตภัณฑ์ขั้นสุดท้ายพอดีกับความละเอียดหน้าจอที่แตกต่างกัน ฉันได้ทดสอบทั้งความละเอียด 1000X1000 และ 500X500 แล้วและใช้งานได้ดี:)

ขั้นตอนที่ 9: สรุป

งานนี้สามารถอัพเกรดให้มีเซ็นเซอร์อัลตราโซนิก 3 ตัว แต่ละตัวครอบคลุมมุมมอง 120 หรือแม้กระทั่ง 4 เซ็นเซอร์ (90 องศา*4) -> เร็วขึ้น 360 องศา สแกน

คุณยังสามารถขยายช่วงของเรดาร์จาก 40 ซม. เป็น 60 ซม. หรือแม้แต่ 80 ซม. ฉันได้ทดสอบฟังก์ชัน pulseIn เป็นการส่วนตัวและปรับตัวแปร TIMEOUT ด้วยความเคารพ 40 ซม. ตัวแปรนี้ขึ้นอยู่กับหลายปัจจัย รวมถึงความยาวของการส่งพัลส์และพื้นผิวของวัตถุที่สะท้อนพัลส์

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

แนะนำ: