สารบัญ:

หุ่นยนต์ซูโม่ Arduino: 5 ขั้นตอน
หุ่นยนต์ซูโม่ Arduino: 5 ขั้นตอน

วีดีโอ: หุ่นยนต์ซูโม่ Arduino: 5 ขั้นตอน

วีดีโอ: หุ่นยนต์ซูโม่ Arduino: 5 ขั้นตอน
วีดีโอ: Sumo robot V.1 หุ่นยนต์ซูโม่อย่างง่าย 2024, พฤศจิกายน
Anonim
หุ่นยนต์ซูโม่ Arduino
หุ่นยนต์ซูโม่ Arduino

ก่อนที่เราจะเริ่มต้น.

หุ่นยนต์ซูโม่คืออะไร?

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

ชื่อ “ซูโม่” มาจากกีฬาเก่าแก่ของญี่ปุ่น ซึ่งก็คือคู่ต่อสู้สองคนต่อสู้กันเป็นสังเวียน แต่ละคนพยายามจะผลักคู่ต่อสู้ออกไป และนี่คือสิ่งที่หุ่นยนต์ควรทำในการแข่งขันหุ่นยนต์ซูโม่ด้วย หุ่นยนต์ที่วางอยู่ในวงแหวนและพยายามผลักคู่ต่อสู้ออกไป

ความคิด:

สร้างหุ่นยนต์ที่มีข้อกำหนดเฉพาะและเหมาะสมกับกฎหมายของการแข่งขันนั้นๆ (ซูโม่) หุ่นยนต์ตัวนี้ต้องมีขนาดที่แน่นอนเพื่อต่อสู้และเอาชีวิตรอดเพื่อไม่ให้ถูกข้ามออกจากวงแหวนแต่อย่างใด

มาดูกฎหมายการแข่งขันหุ่นยนต์ซูโม่กัน:

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

1. ขนาด กว้างสุด 20 ซม. ยาวสูงสุด 20 ซม. ไม่ระบุความสูง

2. รูปร่าง: รูปร่างหุ่นยนต์สามารถเปลี่ยนแปลงได้หลังจากเริ่มการแข่งขัน แต่ไม่มีชิ้นส่วนที่แยกออกไม่ได้เพื่อคงไว้ซึ่งความเป็นศูนย์กลาง

3. น้ำหนัก: ไม่เกิน 3 กก.

4. หุ่นยนต์ต้องควบคุมตนเองได้

ขั้นตอนที่ 1: ส่วนประกอบ

Image
Image
ใช้สำหรับแต่ละส่วนประกอบ
ใช้สำหรับแต่ละส่วนประกอบ

1 Arduino Ano3

มอเตอร์กระแสตรง 2 ตัว

1 L298N สะพาน Dual H สำหรับ Arduino

1 เซ็นเซอร์อัลตราโซนิก

2 IR TCRT5000

1 แบตเตอรี่ 9v

แบตเตอรี่ AA 4 * 1.5 v ชิ้น + แบตเตอรี

4 ล้อหุ่นยนต์

สายจัมเปอร์

ขั้นตอนที่ 2: ใช้สำหรับแต่ละส่วนประกอบ

ใช้สำหรับแต่ละส่วนประกอบ
ใช้สำหรับแต่ละส่วนประกอบ
ใช้สำหรับแต่ละส่วนประกอบ
ใช้สำหรับแต่ละส่วนประกอบ

ตอนนี้เรามีส่วนประกอบที่จำเป็นแล้ว เรามาดูรายละเอียดกันว่าใช้ทำอะไร..

1- Arduino Ano3

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

2- มอเตอร์กระแสตรง

ซึ่งช่วยให้หุ่นยนต์เคลื่อนที่และเคลื่อนที่ภายในวงแหวนของ COMPETING

4- L298N สะพาน H คู่สำหรับ Arduino

เป็นแผงขนาดเล็กที่ให้แรงดันไฟคงที่แก่มอเตอร์ รวมถึงการรองรับแผ่น Arduino ที่ควบคุมการเคลื่อนไหวและแรงดันไฟฟ้าได้ดี

5- เซ็นเซอร์อัลตราโซนิก

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

6- IR TCRT5000

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

7- แบตเตอรี่ 9v

รองรับเมนบอร์ด (Arduino) ด้วยแรงดันไฟฟ้าที่สำคัญ

8- แบตเตอรี่ AA 4 * 1.5 v ชิ้น + แบตเตอรี

รองรับมอเตอร์ทั้งสองตัว (DC Motor) ที่มีแรงดันไฟสำคัญและต้องแยกออกจากกันเพื่อให้แรงเต็มที่สำหรับล้อ

9- สายจัมเปอร์

ขั้นตอนที่ 3: ออกแบบ

ออกแบบ
ออกแบบ
ออกแบบ
ออกแบบ

ฉันได้ออกแบบหุ่นยนต์ซูโม่สองแบบโดยใช้ Google 3D Sketch-up เพราะฉันชอบสร้างแบบจำลองกระดาษของหุ่นยนต์ของฉันก่อนที่จะตัดชิ้นส่วนอะครีลิกบนเครื่องตัดเลเซอร์ เพื่อตรวจสอบว่าชิ้นส่วนทั้งหมดจะเข้ากันได้อย่างถูกต้อง สิ่งสำคัญคือต้องพิมพ์แบบจำลองกระดาษในขนาดที่แน่นอนของภาพวาด

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

เพื่อให้ไวต่อน้ำหนักของหุ่นยนต์มากขึ้นหรือใส่แบตเตอรี่ไว้ด้านหน้าหุ่นยนต์โดยให้ชิลด์หน้าทำมุม 45 องศากับรูปทรงของหุ่นยนต์

ดาวน์โหลดแบบที่ 1 จากที่นี่

ดาวน์โหลดแบบที่ 2 จากที่นี่

คุณสามารถดาวน์โหลดเทมเพลตโมเดลกระดาษ

เปิดไฟล์ PDF ด้วย Adobe Acrobat Reader (ซอฟต์แวร์ที่แนะนำ)

ขั้นตอนที่ 4: เล่นกลยุทธ์

Image
Image
เล่นกลยุทธ์
เล่นกลยุทธ์

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

กลยุทธ์การเล่น (1):

· เราจะสร้างหุ่นยนต์รอบตัวอย่างต่อเนื่อง

· หุ่นยนต์จะวัดระยะทางอย่างต่อเนื่องระหว่างการหมุนเสมอ

· หากระยะทางของฝ่ายตรงข้ามที่วัดได้ต่ำกว่า (เช่น 10 ซม.) แสดงว่าฝ่ายตรงข้ามอยู่ตรงหน้าเราโดยตรง

· หุ่นยนต์ต้องหยุดหมุนแล้วเริ่มโจมตี (เคลื่อนที่ไปข้างหน้าอย่างเต็มกำลังอย่างรวดเร็ว)

· หุ่นยนต์ต้องอ่านค่าจากเซ็นเซอร์ IR เสมอเพื่อให้แน่ใจว่าเราไม่ได้ข้ามเส้นวงแหวน

· หากอ่านค่า IR ของสีขาว หุ่นยนต์จะต้องเคลื่อนที่ไปในทิศทางตรงกันข้ามกับเซ็นเซอร์โดยตรง (เช่น หากเซ็นเซอร์ด้านหน้าซึ่งระบุสีขาวของหุ่นยนต์เคลื่อนที่ถอยหลัง)!

กลยุทธ์การเล่น (2):

· ที่หุ่นยนต์สตาร์ท ให้วัดระยะทางด้านหน้า

· หุ่นยนต์เคลื่อนที่กลับในระยะทางที่วัดได้เท่าเดิม

· หุ่นยนต์หยุดหมุนแล้วเริ่มโจมตีทันที (เคลื่อนที่ไปข้างหน้าอย่างเต็มกำลัง)

·ในกรณีที่ฝ่ายตรงข้ามติดหุ่นยนต์ต้องหมุน 45 องศาในขณะที่เอาตัวรอดหากหลุดออกจากวงแหวน

· หุ่นยนต์ต้องอ่านค่าจากเซ็นเซอร์ IR เสมอเพื่อให้แน่ใจว่าเราไม่ได้ข้ามเส้นวงแหวน

· หากอ่านค่า IR ของสีขาว หุ่นยนต์จะต้องเคลื่อนที่ไปในทิศทางตรงกันข้ามกับเซ็นเซอร์โดยตรง (เช่น หากเซ็นเซอร์ด้านหน้าซึ่งระบุสีขาวของหุ่นยนต์เคลื่อนที่ถอยหลัง)!

ขั้นตอนที่ 5: การเขียนโปรแกรม

การเขียนโปรแกรม
การเขียนโปรแกรม

โปรดตรวจสอบวงจรและรหัส

* อัพเดท 2019-03-26

ดาวน์โหลดไลบรารี Ultrasonic จากที่นี่ก่อนแล้วติดตั้ง:

github.com/ErickSimoes/Ultrasonic/blob/mas…

/*

โดย ahmed Azouz

www.instructables.com/id/How-to-Make-Ardu…

ดาวน์โหลด lib จากที่นี่ก่อน

github.com/ErickSimoes/Ultrasonic/blob/ma…

*/

#รวม Ultrasonic.h

อัลตราโซนิกอัลตราโซนิก(4, 3);

ค่าคงที่ IN1=5;

ค่าคงที่ IN2=6; ค่าคงที่ IN3=9; ค่าคงที่ IN4=10; #define IR_sensor_front A0 // เซ็นเซอร์ด้านหน้า #define IR_sensor_back A1 // ระยะ int ของเซ็นเซอร์ด้านหลัง;

การตั้งค่าเป็นโมฆะ ()

{ Serial.begin(9600); ล่าช้า (5000); // ตามบทบาทของซูโม่ } วงเป็นโมฆะ () { int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); ระยะทาง = Ultrasonic.read(); หมุน(200); // เริ่ม rotete if (ระยะทาง < 20) { Stop(); ในขณะที่ (ระยะทาง 650 || IR_back > 650) { หยุด;} ล่าช้า(10); } if (IR_front < 650) // < 650 หมายถึงเส้นสีขาว { Stop(); ล่าช้า (50); ย้อนกลับ(255); ล่าช้า (500); } ถ้า (IR_back < 650) // { หยุด (); ล่าช้า (50); ไปข้างหน้า(255); ล่าช้า (500); } /* ----------- การดีบัก ---------------- Serial.print(ultrasonic. Ranging(CM)); Serial.println("ซม."); Serial.println("หน้า IR:"); Serial.println (IR_front); Serial.println("IR back:"); Serial.println (IR_back); */

} //--------------------------------------------

void FORWARD (ความเร็ว int){ // เมื่อเราต้องการให้ Motor ก้าวไปข้างหน้า // เพียงแค่ทำให้ส่วนนี้เป็นโมฆะในส่วนลูป analogWrite (IN1, ความเร็ว); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, ความเร็ว); }//------------------------------------------- โมฆะ ย้อนกลับ (int Speed){ // เมื่อเราต้องการให้ Motor ก้าวไปข้างหน้า // เพียงแค่ทำให้ส่วนนี้เป็นโมฆะในส่วนลูป analogWrite (IN1, 0); analogWrite (IN2, ความเร็ว); analogWrite (IN3, ความเร็ว); analogWrite (IN4, 0); }//------------------------------------------- โมฆะ ROTATE (int Speed) {// เมื่อเราต้องการให้ Motor To Rotate // เพียงแค่ทำให้ส่วนนี้เป็นโมฆะในส่วนลูป analogWrite (IN1, ความเร็ว); analogWrite (IN2, 0); analogWrite (IN3, ความเร็ว); analogWrite (IN4, 0); }//------------------------------------------- โมฆะ Stop(){ // เมื่อเราต้องการให้ Motor To หยุด // เพียงแค่ทำให้ส่วนนี้เป็นโมฆะในส่วนลูป analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

แนะนำ: