Агуулгын хүснэгт:

Arduino Sumo робот: 5 алхам
Arduino Sumo робот: 5 алхам

Видео: Arduino Sumo робот: 5 алхам

Видео: Arduino Sumo робот: 5 алхам
Видео: Arduino robot sumo 2024, Арваннэгдүгээр
Anonim
Ардуино Сумо робот
Ардуино Сумо робот

Бид эхлэхээс өмнө

Сумо робот гэж юу вэ?

Энэ бол тодорхой хэмжигдэхүүн, онцлогтой өөрийгөө хянадаг роботууд бөгөөд бусад роботуудтай хийх уралдаан, тэмцээнд оролцох боломжийг олгодог дайсагнасан хэлбэрээр бүтээгдсэн.

"Сумо" гэдэг нэр нь Японы хуучин спортоос гаралтай бөгөөд хоёр өрсөлдөгч нь цагариг дээр тулалдах бөгөөд тус бүр нөгөө өрсөлдөгчөө түлхэж гаргахыг хичээдэг бөгөөд сумогийн роботын тэмцээнд роботууд үүнийг хийх ёстой. Роботууд цагираг дээр байрлаж, бие биенээ өрсөлдөгчөө шахах гэж оролдож байна.

Санаа:

Тодорхой үзүүлэлт бүхий робот бүтээж, өрсөлдөөний хууль (Сумо) -д нийцүүлэн энэхүү робот нь тулалдах, амьд үлдэхийн тулд яг ямар хэмжээтэй байх ёстой, ямар ч байдлаар цагирагнаас хөндлөн гарахгүй байх ёстой.

Тиймээс Sumo роботын өрсөлдөөний дүрмийг авч үзье.

Би өөрийн SUMO -г бүтээхдээ анхаарах ёстой зарим чухал үүргийг тайлбарлах болно.

1. Хэмжээ: Хамгийн их өргөн нь 20 см, хамгийн их урт нь 20 см, өндрийг нь заагаагүй болно.

2. Хэлбэр: уралдааныг эхлүүлсний дараа роботын хэлбэр өөрчлөгдөж болох боловч салшгүй хэсэггүйгээр нэг гол объект хэвээр үлдэнэ.

3. Жин: 3 кг -аас хэтрэхгүй.

4. Робот өөрийгөө хянах чадвартай байх ёстой.

Алхам 1: бүрэлдэхүүн хэсгүүд

Image
Image
Бүрэлдэхүүн хэсэг бүрт ашигладаг
Бүрэлдэхүүн хэсэг бүрт ашигладаг

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

2 DC мотор

Arduino -д зориулсан 1 L298N Хос H гүүр

1 Хэт авианы мэдрэгч

2 IR TCRT5000

1 батерей 9v

АА батерей 4 * 1.5 в ширхэг + Батерейны байшин

4 робот дугуй

холбогч утас

Алхам 2: Бүрэлдэхүүн хэсэг бүрийн хэрэглээ

Бүрэлдэхүүн хэсэг бүрт ашигладаг
Бүрэлдэхүүн хэсэг бүрт ашигладаг
Бүрэлдэхүүн хэсэг бүрт ашигладаг
Бүрэлдэхүүн хэсэг бүрт ашигладаг

Одоо бидэнд шаардлагатай бүрэлдэхүүн хэсгүүд байгаа тул юунд ашигладаг болохыг нарийвчлан авч үзье.

1- Arduino Ano3

Энэ бол бүх эд ангиудыг хянаж, хооронд нь холбодог үндсэн самбар юм

2- DC мотор

Энэ нь роботыг УРАЛДАХ цагираг дотор маневр хийж, хөдлөхөд тусалдаг

4- Arduino-д зориулсан L298N хос H гүүр

Энэ бол моторыг тогтмол хүчдэлээр хангах, мөн хөдөлгөөн, хүчдэлийг сайн хянах чадвартай Arduino хавтанг дэмжих жижиг самбар юм.

5- Хэт авианы мэдрэгч

Хэт авианы мэдрэгчийг өрсөлдөгчийнхөө роботыг олоход ашигладаг бөгөөд ихэвчлэн роботын дээд хэсэгт байрлуулдаг.

6- IR TCRT5000

Өмнө дурьдсанчлан, тэмцээний бөгж нь тодорхой хэмжээтэй, хоёр өнгөтэй, бөглөх нь хар, хүрээ нь цагаан өнгөтэй. Оролцогч гадуур гарах ёсгүй. Тиймээс бид IR мэдрэгчийг ашиглан роботыг цагирагнаас гарахгүй гэдэгт итгэлтэй байна. Энэхүү мэдрэгч нь бөгжний өнгийг ялгах чадвартай).

7- Батерей 9v

Энэ нь чухал хүчдэл бүхий үндсэн самбарыг (Arduino) дэмждэг.

8- АА батерей 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…

*/

#хэт авианы аппаратыг оруулна уу.h

Хэт авианы хэт авианы (4, 3);

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #IR_sensor_front A0 // урд мэдрэгчийг тодорхойлох

хүчингүй тохиргоо ()

{Serial.begin (9600); саатал (5000); // сумогийн нийцтэй үүргийн дагуу} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); зай = хэт авианы. унших (); Эргүүлэх (200); // эхлэх rotete хэрэв (зай <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); } /* ----------- дибаг хийх ---------------- Цуваа.хэвлэх (хэт авианы. Өөрчлөх (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, Хурд); } // -------------------------------------------- хүчингүй BACKWARD (int Speed) {// Бид Моторыг урагшлуулахыг зөвшөөрөхийг хүсвэл // давталтын хэсэгт энэ хэсгийг хүчингүй болгоорой. analogWrite (IN1, 0); analogWrite (IN2, Хурд); analogWrite (IN3, Хурд); analogWrite (IN4, 0); } // -------------------------------------------- хүчингүй ROTATE (int Speed) {// Бид моторыг эргүүлэхийг зөвшөөрөхийг хүсвэл // энэ хэсгийг давталтын хэсэгт хүчингүй болгоорой. analogWrite (IN1, Хурд); analogWrite (IN2, 0); analogWrite (IN3, Хурд); analogWrite (IN4, 0); } // -------------------------------------------- хүчингүй зогсоох () {// Бид Моторыг зогсоохыг хүсч байгаа бол // энэ хэсгийг давталтын хэсэгт хүчингүй болгоорой. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

Зөвлөмж болгож буй: