Mundarija:

Arduino Sumo roboti: 5 qadam
Arduino Sumo roboti: 5 qadam

Video: Arduino Sumo roboti: 5 qadam

Video: Arduino Sumo roboti: 5 qadam
Video: Arduino robot sumo 2024, Noyabr
Anonim
Arduino Sumo roboti
Arduino Sumo roboti

Boshlashdan oldin.

Sumo roboti nima?

Bu o'ziga xos o'lchovlar va xususiyatlarga ega bo'lgan o'z-o'zini boshqaradigan robotlar, shuningdek, boshqa robotlar bilan musobaqalarda va musobaqalarda qatnashish uchun mos keladigan dushman shakllarda yaratilgan.

"Sumo" nomi qadimgi yapon sportidan kelib chiqqan bo'lib, u ikkita raqib bilan ringda jang qiladi, ularning har biri boshqa raqibini itarib yuborishga harakat qiladi va robotlar sumo robototexnika musobaqalarida ham shunday qilishlari kerak. robotlar ringga joylashtirilgan va bir -birlari raqibini itarib yuborishga urinishgan.

Fikr:

Muayyan texnik xususiyatlarga ega bo'lgan robotni yarating va bu raqobat qonunlariga mos kelsin (Sumo), bu robot hech qanday tarzda ringdan chiqib ketmaslik uchun kurashish va omon qolish uchun aniq o'lchamlarga ega bo'lishi kerak.

Keling, Sumo robotlarining raqobat qonunlarini ko'rib chiqaylik:

Men o'z SUMO -ni tuzishda e'tiborga olish kerak bo'lgan ba'zi muhim rollarni tushuntirib beraman, bu sizga o'z g'oyangizni chuqur tafsilotlargacha kiritmasdan tasavvur qilish va yangilashga yordam beradi.

1. Olchamlari: Maksimal kengligi 20 sm, Maksimal uzunligi 20 sm, Balandligi ko'rsatilmagan.

2. Shakl: robotning shakli poyga boshlanganidan keyin o'zgarishi mumkin, lekin ajralmas qismlarsiz bitta markaziy ob'ekt bo'lib qoladi.

3. Og'irligi: 3 kg dan oshmaydi.

4. Robot o'zini o'zi boshqarishi kerak.

1 -qadam: komponentlar

Image
Image
Har bir komponent uchun ishlatiladi
Har bir komponent uchun ishlatiladi

1 Arduino Ano3

2 shahar dvigateli

Arduino uchun 1 L298N ikki tomonlama ko'prik

1 Ultrasonik sensor

2 ta IR TCRT5000

1 batareya 9v

AA batareyasi 4 * 1,5 v dona + Batareya uyi

4 ta robot g'ildiraklari

o'tish simlari

2 -qadam: Har bir komponent uchun ishlatiladi

Har bir komponent uchun ishlatiladi
Har bir komponent uchun ishlatiladi
Har bir komponent uchun ishlatiladi
Har bir komponent uchun ishlatiladi

Endi bizda kerakli komponentlar bor, shuning uchun nima uchun ishlatilishini bilib olaylik..

1- Arduino Ano3

Bu barcha qismlarni boshqaradigan va uni bir -biriga bog'laydigan asosiy taxta

2- shahar dvigateli

Bu robotga manevr qilish va Raqobat doirasi ichida harakatlanishiga yordam beradi

4- Arduino uchun L298N dual H ko'prigi

Bu dvigatellarga doimiy kuchlanishni ta'minlaydigan, shuningdek, harakat va kuchlanishni yaxshi boshqaradigan Arduino plastinkasini qo'llab -quvvatlaydigan kichik panel.

5- Ultrasonik sensor

Ultrasonik sensor raqib robotining joylashishini aniqlash uchun ishlatiladi va odatda robotning yuqori qismiga joylashtiriladi.

6- IR TCRT5000

Yuqorida aytib o'tganimizdek, tanlov o'lchami ma'lum hajmda yaratilgan va u ikkita rangga ega, to'ldirish qora va ramka oq. Tanlov ishtirokchisi tashqariga chiqmasligi kerak. Shuning uchun biz robotni ringdan tashqariga chiqmasligiga ishonch hosil qilish uchun IQ sensoridan foydalanamiz. Bu sensor halqaning ranglarini farqlash qobiliyatiga ega).

7- Batareya 9v

U asosiy platani (Arduino) muhim kuchlanish bilan qo'llab -quvvatlaydi.

8- AA batareyasi 4 * 1,5 v dona + Batareya uyi

U ikkita dvigatelni (shahar motorini) muhim kuchlanish bilan qo'llab -quvvatlaydi va g'ildiraklar uchun to'liq kuch berish uchun uni ajratish kerak.

9- o'tish simlari

3 -qadam: Dizayn

Dizayn
Dizayn
Dizayn
Dizayn

Men Google 3D sketch-up yordamida ikkita sumo robotining konstruktsiyasini yaratdim, chunki men lazer to'sarda akril qismlarini kesishdan oldin robotlarning qog'oz modellarini yaratishni yaxshi ko'raman. Barcha qismlar bir -biriga to'g'ri joylashishini tekshirish uchun qog'oz modellari chizmalarning aniq hajmida chop etilishi muhim.

Va men raqobat qonunlarini aniq o'lchashni hisobga olaman, shuning uchun yanada ijodiy dizaynda o'ylashga va o'z modelingizni qilishga harakat qiling.

Robotning og'irligiga sezgir bo'lish uchun yoki batareyani robotning old qismiga 45 daraja burchak ostida joylashtiring.

1 -dizaynni bu erdan yuklab oling

Dizayn 2 ni bu erdan yuklab oling

Siz shuningdek qog'oz namunasi shablonini yuklab olishingiz mumkin

PDF faylini Adobe Acrobat Reader bilan oching (tavsiya etilgan dasturiy ta'minot)

4 -qadam: o'yin strategiyasi

Image
Image
O'yin strategiyasi
O'yin strategiyasi

Yuqorida aytib o'tganimizdek, robot o'zini o'zi boshqarish qobiliyatiga ega bo'lishi kerak, shuning uchun u bizga robotni har xil raqiblar kabi ringda qanday o'ynashini xohlashingizga qarab, uni bir necha usulda dasturlash imkoniyatini beradi. haqiqiy o'yinda g'alaba qozonishni xohlayman.

O'yin strategiyasi (1):

· Biz robotni doimiy ravishda o'z atrofida aylantiramiz.

· Robot har doim aylanish paytida masofani doimiy ravishda o'lchab turadi.

· Agar o'lchangan raqib masofasi (masalan, 10 sm) pastroq bo'lsa, demak, raqib to'g'ridan -to'g'ri robot oldida.

· Robot aylanishni to'xtatishi va keyin hujumni boshlashi kerak (tezlik bilan oldinga siljish).

· Robot biz chegara chegarasini kesib o'tmaganimizga ishonch hosil qilish uchun har doim IQ sensorlaridan o'qishni olishi kerak.

· Agar IQ oq rangda bo'lsa, u robotni to'g'ridan -to'g'ri sensorning teskari yo'nalishi bo'yicha harakatlantirishi kerak (masalan: Agar robotning oq rangini ko'rsatuvchi oldingi sensor orqaga qarab harakat qilsa)!

O'yin strategiyasi (2):

· Ishga tushganda, robot oldingi masofani o'lchaydi.

· Robot bir xil o'lchangan masofani orqaga qaytaradi.

· Robot aylanishni to'xtatadi va keyin to'satdan hujum qila boshlaydi (to'liq kuch bilan oldinga siljish).

· Agar raqib qo'shilsa, robot 45 daraja burilishi kerak, halqadan yiqilib tushganda esa omon qoladi.

· Robot biz chegara chegarasini kesib o'tmaganimizga ishonch hosil qilish uchun har doim IR sensorlaridan o'qishni olishi kerak.

· Agar oq rangli IR borligini o'qigan bo'lsangiz, u robotni to'g'ridan -to'g'ri sensorning teskari yo'nalishi bo'yicha harakatlantirishi kerak (masalan: agar robotning oq rangini ko'rsatuvchi oldingi sensor orqaga qarab harakat qilsa)!

5 -qadam: Dasturlash

Dasturlash
Dasturlash

Iltimos, sxemani va kodni tekshiring

* Yangilanish 26.03.2019

Ultrasonik kutubxonani avval bu erdan yuklab oling va o'rnating:

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

/*

Muallif: Ahmad Azouz

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

Libni avval shu erdan yuklab oling

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

*/

#Ultrasonik.h kiriting

Ultrasonik ultratovush (4, 3);

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #IR_sensor_front A0 // old sensori #IR_sensor_back A1 // orqa senson int masofasini aniqlang;

bo'sh o'rnatish ()

{Serial.begin (9600); kechikish (5000); // sumo moslik rollari bo'yicha} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); masofa = ultrasonik.read (); Aylantirish (200); // rotete boshlang, agar (masofa <20) {Stop (); while (masofa 650 || IR_back> 650) {tanaffus;} kechikish (10); } if (IR_front <650) // <650 oq chiziqni bildiradi {Stop (); kechikish (50); Orqaga (255); kechikish (500); } if (IR_back <650) // {Stop (); kechikish (50); Oldinga (255); kechikish (500); } /* ----------- disk raskadrovka ---------------- Serial.print (ultratovushli Rangni o'zgartirish (CM)); Serial.println ("sm"); Serial.println ("IR front:"); Serial.println (IR_front); Serial.println ("IR orqaga:"); Serial.println (IR_back); */

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

void FORWARD (int Speed) {// Biz Dvigatelning oldinga siljishiga ruxsat bermoqchi bo'lsak, // bu qismni pastadir qismida bekor qiling. analogWrite (IN1, Tezlik); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, Tezlik); } // -------------------------------------------- bekor BACKWARD (int Speed) {// Biz Dvigatelning oldinga siljishiga ruxsat bermoqchi bo'lsak, // bu qismni pastadir qismida bekor qiling. analogWrite (IN1, 0); analogWrite (IN2, Tezlik); analogWrite (IN3, Tezlik); analogWrite (IN4, 0); } // -------------------------------------------- bekor aylantirish (int Speed) {// Biz motorning aylanishiga ruxsat bermoqchi bo'lsak, // bu qismni pastadir qismida bekor qiling. analogWrite (IN1, Tezlik); analogWrite (IN2, 0); analogWrite (IN3, Tezlik); analogWrite (IN4, 0); } // -------------------------------------------- bekor bekor () {// Dvigatel to'xtashini xohlaganimizda, // bu qismni pastadir bo'limida bekor qiling. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

Tavsiya: