Turinys:

„Arduino Sumo“robotas: 5 žingsniai
„Arduino Sumo“robotas: 5 žingsniai

Video: „Arduino Sumo“robotas: 5 žingsniai

Video: „Arduino Sumo“robotas: 5 žingsniai
Video: Высокая плотность 2022 2024, Lapkritis
Anonim
Arduino Sumo robotas
Arduino Sumo robotas

Prieš pradėdami

Kas yra sumo robotas?

Tai savikontrolės robotai, turintys specifinius matmenis ir ypatybes, taip pat suprojektuoti priešiškai nusiteikusių formų, leidžiančių dalyvauti konkursuose ir varžybose su kitais robotais.

Pavadinimas „sumo“kilo iš senos japonų sporto šakos, kurioje du priešininkai kovoja ringe, kiekvienas iš jų bando išstumti kitą varžovą, ir tai turėtų daryti robotai sumo robotikos varžybose, kur dvi į ringą patalpinti robotai ir vienas kitas bando išstumti savo priešininką.

Idėja:

Sukurkite tam tikrų specifikacijų robotą, atitinkantį tos varžybos („Sumo“) įstatymus, šis robotas turi būti tikslių matmenų, kad galėtų kovoti ir išgyventi, kad jokiu būdu nebūtų išmestas.

Taigi pažvelkime į „Sumo“robotų varžybų įstatymus:

Aš paaiškinsiu kai kuriuos svarbius vaidmenis, kuriuos turėtumėte apsvarstyti kurdami savo SUMO. Tai taip pat gali padėti jums įsivaizduoti ir naujovinti savo idėją, nesigilinant į detales.

1. Matmenys: maksimalus plotis 20 cm, maksimalus ilgis 20 cm, aukštis nenurodytas.

2. Forma: roboto forma gali būti keičiama pradėjus lenktynes, tačiau be neatskiriamų dalių, kad būtų vienas pagrindinis objektas.

3. Svoris: neviršija 3 kg.

4. Robotas turi būti savikontroliuojantis.

1 žingsnis: komponentai

Image
Image
Naudojimas kiekvienam komponentui
Naudojimas kiekvienam komponentui

1 „Arduino Ano3“

2 nuolatinės srovės variklis

1 „L298N Dual H“tiltas „Arduino“

1 Ultragarso jutiklis

2 IR TCRT5000

1 baterija 9v

AA baterija 4 * 1,5 V vienetai + Baterijos korpusas

4 robotų ratai

jungiamieji laidai

2 žingsnis: kiekvieno komponento naudojimas

Naudojimas kiekvienam komponentui
Naudojimas kiekvienam komponentui
Naudojimas kiekvienam komponentui
Naudojimas kiekvienam komponentui

Dabar mes turime reikiamus komponentus, todėl išsamiau išsiaiškinsime, kam jie naudojami.

1- „Arduino Ano3“

Tai pagrindinė plokštė, kuri valdo visas dalis ir sujungia ją

2- DC variklis

Tai padeda robotui manevruoti ir judėti KONKURSO žiede

4- L298N Dual H tiltas „Arduino“

Tai mažas skydelis, užtikrinantis pastovią variklių įtampą, taip pat „Arduino“plokštės atrama, gerai valdanti judesį ir įtampą.

5- Ultragarsinis jutiklis

Ultragarso jutiklis naudojamas priešininko robotui surasti ir paprastai yra roboto viršuje.

6- IR TCRT5000

Kaip jau minėjome, konkurso žiedas suprojektuotas tam tikro dydžio ir yra dviejų spalvų, užpildas yra juodas, o rėmas - baltas. Dalyvis neturėtų išeiti. Todėl mes naudojame IR jutiklį, kad įsitikintume, jog robotas neišeis iš žiedo. Šis jutiklis turi galimybę atskirti žiedo spalvas).

7- Baterija 9v

Jis palaiko pagrindinę plokštę („Arduino“) su svarbia įtampa.

8- AA baterija 4 * 1,5 V vienetai + Baterijos korpusas

Jis palaiko du variklius (nuolatinės srovės variklį) su svarbia įtampa ir turi būti atskirtas, kad būtų suteikta visa ratų jėga.

9- jungiamieji laidai

3 žingsnis: dizainas

Dizainas
Dizainas
Dizainas
Dizainas

Aš sukūriau du sumo robotų dizainus naudodamas „Google 3D“eskizą, nes man patinka kurti popierinius savo robotų modelius prieš tai, kai iškirpiu lazerinio pjaustytuvo dalis iš akrilo. Norint patikrinti, ar visos dalys dera tarpusavyje, svarbu, kad popieriaus modeliai būtų atspausdinti tokio dydžio brėžiniais.

Ir aš atsižvelgiu į tai, kad konkrečiai vertinu konkurencijos įstatymus, todėl pabandykite mąstyti kūrybiškiau ir sukurti savo modelį.

Norėdami būti jautresni pateiktam roboto svoriui arba įdėkite baterijas į roboto priekį su priekiniu skydeliu 45 laipsnių kampu į roboto formą.

Atsisiųskite dizainą 1 iš čia

Atsisiųskite „Design 2“iš čia

Taip pat galite atsisiųsti popieriaus modelio šabloną

Atidarykite PDF failą naudodami „Adobe Acrobat Reader“(rekomenduojama programinė įranga)

4 žingsnis: žaisti strategiją

Image
Image
Žaisti strategiją
Žaisti strategiją

Kaip jau minėjome anksčiau, robotas turi turėti savitą sugebėjimą jį valdyti, todėl suteikia mums galimybę jį užprogramuoti daugiau nei vienu būdu, tai priklauso nuo to, kaip norite, kad robotas žais ant ringo, kaip ir bet kuris priešininkas. tikrai nori laimėti žaidimą.

Žaisti strategiją (1):

· Mes nuolat kursime robotą aplink save.

· Sukimosi metu robotas nuolat matuoja atstumą.

· Jei išmatuotas priešininko atstumas yra mažesnis nei (pavyzdžiui, 10 cm), tai reiškia, kad priešininkas yra priešais mus robotą.

· Robotas turi nustoti suktis ir tada pradėti puolimą (greitai judėti į priekį visa jėga).

· Robotas visada turi paimti infraraudonųjų spindulių jutiklių rodmenis, kad įsitikintų, jog neperžengėme žiedo sienos.

· Jei skaitoma, kad IR yra baltos spalvos, jis turi perkelti robotą tiesiai priešinga jutiklio kryptimi (pavyzdžiui: jei priekinis jutiklis, nurodęs baltą roboto spalvą, juda atgal)!

Žaisti strategiją (2):

· Starto metu robotas išmatuos atstumą priešais.

· Robotas juda atgal tuo pačiu išmatuotu atstumu.

· Robotas nustoja suktis ir staiga pradeda atakuoti (judėkite į priekį visa jėga).

· Jei varžovas prisiriša, robotas turi pasukti 45 laipsnius, kad iškristų iš žiedo, kad galėtų išgyventi.

· Robotas visada turi paimti infraraudonųjų spindulių jutiklių rodmenis, kad įsitikintų, jog neperžengėme žiedo sienos.

· Jei skaitoma, kad IR yra baltos spalvos, jis turi perkelti robotą tiesiai priešinga jutiklio kryptimi (pavyzdžiui: jei priekinis jutiklis, nurodęs baltą roboto spalvą, juda atgal)!

5 žingsnis: programavimas

Programavimas
Programavimas

patikrinkite grandinę ir kodą

* Atnaujinta 2019-03-26

Pirmiausia atsisiųskite ultragarso biblioteką iš čia ir įdiekite:

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

/*

pateikė Ahmedas Azouzas

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

Pirmiausia atsisiųskite lib iš čia

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

*/

#įtraukti ultragarsą.h

Ultragarsinis ultragarsas (4, 3);

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #define IR_sensor_front A0 // priekinis jutiklis #define IR_sensor_back A1 // galinis jutiklis int distance;

negaliojanti sąranka ()

{Serial.begin (9600); vėlavimas (5000); // kaip pagal sumo suderinamus vaidmenis} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); atstumas = ultragarsas. skaitymas (); ROTATE (200); // start rotete if (distance <20) {Stop (); while (atstumas 650 || IR_back> 650) {break;} delay (10); } if (IR_front <650) // <650 reiškia baltą liniją {Stop (); vėlavimas (50); Atgal (255); vėlavimas (500); } if (IR_back <650) // {Stop (); vėlavimas (50); PIRMAS (255); vėlavimas (500); } /* ----------- derinimas ---------------- Serijinis atspaudas (ultragarsinis diapazonas (CM)); Serial.println ("cm"); Serial.println („IR priekis:“); Serial.println (IR_front); Serial.println ("IR atgal:"); Serial.println (IR_back); */

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

void FORWARD (int Speed) {// Kai norime leisti varikliui judėti pirmyn, // tiesiog anuliuokite šią dalį kilpos skyriuje. analogWrite (IN1, greitis); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, greitis); } // -------------------------------------------- void BACKWARD (int Speed) {// Kai norime leisti varikliui judėti į priekį, // tiesiog anuliuokite šią dalį kilpos skyriuje. analogWrite (IN1, 0); analogWrite (IN2, greitis); analogWrite (IN3, greitis); analogWrite (IN4, 0); } // -------------------------------------------- void ROTATE (int Speed) {// Kai norime leisti varikliui suktis, // tiesiog anuliuokite šią dalį kilpos skyriuje. analogWrite (IN1, greitis); analogWrite (IN2, 0); analogWrite (IN3, greitis); analogWrite (IN4, 0); } // -------------------------------------------- void Stop () {// Kai norime sustabdyti variklį, // tiesiog panaikinkite šią dalį kilpos skyriuje. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

Rekomenduojamas: