Мазмұны:

Arduino Sumo робот: 5 қадам
Arduino Sumo робот: 5 қадам

Бейне: Arduino Sumo робот: 5 қадам

Бейне: Arduino Sumo робот: 5 қадам
Бейне: Sumo robot | Robo sumo | Robot sumo | Arduino robot yasash. робот сумо. Сумо робот @roboshopuz 2024, Қараша
Anonim
Ардуино сумо роботы
Ардуино сумо роботы

Біз бастамас бұрын

Сумо роботы дегеніміз не?

Бұл белгілі бір өлшемдері мен ерекшеліктері бар өзін-өзі басқаратын роботтар, ол басқа роботтармен жарыстар мен жарыстарға қатысуға жарамды дұшпандық формада жасалған.

«Сумо» атауы ескі жапон спортынан шыққан, ол рингте екі қарсылас күреседі, олардың әрқайсысы басқа қарсыласын итермелеуге тырысады, роботтар сумо жарыстарында да осылай істеу керек. роботтар рингте және бір -біріне қарсыласын ығыстыруға тырысады.

Ой:

Белгілі бір ерекшелігі бар және сол бәсекелестік заңдарына сәйкес робот жасаңыз (сумо), бұл робот ешқандай жағдайда сақинадан шықпау үшін күресуге және аман қалуға болатындай дәл өлшемде болуы керек.

Сонымен, Sumo роботтарының бәсекелестік заңдарын қарастырайық:

Мен сіздің жеке SUMO құру кезінде ескеруіңіз керек кейбір маңызды рөлдерді түсіндіремін, бұл сізге өз идеяңызды егжей -тегжейлі түсіндірместен елестетуге және жаңартуға көмектеседі.

1. Өлшемдері: Максималды ені 20 см, Максималды ұзындығы 20 см, Биіктігі көрсетілмеген.

2. Пішін: жарыс басталғаннан кейін роботтың пішіні өзгеруі мүмкін, бірақ біртұтас объект болып қалатындай.

3. Салмағы: 3 кг -нан аспайды.

4. Робот өзін-өзі басқара алатын болуы керек.

1 -қадам: компоненттер

Image
Image
Әр компонент үшін қолданылады
Әр компонент үшін қолданылады

1 Ардуино Ано3

2 Тұрақты ток қозғалтқышы

1 L298N Arduino үшін қос H көпірі

1 Ультрадыбыстық сенсор

2 IR TCRT5000

1 батарея 9v

АА батареясы 4 * 1,5 в дана + Батарея үйі

4 робот дөңгелегі

секіргіш сымдар

2 -қадам: Әр компонент үшін қолдану

Әр компонент үшін қолданылады
Әр компонент үшін қолданылады
Әр компонент үшін қолданылады
Әр компонент үшін қолданылады

Енді бізде қажетті компоненттер бар, сондықтан не үшін қолданылатынын білу үшін толығырақ тоқталайық.

1- Arduino Ano3

Бұл барлық бөліктерді басқаратын және оны байланыстыратын негізгі тақта

2- тұрақты ток қозғалтқышы

Бұл роботқа COMPETING шеңберінде маневр жасауға және қозғалуға көмектеседі

4- L298N Arduino үшін қос H көпірі

Бұл қозғалтқыштардың тұрақты кернеуін қамтамасыз ететін шағын панель, сонымен қатар қозғалыс пен кернеуді жақсы басқаратын Arduino пластинасының тірегі.

5- ультрадыбыстық сенсор

Ультрадыбыстық сенсор қарсыластың роботын табу үшін қолданылады және әдетте роботтың жоғарғы жағында орналасады.

6- IR TCRT5000

Жоғарыда айтқанымыздай, байқау сақинасы белгілі бір мөлшерде жасалған және оның екі түсі бар, толтыруы қара және жақтау ақ. Байқауға қатысушы сыртқа шықпауы керек. Сондықтан робот рингтен шықпайтынына көз жеткізу үшін ИК сенсорды қолданамыз. Бұл сенсор сақинаның түстерін ажырата алатын қасиетке ие).

7- батарея 9в

Ол негізгі кернеуді (Arduino) қолдайды.

8- АА батареясы 4 * 1,5 в дана + Батарея үйі

Ол маңызды кернеумен екі қозғалтқышты (тұрақты ток қозғалтқышы) қолдайды және дөңгелектерге толық күш беру үшін оны ажырату керек.

9- Өткізгіш сымдар

3 -қадам: Дизайн

Дизайн
Дизайн
Дизайн
Дизайн

Мен Google 3D эскизін қолдана отырып, екі сумо роботының конструкциясын жасадым, себебі мен роботтардың қағаздан жасалған модельдерін лазерлік кескіште акрилден кесіп алмас бұрын жасағанды ұнатамын. Барлық бөліктердің бір -біріне сәйкес келетінін тексеру үшін қағаз үлгілерін сызбалардың дәл өлшемінде басып шығару маңызды.

Мен бәсекелестік туралы заңдарды нақты өлшеуді ескеремін, сондықтан неғұрлым креативті дизайнмен ойлауға және өз моделіңізді жасауға тырысыңыз.

Роботтың салмағына неғұрлым сезімтал болу үшін аккумуляторды роботтың формасына 45 градус бұрышта алдыңғы қалқанымен роботтың алдына қойыңыз.

1 дизайнын мына жерден жүктеңіз

2 -ші дизайнды осы жерден жүктеп алыңыз

Сіз сондай -ақ қағаз үлгісін жүктей аласыз

PDF файлын Adobe Acrobat Reader көмегімен ашыңыз (ұсынылған бағдарламалық жасақтама)

4 -қадам: Ойын стратегиясы

Image
Image
Ойын стратегиясы
Ойын стратегиясы

Бұрын айтқанымыздай, роботтың өзін -өзі басқаруға қабілеті болуы керек, сондықтан ол бізге роботты рингте кез келген қарсылас сияқты рингте қалай ойнағысы келетініне байланысты, оны бірнеше жолмен бағдарламалау мүмкіндігін береді. ойында жеңіске жетуді шын ниетпен қалайды.

Ойын стратегиясы (1):

· Біз роботты айналасында үздіксіз жасаймыз.

· Робот айналу кезінде қашықтығын үнемі өлшеп отырады.

· Егер қарсыластың өлшенетін қашықтығы (мысалы, 10см) төмен болса, бұл қарсылас роботтың алдында тұрғанын білдіреді.

· Робот айналуды тоқтатуы керек, содан кейін шабуылды бастайды (толық күшпен алға қарай жылжытыңыз).

· Робот шекара шекарасынан өтпегенімізге сенімді болу үшін әрқашан инфрақызыл сенсорлардың көрсеткіштерін қабылдауы керек.

· Егер IR түсінің ақ түсі бар екенін оқысаңыз, ол роботты сенсордың қарама -қарсы бағытына тікелей жылжытуы керек (мысалы: егер роботтың ақ түсінің белгісін беретін алдыңғы сенсор артқа жылжиды)!

Ойын стратегиясы (2):

· Робот бастапқыда қашықтықты өлшейді.

· Робот дәл сол өлшенген қашықтыққа артқа жылжиды.

· Робот айналуды тоқтатады, содан кейін кенеттен шабуыл бастайды (толық күшпен алға жылжытыңыз).

· Егер қарсылас болса, робот 45 градусқа бұрылуы керек, ал рингтен құлап кетсе, аман қалу үшін.

· Робот шекара шекарасынан өтпегенімізге сенімді болу үшін әрқашан инфрақызыл сенсорлардың көрсеткіштерін қабылдауы керек.

· Егер IR түсінің ақ түсі бар екенін оқысаңыз, ол роботты сенсордың қарама -қарсы бағытына тікелей жылжытуы керек (мысалы: егер роботтың ақ түсінің белгісін берген алдыңғы сенсор артқа жылжиды)!

5 -қадам: Бағдарламалау

Бағдарламалау
Бағдарламалау

схеманы және кодты тексеріңіз

* 26.03.2019 жаңарту

Алдымен ультрадыбыстық кітапхананы осы жерден жүктеп алып, орнатыңыз:

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 анықтаңыз // артқы senson int қашықтығы;

жарамсыз орнату ()

{Serial.begin (9600); кешіктіру (5000); // сумо үйлесімділігі рөлдері бойынша} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); қашықтық = ультрадыбыстық оқу (); БҰРУ (200); // start rotete if (қашықтық <20) {Stop (); while (қашықтық 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 front:»); Serial.println (IR_front); Serial.println («IR back:»); Serial.println (IR_back); */

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

void FORWARD (int Speed) {// Біз қозғалтқышты алға жылжытқымыз келсе, // бұл бөлікті цикл бөлімінде жойыңыз. analogWrite (IN1, Жылдамдық); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, Жылдамдық); } // -------------------------------------------- жарамсыз ӨТКІРУ (int Speed) {// Біз қозғалтқышты алға жылжытқымыз келсе, // бұл бөлікті цикл бөлімінде жойыңыз. analogWrite (IN1, 0); analogWrite (IN2, Жылдамдық); analogWrite (IN3, Жылдамдық); analogWrite (IN4, 0); } // -------------------------------------------- жарамсыз айналдыру (int Speed) {// Біз қозғалтқышты айналдыруға рұқсат бергіміз келсе, // бұл бөлікті цикл бөлімінде жойыңыз. analogWrite (IN1, Жылдамдық); analogWrite (IN2, 0); analogWrite (IN3, Жылдамдық); analogWrite (IN4, 0); } // -------------------------------------------- жарамсыз тоқтату () {// Біз қозғалтқышты тоқтатқымыз келсе, // бұл бөлікті цикл бөлімінен алып тастаңыз. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

Ұсынылған: