Სარჩევი:

არდუინო სუმო რობოტი: 5 ნაბიჯი
არდუინო სუმო რობოტი: 5 ნაბიჯი

ვიდეო: არდუინო სუმო რობოტი: 5 ნაბიჯი

ვიდეო: არდუინო სუმო რობოტი: 5 ნაბიჯი
ვიდეო: REAL RACING 3 LEAD FOOT EDITION 2024, ნოემბერი
Anonim
არდუინო სუმო რობოტი
არდუინო სუმო რობოტი

სანამ დავიწყებ

რა არის სუმოს რობოტი?

ეს არის თვითკონტროლირებადი რობოტები სპეციფიკური ზომებითა და მახასიათებლებით, ის ასევე შექმნილია მტრულად განწყობილი ფორმით, რაც მას შესაძლებლობას აძლევს მონაწილეობა მიიღოს კონკურსებსა და შეჯიბრებებში სხვა რობოტებთან ერთად.

სახელი "სუმო" წარმოიშვა ძველი იაპონური სპორტიდან, რომელიც ორი მეტოქე იბრძვის რინგზე, თითოეული მათგანი ცდილობს მეორე მეტოქის გამოძევებას მისგან და ეს არის ის, რაც რობოტებმა უნდა გააკეთონ სუმოს რობოტიკის შეჯიბრებებშიც, სადაც ორი რონგში მოთავსებული რობოტები და ერთმანეთი ცდილობენ მეტოქის გამოძევებას.

Იდეა:

ააშენეთ რობოტი გარკვეული სპეციფიკაციებით და შეჯიბრის კანონების შესაბამისად (სუმო), ეს რობოტი უნდა იყოს ზუსტი განზომილება, რომ იბრძოლოს და გადარჩეს, რათა ბეჭედიდან არანაირად არ გადალახოს.

მოდით შევხედოთ რობოტების კონკურსის სუმო კანონს:

მე აგიხსნით რამდენიმე მნიშვნელოვან როლს, რომელიც უნდა გაითვალისწინოთ საკუთარი SUMO- ს შექმნისას ის ასევე დაგეხმარებათ წარმოიდგინოთ და ინოვაციოთ საკუთარი იდეა ღრმა დეტალების გარეშე.

1. ზომები: მაქსიმალური სიგანე 20 სმ, მაქსიმალური სიგრძე 20 სმ, სიმაღლე არ არის მითითებული.

2. ფორმა: რობოტის ფორმა შეიძლება შეიცვალოს რბოლის დაწყების შემდეგ, მაგრამ განუყოფელი ნაწილების გარეშე, რომ იყოს ერთი ცენტრალური ობიექტი.

3. წონა: არ აღემატება 3 კგ.

4. რობოტი უნდა იყოს თვითკონტროლი.

ნაბიჯი 1: კომპონენტები

Image
Image
გამოიყენება თითოეული კომპონენტისთვის
გამოიყენება თითოეული კომპონენტისთვის

1 არდუინო ანო 3

2 DC ძრავა

1 L298N ორმაგი H ხიდი არდუინოსთვის

1 ულტრაბგერითი სენსორი

2 IR TCRT5000

1 ბატარეა 9 ვ

AA ბატარეა 4 * 1.5 v ცალი + ბატარეის სახლი

4 Robot Wheels

ჯუმბერის მავთულები

ნაბიჯი 2: იყენებს თითოეულ კომპონენტს

გამოიყენება თითოეული კომპონენტისთვის
გამოიყენება თითოეული კომპონენტისთვის
გამოიყენება თითოეული კომპონენტისთვის
გამოიყენება თითოეული კომპონენტისთვის

ახლა ჩვენ გვაქვს საჭირო კომპონენტები, ასე რომ მოდით წავიდეთ დეტალურად, რომ ვიცოდეთ რისთვის გამოიყენება..

1- არდუინო ანო 3

ეს არის მთავარი დაფა, რომელიც აკონტროლებს ყველა ნაწილს და აკავშირებს მას ერთმანეთთან

2- DC ძრავა

რაც რობოტს ეხმარება მანევრირებაში და გადაადგილება კონკურენციის რგოლში

4- L298N ორმაგი H ხიდი არდუინოსთვის

ეს არის პატარა პანელი, რომელიც უზრუნველყოფს ძრავების მუდმივ ძაბვას, ასევე არდუინოს ფირფიტის მხარდაჭერას მოძრაობისა და ძაბვის კარგი კონტროლით.

5- ულტრაბგერითი სენსორი

ულტრაბგერითი სენსორი გამოიყენება მოწინააღმდეგის რობოტის დასადგენად და ჩვეულებრივ მოთავსებულია რობოტის თავზე.

6- IR TCRT5000

როგორც უკვე აღვნიშნეთ, საკონკურსო ბეჭედი შექმნილია გარკვეულ ზომებში და მას აქვს ორი ფერი, შევსება შავია და ჩარჩო თეთრი. კონკურსანტი არ უნდა გავიდეს. ამიტომ, ჩვენ ვიყენებთ IR სენსორს, რათა დავრწმუნდეთ, რომ რობოტი არ იქნება ბეჭედიდან. ამ სენსორს აქვს უნარი განასხვავოს ბეჭდის ფერები).

7- ბატარეა 9 ვ

იგი მხარს უჭერს მთავარ დაფას (არდუინო) მნიშვნელოვანი ძაბვით.

8- AA ბატარეა 4 * 1.5 ვ ცალი + ბატარეის სახლი

ის მხარს უჭერს ორ ძრავას (DC ძრავა) მნიშვნელოვანი ძაბვით და ის უნდა იყოს გამოყოფილი, რათა უზრუნველყოს ბორბლების სრული ძალა.

9- მხტუნავი მავთულები

ნაბიჯი 3: დიზაინი

დიზაინი
დიზაინი
დიზაინი
დიზაინი

მე გავაკეთე ორი სუმოს რობოტის დიზაინი Google 3D ესკიზის გამოყენებით, რადგან მე მომწონს ჩემი რობოტების ქაღალდის მოდელების შექმნა, სანამ აკრილის ნაწილებს ლაზერულ საჭრელზე დავჭრი. იმის შესამოწმებლად, რომ ყველა ნაწილი სწორად ჯდება ერთმანეთთან, მნიშვნელოვანია, რომ ქაღალდის მოდელები დაბეჭდილი იყოს ნახატების ზუსტი ზომით.

მე ვიღებ იმის გათვალისწინებას, რომ ვიზუალურად შევაფასო კონკურენციის კანონები, ამიტომ შეეცადეთ იფიქროთ უფრო შემოქმედებით დიზაინზე და გააკეთოთ თქვენი საკუთარი მოდელი.

იმისათვის, რომ უფრო მგრძნობიარე იყო რობოტის წონის მიმართ, ან შემდეგ დააყენეთ ბატარეები რობოტის წინ, წინა ფარით 45 გრადუსიანი კუთხით რობოტის სახით.

ჩამოტვირთეთ დიზაინი 1 აქედან

ჩამოტვირთეთ დიზაინი 2 აქედან

თქვენ ასევე შეგიძლიათ ჩამოტვირთოთ ქაღალდის მოდელის შაბლონი

გახსენით PDF ფაილი Adobe Acrobat Reader– ით (რეკომენდებული პროგრამული უზრუნველყოფა)

ნაბიჯი 4: თამაშის სტრატეგია

Image
Image
თამაშის სტრატეგია
თამაშის სტრატეგია

როგორც უკვე აღვნიშნეთ, რობოტს უნდა გააჩნდეს საკუთარი თავის კონტროლის უნარი, რაც გვაძლევს შესაძლებლობას დაპროგრამდეს იგი ერთზე მეტ გზაზე, ეს დამოკიდებულია იმაზე, თუ როგორ გსურთ რობოტი თამაშობდეს რინგზე ისევე, როგორც ნებისმიერ მეტოქეს. ნამდვილად მინდა თამაშის მოგება.

თამაშის სტრატეგია (1):

· ჩვენ მუდმივად ვაკეთებთ რობოტს თავის გარშემო.

· რობოტი ყოველთვის ზომავს მანძილს ბრუნვის დროს.

· თუ მოწინააღმდეგის მანძილი ნაკლებია (მაგალითად, 10 სმ), ეს ნიშნავს, რომ მოწინააღმდეგე პირდაპირ ჩვენს წინაშეა.

· რობოტმა უნდა შეწყვიტოს ბრუნვა და შემდეგ დაიწყოს თავდასხმა (წინ მიიწევს მთელი ძალით სწრაფად).

· რობოტმა ყოველთვის უნდა მიიღოს კითხვები IR სენსორებისგან, რომ დარწმუნდეს, რომ ჩვენ არ გადავლახეთ ბეჭდის საზღვარი.

· თუ წაიკითხავთ თეთრი ფერის IR არსებობას, მან უნდა გადაინაცვლოს რობოტი უშუალოდ სენსორის საპირისპირო მიმართულებით (მაგალითად: თუ წინა სენსორი, რომელიც რობოტის თეთრი ფერის მითითებას იძენს უკან მოძრაობს)!

თამაშის სტრატეგია (2):

· დასაწყისში რობოტი გაზომეთ მანძილი წინ.

· რობოტი გადაადგილდება იმავე გაზომილი მანძილის უკან.

· რობოტი წყვეტს ბრუნვას და შემდეგ იწყებს შეტევას მოულოდნელად (წინ მიიწევს მთელი ძალით).

· მოწინააღმდეგის მიმაგრების შემთხვევაში რობოტი უნდა ბრუნავდეს 45 გრადუსზე, სანამ გადარჩება რგოლიდან გადმოვარდნისას.

· რობოტმა ყოველთვის უნდა მიიღოს კითხვები IR სენსორებისგან, რომ დარწმუნდეს, რომ ჩვენ არ გადავლახეთ ბეჭდის საზღვარი.

· თუ წაიკითხავთ თეთრი ფერის IR არსებობას, მან უნდა გადაინაცვლოს რობოტი უშუალოდ სენსორის საპირისპირო მიმართულებით (მაგალითად: თუ წინა სენსორი, რომელიც რობოტის თეთრი ფერის მითითებას იძენს უკან მოძრაობს)!

ნაბიჯი 5: პროგრამირება

პროგრამირება
პროგრამირება

გთხოვთ შეამოწმოთ წრე და კოდი

* განახლება 2019-03-26

ჩამოტვირთეთ ულტრაბგერითი ბიბლიოთეკა აქედან და დააინსტალირეთ:

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

/*

აჰმედ აზუზის მიერ

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

ჩამოტვირთეთ lib აქედან პირველი

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

*/

#მოიცავს ულტრაბგერითი. თ

ულტრაბგერითი ულტრაბგერითი (4, 3);

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #განსაზღვრეთ IR_sensor_front A0 // წინა სენსორი #განსაზღვრეთ IR_sensor_back A1 // უკანა სენსორი int მანძილი;

ბათილად დაყენება ()

{Serial.begin (9600); დაგვიანება (5000); // როგორც სუმო თანამონაწილე როლები} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); მანძილი = ultrasonic.read (); როტაცია (200); // დაიწყეთ rotete if (მანძილი <20) {გაჩერება (); ხოლო (მანძილი 650 || IR_back> 650) {შესვენება;} შეფერხება (10); } if (IR_front <650) // <650 ნიშნავს თეთრ ხაზს {Stop (); დაგვიანება (50); უკანა მხარე (255); დაგვიანება (500); } if (IR_back <650) // {Stop (); დაგვიანება (50); წინ (255); დაგვიანება (500); } /* ----------- გამართვა ---------------- Serial.print (ულტრაბგერითი. რანგი (CM)); Serial.println ("სმ"); Serial.println ("IR წინა:"); Serial.println (IR_front); Serial.println ("IR უკან:"); Serial.println (IR_back); */

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

void FORWARD (int სიჩქარე) {// როდესაც ჩვენ გვსურს ნება მივცეთ Motor To წინსვლა, // უბრალოდ გააუქმეთ ეს ნაწილი მარყუჟის მონაკვეთზე. analogWrite (IN1, სიჩქარე); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, სიჩქარე); } // ------------------------------------------------ ბათილი უკან (int სიჩქარე) {// როდესაც ჩვენ გვსურს ნება მივცეთ Motor To წინსვლა, // უბრალოდ გააუქმეთ ეს ნაწილი მარყუჟის განყოფილებაში. analogWrite (IN1, 0); analogWrite (IN2, სიჩქარე); analogWrite (IN3, სიჩქარე); analogWrite (IN4, 0); } // ------------------------------------------------ ბათილად როტაცია (int სიჩქარე) {// როდესაც ჩვენ გვსურს ნება მივცეთ Motor To Rotate, // უბრალოდ გააუქმეთ ეს ნაწილი მარყუჟის განყოფილებაში. analogWrite (IN1, სიჩქარე); analogWrite (IN2, 0); analogWrite (IN3, სიჩქარე); analogWrite (IN4, 0); } // ------------------------------------------------ ბათილად გაჩერება () {// როდესაც ჩვენ გვსურს Motor To Stop, // უბრალოდ გააუქმეთ ეს ნაწილი მარყუჟის განყოფილებაში. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

გირჩევთ: