สารบัญ:

OAREE - 3D Printed - หุ่นยนต์หลีกเลี่ยงอุปสรรคเพื่อการศึกษาด้านวิศวกรรม (OAREE) ด้วย Arduino: 5 ขั้นตอน (พร้อมรูปภาพ)
OAREE - 3D Printed - หุ่นยนต์หลีกเลี่ยงอุปสรรคเพื่อการศึกษาด้านวิศวกรรม (OAREE) ด้วย Arduino: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: OAREE - 3D Printed - หุ่นยนต์หลีกเลี่ยงอุปสรรคเพื่อการศึกษาด้านวิศวกรรม (OAREE) ด้วย Arduino: 5 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: OAREE - 3D Printed - หุ่นยนต์หลีกเลี่ยงอุปสรรคเพื่อการศึกษาด้านวิศวกรรม (OAREE) ด้วย Arduino: 5 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Джо ДеСимон: Что, если бы 3D-печать была в 100 раз быстрее? 2024, มิถุนายน
Anonim
Image
Image
OAREE - 3D Printed - หุ่นยนต์หลีกเลี่ยงอุปสรรคเพื่อการศึกษาด้านวิศวกรรม (OAREE) ด้วย Arduino
OAREE - 3D Printed - หุ่นยนต์หลีกเลี่ยงอุปสรรคเพื่อการศึกษาด้านวิศวกรรม (OAREE) ด้วย Arduino
OAREE - 3D Printed - หุ่นยนต์หลีกเลี่ยงอุปสรรคเพื่อการศึกษาด้านวิศวกรรม (OAREE) ด้วย Arduino
OAREE - 3D Printed - หุ่นยนต์หลีกเลี่ยงอุปสรรคเพื่อการศึกษาด้านวิศวกรรม (OAREE) ด้วย Arduino

OAREE (หุ่นยนต์หลีกเลี่ยงอุปสรรคสำหรับการศึกษาด้านวิศวกรรม)

การออกแบบ: เป้าหมายของคำแนะนำนี้คือการออกแบบหุ่นยนต์ OAR (หุ่นยนต์หลีกเลี่ยงสิ่งกีดขวาง) ที่เรียบง่าย/กะทัดรัด พิมพ์ 3 มิติ ประกอบง่าย ใช้เซอร์โวหมุนต่อเนื่องในการเคลื่อนไหว และมีชิ้นส่วนที่ซื้อน้อยที่สุด ฉันเชื่อว่าฉันประสบความสำเร็จในการสร้างหุ่นยนต์ที่ยอดเยี่ยมนี้และตั้งชื่อมันว่า OAREE (หุ่นยนต์หลีกเลี่ยงอุปสรรคสำหรับการศึกษาด้านวิศวกรรม) หุ่นยนต์นี้จะตรวจจับสิ่งกีดขวาง หยุด มองไปทางซ้ายและขวา จากนั้นเลี้ยวไปในทิศทางที่ไม่มีสิ่งกีดขวางและเดินหน้าต่อไป

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

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

เสบียง

  • Arduino Uno 1x -
  • ชิลด์เซ็นเซอร์ V5 1x -
  • ที่วางแบตเตอรี่ 4xAA 1 ก้อนพร้อมสวิตช์เปิด/ปิด -
  • 1x SG90 เซอร์โว -
  • เซอร์โวหมุนต่อเนื่อง 2x -
  • สายไฟแบตเตอรี่ 1x 9V สำหรับ Arduino (เป็นทางเลือก) -
  • 1x HC-SR04 อัลตราโซนิกเซนเซอร์ -
  • สายจัมเปอร์ตัวเมีย-ตัวเมีย 4 เส้น -
  • 2x ยางรัด
  • 1x 9V แบตเตอรี่ (อุปกรณ์เสริม)
  • แบตเตอรี่ AA 4 ก้อน
  • สกรูขนาดเล็ก 4x (4 x 1/2 หรือสิ่งที่คล้ายกัน)
  • ไขควงฟิลลิป
  • กาวสำหรับยึดหนังยางกับล้อ

ขั้นตอนที่ 1: การพิมพ์ 3 มิติ: ตัวรถ ล้อเลื่อนหินอ่อน สลักเกลียว/น็อต 6 มม. และเมาท์เซนเซอร์อัลตราโซนิก

พิมพ์ 3 มิติ: ตัวรถ ล้อเลื่อนหินอ่อน สลักเกลียว/น็อต 6 มม. และเมาท์เซนเซอร์อัลตราโซนิก
พิมพ์ 3 มิติ: ตัวรถ ล้อเลื่อนหินอ่อน สลักเกลียว/น็อต 6 มม. และเมาท์เซนเซอร์อัลตราโซนิก
พิมพ์ 3 มิติ: ตัวรถ ล้อเลื่อนหินอ่อน สลักเกลียว/น็อต 6 มม. และเมาท์เซนเซอร์อัลตราโซนิก
พิมพ์ 3 มิติ: ตัวรถ ล้อเลื่อนหินอ่อน สลักเกลียว/น็อต 6 มม. และเมาท์เซนเซอร์อัลตราโซนิก
พิมพ์ 3 มิติ: ตัวรถ ล้อเลื่อนหินอ่อน สลักเกลียว/น็อต 6 มม. และเมาท์เซนเซอร์อัลตราโซนิก
พิมพ์ 3 มิติ: ตัวรถ ล้อเลื่อนหินอ่อน สลักเกลียว/น็อต 6 มม. และเมาท์เซนเซอร์อัลตราโซนิก

การพิมพ์ 3 มิติมี 5 ส่วน

  1. ร่างกาย
  2. ล้อ
  3. ลูกล้อหินอ่อน
  4. สลักเกลียว/น็อต 6 มม. (อุปกรณ์เสริม สามารถเปลี่ยนน็อต/สลักเกลียวโลหะได้)
  5. เมาท์เซนเซอร์อัลตราโซนิก

ไฟล์. STL ที่จำเป็นทั้งหมดจะรวมอยู่ในคำแนะนำนี้เช่นเดียวกับไฟล์ Sketchup แนะนำให้เติม 40%

ขั้นตอนที่ 2: ตั้งโปรแกรม Arduino

Image
Image
ประกอบหุ่นยนต์
ประกอบหุ่นยนต์

ส่งรหัสไปยัง Arduino UNO: ใช้ Arduino IDE ส่งรหัส (ในไฟล์แนบ) ไปยังโมดูล Arduino ของคุณ คุณจะต้องดาวน์โหลดและรวมไลบรารี servo.h และ newping.h เข้ากับภาพร่างนี้

โค้ดได้รับการแสดงความคิดเห็นอย่างละเอียด คุณจึงเห็นได้ว่าแต่ละคำสั่งทำอะไร คุณสามารถเปลี่ยนระยะห่างของ Ultrasonic Sensor ให้เป็นค่าที่มากขึ้นหรือน้อยลงได้หากต้องการ นี่เป็นรหัสเริ่มต้นและมีไว้เพื่อขยายและใช้สำหรับการพัฒนาโครงการต่อไป

// อุปสรรคหลีกเลี่ยงหุ่นยนต์// [email protected], [email protected], University of TN at Chattanooga, Electrical Engineering, FALL 2019 // Materials Required: // 1) Arduiino UNO, 2) Servo Sensor Shield v5.0, 3) HCSR04 Ulrasonic Sensor, 4) FS90 Servo (สำหรับ Ultrasonic Sensor) // 5&6) 2x SERVOS การหมุนอย่างต่อเนื่องสำหรับล้อ // 7) 16mm Marble สำหรับเดือยลูกล้อหลัง, 8&9) ยางรัด 2 เส้นสำหรับล้อ // 10- 15) 1x (4xAA) ที่ใส่แบตเตอรี่พร้อมสวิตช์เปิด/ปิด, 16&17) แบตเตอรี่ 9V พร้อมขั้วต่อสำหรับจ่ายไฟ Arduino UNO // 3D PRINT: // 18) ตัวเครื่อง ROBOT, 19&20) ล้อ 2x, 21) ลูกล้อหินอ่อน, 22) Ultrasonic Sensor เมานต์และสกรู 6 มม. (ดูไฟล์แนบ) //-------------------------------------- -------------------------------------------------- ----------------------------------------- #include // รวม Servo Library #include // รวม Newping Library //------------------------------------------ -------------------------------------------------- ------------------------------------ #define TRIGGER_PIN 1 2 // US ทริกเกอร์เพื่อพิน 12 บน Arduino #define ECHO_PIN 13 // US Echo เพื่อพิน 13 บน Arduino #define MAX_DISTANCE 250 // ระยะทางถึง ping (สูงสุด 250) ระยะทาง int = 100; //------------------------------------------------ -------------------------------------------------- ------------------------------- เซอร์โว US_Servo; // อัลตราโซนิกเซนเซอร์ เซอร์โว เซอร์โว Left_Servo; // เซอร์โวล้อซ้าย เซอร์โว Right_Servo; // โซนาร์เซอร์โวล้อขวา NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing การตั้งค่าพินและระยะทางสูงสุด //------------------------------------------------ -------------------------------------------------- ------------------------------- การตั้งค่าเป็นโมฆะ () // INPUT/OUTPUTS, WHERE TO ATTACH, SET INITIAL POSITIION/MOVEMENT { โหมดพิน (12, เอาต์พุต); // ตั้งค่าพินทริกเกอร์เป็นเอาต์พุตพินโหมด (13, INPUT); // ตั้งค่าหมุด Echo เป็นอินพุต US_Servo.attach(11); // US Servo ตั้งค่าเป็นพิน 11 US_Servo.write (90); // US SERVO มองไปข้างหน้า

Left_Servo.attach(9); // เซอร์โวล้อซ้ายเพื่อปักหมุด 9

Left_Servo.write (90); // ตั้งค่า SERVO ล้อซ้ายเป็น STOP

Right_Servo.attach(10); // ตั้งค่าเซอร์โวล้อขวาเป็นพิน 10

Right_Servo.write(90); // SERVO ล้อขวาตั้งไว้ที่ STOP ดีเลย์ (2000); // รอ 2 วินาที ระยะทาง = readPing(); // รับ Ping Distance ที่ตำแหน่งตรงไปข้างหน้าล่าช้า (100); // รอ 100 ms moveForward(); // หุ่นยนต์เคลื่อนที่ไปข้างหน้า } //------------------------------------------------ -------------------------------------------------- ------------------------------------- วงเป็นโมฆะ () { int distanceRight = 0; // เริ่มต้นระยะทางของสหรัฐอเมริกาไปทางขวาที่ 0 int DistanceLeft = 0; // เริ่มต้นระยะทางของสหรัฐฯ ไปทางซ้ายที่ 0 //US_Servo.write(90); // ศูนย์เซอร์โวของสหรัฐฯ // ล่าช้า (50); // US_Servo.write (70); // มองขวาเล็กน้อย // ล่าช้า (250); // US_Servo.write (110); // มองไปทางซ้ายเล็กน้อย // ล่าช้า (250); // US_Servo.write (90); //มองเซ็นเตอร์

ถ้า (ระยะทาง <= 20) // หุ่นยนต์เคลื่อนที่ไปข้างหน้า { moveStop(); // หุ่นยนต์หยุดที่ระยะทาง = DistanceLeft) // ตัดสินใจว่าจะเลี้ยวไปทางไหน { เลี้ยวขวา (); // ด้านขวามีระยะทางมากที่สุด ROBOT เลี้ยวขวาเป็นเวลา 0.3 วินาที (500); // Delay นี้กำหนดระยะเลี้ยว moveStop(); // Robot STOPS } อื่น ๆ { เลี้ยวซ้าย (); // ระยะห่างสูงสุดด้านซ้าย ROBOT เลี้ยวซ้ายเป็นเวลา 0.3 วินาที (500); // Delay นี้กำหนดระยะเลี้ยว moveStop(); // Robot STOPS } } อื่น { moveForward (); // หุ่นยนต์เคลื่อนที่ไปข้างหน้า } ระยะทาง = readPing (); // US READS NEW PING สำหรับทิศทางใหม่ของการเดินทาง } //------------------------------------------------ -------------------------------------------------- -------------------------------------------------- int lookRight() // อัลตราโซนิกเซนเซอร์ LOOK RIGHT FUNCTION { US_Servo.write (30); // เซอร์โวของสหรัฐฯ เลื่อนไปทางขวาเป็นมุมดีเลย์ (500); ระยะทาง int = readPing(); // ตั้งค่า ping สำหรับดีเลย์ขวา (100); US_Servo.write (90); // เซอร์โวของสหรัฐฯ ย้ายไปยังศูนย์ ระยะการส่งคืน; // กำหนดระยะทาง } //------------------------------------------------ -------------------------------------------------- ------------------------------------- int lookLeft () // Ultrasonic Sensor LOOK LEFT FUNCTION { US_Servo.write(150); // เซอร์โวของสหรัฐฯ เลื่อนไปทางซ้ายเป็นมุมดีเลย์ (500); ระยะทาง int = readPing(); // ตั้งค่า ping สำหรับดีเลย์ซ้าย (100); US_Servo.write (90); // เซอร์โวของสหรัฐฯ ย้ายไปยังศูนย์ ระยะการส่งคืน; // กำหนดระยะทาง } //------------------------------------------------ -------------------------------------------------- ------------------------------------- int readPing() // อ่านฟังก์ชัน Ping สำหรับ Ultrasonic Sensor { ล่าช้า (100); // 100ms ระหว่าง pings (เวลาปิงขั้นต่ำ = 0.29ms) int cm = sonar.ping_cm(); // รวบรวมระยะทาง PING และกำหนดเป็น cm if (cm==0) { cm=250; } กลับซม.; } //---------------------------------------------------------- -------------------------------------------------- -------------------------------- โมฆะ moveStop () // ROBOT STOP { Left_Servo.write (90); // LeftServo 180 ไปข้างหน้า 0 ย้อนกลับ Right_Servo.write (90); // RightServo 0 ไปข้างหน้า 180 ย้อนกลับ } //-------------------------------------- -------------------------------------------------- ---------------------------------------- โมฆะ moveForward () // ROBOT FORWARD { Left_Servo.write(180); // LeftServo 180 ไปข้างหน้า 0 ย้อนกลับ Right_Servo.write(0); // RightServo 0 ไปข้างหน้า 180 ย้อนกลับ } //-------------------------------------- -------------------------------------------------- ---------------------------------------- โมฆะ moveBackward () // ROBOT BACKWARD { Left_Servo.write(0); // LeftServo 180 ไปข้างหน้า 0 ย้อนกลับ Right_Servo.write (180); // RightServo 0 ไปข้างหน้า 180 ย้อนกลับ } //-------------------------------------- -------------------------------------------------- ---------------------------------------- ถือเป็นโมฆะเลี้ยวขวา () // ROBOT RIGHT { Left_Servo.write(180); // LeftServo 180 ไปข้างหน้า 0 ย้อนกลับ Right_Servo.write (90); // RightServo 0 ไปข้างหน้า 180 ย้อนกลับ } //-------------------------------------- -------------------------------------------------- ---------------------------------------- ถือเป็นโมฆะ turnLeft () // ROBOT LEFT { Left_Servo.write(90); // LeftServo 180 ไปข้างหน้า 0 ย้อนกลับ Right_Servo.write (0); // RightServo 0 ไปข้างหน้า 180 ย้อนกลับ } //-------------------------------------- -------------------------------------------------- ----------------------------------------

ขั้นตอนที่ 3: ประกอบหุ่นยนต์

Image
Image
ประกอบหุ่นยนต์
ประกอบหุ่นยนต์
ประกอบหุ่นยนต์
ประกอบหุ่นยนต์

ตอนนี้ถึงเวลาที่จะรวมหุ่นยนต์ของคุณเข้าด้วยกัน ขั้นตอนมีการระบุไว้ด้านล่าง

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

2) สิ่งที่แนบมากับลูกล้อหินอ่อน: ใช้สกรูขนาดเล็กสองตัวเพื่อยึดลูกล้อหินอ่อนเข้ากับสามเหลี่ยมสองรูปที่ด้านหลัง ลูกล้อหินอ่อนใช้แทนล้อหลังได้ง่ายและมีจุดหมุนด้านหลัง

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

4) ตำแหน่งแบตเตอรี่ 9V (ตัวเลือก): วางแบตเตอรี่ 9V + ขั้วต่อไฟ Arduino ด้านหลังเซอร์โวด้านหน้า

5) ชุดประกอบเมาท์เซนเซอร์อัลตราโซนิก: ใช้สกรูขนาดเล็กสองตัวเพื่อติดหนึ่งในสิ่งที่แนบมาเซอร์โวพลาสติกสีขาวที่ให้มาที่ด้านล่างของแผ่นเมาท์เซนเซอร์อัลตราโซนิก จากนั้น ใช้โบลต์/น็อตขนาด 6 มม. ที่พิมพ์ 3 มิติ (หรือเปลี่ยนโบลต์/น็อตโลหะ) เพื่อติดเคส Ultrasonic Sensor เข้ากับเพลท สุดท้าย วางเซ็นเซอร์ไว้ในเคสโดยให้หมุดหงายขึ้นแล้วล็อคที่ด้านหลังของเคส

6) 4x AA Battery Case: วางกล่องใส่แบตเตอรี่ AA ในพื้นที่สี่เหลี่ยมขนาดใหญ่โดยให้สวิตช์เปิด/ปิดหันไปทางด้านหลัง

7) Arduino Uno + V5 Sensor Shield: ติดชิลด์เข้ากับ Arduino และวางบนเมาท์เหนือเคสแบตเตอรี่ ขั้วต่อสายไฟควรหันไปทางซ้าย

หุ่นยนต์ของคุณถูกสร้างขึ้น! มีอะไรเหลือ? การเขียนโปรแกรม Arduino และการเชื่อมต่อสายจัมเปอร์: เซอร์โว อัลตราโซนิกเซนเซอร์ และพาวเวอร์ซัพพลาย

ขั้นตอนที่ 4: แนบสายเซนเซอร์

Image
Image
ที่เสร็จเรียบร้อย!!! เชื่อมต่อพาวเวอร์ซัพพลาย 9V Arduino เปิดชุดแบตเตอรี่ และเริ่มหลีกเลี่ยงอุปสรรคด้วย OAREE
ที่เสร็จเรียบร้อย!!! เชื่อมต่อพาวเวอร์ซัพพลาย 9V Arduino เปิดชุดแบตเตอรี่ และเริ่มหลีกเลี่ยงอุปสรรคด้วย OAREE

เชื่อมต่อสายเซอร์โวกับ V5 Shield:

  1. เซอร์โวหมุนต่อเนื่องด้านซ้ายติดกับ PIN 9
  2. เซอร์โวหมุนต่อเนื่องด้านขวาติดกับ PIN 10
  3. ด้านหน้า FS90 Servo ยึดติดกับ PIN 11

เชื่อมต่อหมุดเซ็นเซอร์อัลตราโซนิก (ผ่านสายจัมเปอร์ตัวเมียถึงตัวเมีย 4x) กับ V5 Shield:

  1. ทริกเกอร์ไปที่ PIN 12
  2. สะท้อนไปยัง PIN 13
  3. VCC ไปยังหมุดใด ๆ ที่มีเครื่องหมาย 'V'
  4. กราวด์กับหมุดใด ๆ ที่มีเครื่องหมาย 'G'

เชื่อมต่อกล่องแบตเตอรี่ AA กับ V5 Shield:

  1. ต่อสายสีแดงที่เป็นบวกเข้ากับขั้วต่อ VCC
  2. ต่อสายลบสีดำเข้ากับกราวด์เชื่อมต่อ

ขั้นตอนที่ 5: เสร็จสิ้น !!! เชื่อมต่อพาวเวอร์ซัพพลาย 9V Arduino เปิดชุดแบตเตอรี่ และเริ่มหลีกเลี่ยงอุปสรรคด้วย OAREE

Image
Image
ที่เสร็จเรียบร้อย!!! เชื่อมต่อพาวเวอร์ซัพพลาย 9V Arduino เปิดชุดแบตเตอรี่ และเริ่มหลีกเลี่ยงอุปสรรคด้วย OAREE
ที่เสร็จเรียบร้อย!!! เชื่อมต่อพาวเวอร์ซัพพลาย 9V Arduino เปิดชุดแบตเตอรี่ และเริ่มหลีกเลี่ยงอุปสรรคด้วย OAREE

ที่เสร็จเรียบร้อย!!

1) เชื่อมต่อแหล่งจ่ายไฟ Arduino 9V (อุปกรณ์เสริม)

2) เปิดก้อนแบตเตอรี่

3) เริ่มหลีกเลี่ยงอุปสรรคกับ OAREE !!!

ฉันแน่ใจว่าคุณจะชอบ OAREE เพื่อนใหม่ของคุณ หลังจากที่ได้ดูสิ่งกีดขวาง ถอยกลับ และเปลี่ยนทิศทาง OAREE ทำงานได้ดีที่สุดกับวัตถุขนาดใหญ่ที่ Ultrasonic Sensor สามารถ ping ได้ (เช่นผนัง) มีปัญหาในการปิงวัตถุขนาดเล็กเช่นขาเก้าอี้เนื่องจากพื้นที่ผิวและมุมมีขนาดเล็ก โปรดแชร์ พัฒนาเพิ่มเติม และแจ้งให้เราทราบถึงการปรับปรุงหรือข้อผิดพลาดที่จำเป็น นี่เป็นประสบการณ์การเรียนรู้ที่ยอดเยี่ยม และฉันหวังว่าคุณจะสนุกกับการทำโครงงานนี้เหมือนที่ฉันทำ!

การแข่งขันหุ่นยนต์
การแข่งขันหุ่นยนต์
การแข่งขันหุ่นยนต์
การแข่งขันหุ่นยนต์

รองชนะเลิศการประกวดหุ่นยนต์

แนะนำ: