Kazalo:

Arduino Sumo robot: 5 korakov
Arduino Sumo robot: 5 korakov

Video: Arduino Sumo robot: 5 korakov

Video: Arduino Sumo robot: 5 korakov
Video: Arduino robot sumo 2024, November
Anonim
Arduino Sumo robot
Arduino Sumo robot

Preden začnemo.

Kaj je sumo robot?

Gre za samonadzorovane robote s posebnimi dimenzijami in lastnostmi, oblikovan pa je tudi v sovražnih oblikah, ki ga kvalificirajo za sodelovanje na tekmovanjih in tekmovanjih z drugimi roboti.

Ime "sumo" je prišlo iz starega japonskega športa, v katerem se dva nasprotnika borita v ringu, vsak pa poskušata drugega nasprotnika potisniti iz njega. In to bi morali roboti narediti tudi na tekmovanjih v sumo robotiki, kjer roboti, postavljeni v obroč in drug drugega poskušajo potisniti nasprotnika.

Ideja:

Zgradite robota z določenimi specifikacijami in sorazmernim z zakoni tega tekmovanja (Sumo), ta robot mora biti v natančnih dimenzijah, da se bo lahko boril in preživel, da ne bi prišel iz obroča.

Poglejmo torej zakonodajo o konkurenci robotov Sumo:

Pojasnil vam bom nekaj pomembnih vlog, ki jih morate upoštevati pri izdelavi lastnega SUMO -ja, prav tako pa vam lahko pomaga zamisliti in inovirati svojo idejo, ne da bi se spuščali v podrobnosti.

1. Mere: največja širina 20 cm, največja dolžina 20 cm, višina ni določena.

2. Oblika: obliko robota je mogoče spremeniti po začetku dirke, vendar brez neločljivih delov, da ostanejo osrednji predmet.

3. Teža: ne presega 3 kg.

4. Robot mora biti samokontrolen.

1. korak: Komponente

Image
Image
Uporablja se za vsako komponento
Uporablja se za vsako komponento

1 Arduino Ano3

2 enosmerni motor

1 L298N Dvojni H most za Arduino

1 Ultrazvočni senzor

2 IR TCRT5000

1 baterija 9v

AA baterija 4 * 1,5 v kosov + baterijska omarica

4 robotska kolesa

mostične žice

2. korak: Uporaba za vsako komponento

Uporablja se za vsako komponento
Uporablja se za vsako komponento
Uporablja se za vsako komponento
Uporablja se za vsako komponento

Zdaj imamo potrebne komponente, zato pojdimo podrobneje, če želimo vedeti, za kaj se uporablja.

1- Arduino Ano3

To je glavna plošča, ki nadzoruje vse dele in jih povezuje

2- DC motor

Ki robotu pomagajo pri manevriranju in premikanju znotraj obroča TEKMOVANJA

4- L298N Dvojni H most za Arduino

To je majhna plošča, ki zagotavlja konstantno napetost motorjem, pa tudi podporo plošče Arduino z dobrim nadzorom gibanja in napetosti.

5- Ultrazvočni senzor

Ultrazvočni senzor se uporablja za lociranje nasprotnega robota in je običajno nameščen na vrhu robota.

6- IR TCRT5000

Kot smo že omenili, je tekmovalni prstan oblikovan v določeni velikosti in ima dve barvi, polnilo je črno, okvir pa belo. Tekmovalec ne sme iti ven. Zato z IR senzorjem poskrbimo, da robot ne bo iz obroča. Ta senzor lahko razlikuje med barvami obroča).

7- Baterija 9v

Podpira glavno ploščo (Arduino) s pomembno napetostjo.

8- AA baterija 4 * 1,5 v kosov + baterijska omarica

Podpira dva motorja (enosmerni motor) s pomembno napetostjo, zato ga je treba ločiti, da daje kolesu vso silo.

9- Mostične žice

3. korak: Oblikovanje

Oblikovanje
Oblikovanje
Oblikovanje
Oblikovanje

Z Google 3D skico sem naredil dva modela sumo robotov, ker rad ustvarjam papirnate modele svojih robotov, preden izrežem dele iz akrila na laserskem rezalniku. Če želite preveriti, ali se vsi deli pravilno ujemajo, je pomembno, da so modeli papirja natisnjeni v natančni velikosti risb.

Pri tem upoštevam, da sem v posebnem merjenju s konkurenčno zakonodajo, zato poskusite razmišljati bolj ustvarjalno in narediti svoj model.

Da bi bili bolj občutljivi na težo robota, ga vložite ali nato vstavite baterije v sprednji del robota s sprednjim ščitnikom pod kotom 45 stopinj glede na obliko robota.

Prenesite design 1 od tukaj

Prenesite design 2 od tukaj

Lahko prenesete tudi predlogo modela papirja

Odprite datoteko PDF z Adobe Acrobat Reader (priporočena programska oprema)

4. korak: Igrajte strategijo

Image
Image
Strategija igranja
Strategija igranja

Kot smo že omenili, mora imeti robot lastno sposobnost samostojnega nadzora, zato nam daje možnost, da ga programiramo na več načinov, odvisno od tega, kako želite, da se robot igra na ringu, tako kot kateri koli nasprotnik v resnično želim zmagati v igri.

Strategija igranja (1):

· Robota bomo neprestano obkroževali.

· Robot med rotacijo vedno meri razdaljo.

· Če je izmerjena razdalja nasprotnika nižja od (na primer 10 cm), to pomeni, da je nasprotnik neposredno pred robotom.

· Robot se mora prenehati vrteti in nato začeti napad (hitro se premaknite s polno močjo naprej).

· Robot mora vedno odčitati odčitke IR senzorjev, da se prepriča, da nismo prestopili meje obroča.

· Če berete prisotnost bele barve IR, mora robot premakniti neposredno v nasprotni smeri senzorja (na primer: če se sprednji senzor, ki je nakazal belo barvo robota, premakne nazaj)!

Strategija igranja (2):

· Robot pri zagonu izmeri razdaljo spredaj.

· Robot se premakne nazaj na enako izmerjeno razdaljo.

· Robot se neha vrteti in nato nenadoma začne napadati (pojdi naprej s polno silo).

· V primeru nasprotnika se mora pripeti robot vrteti za 45 stopinj, da bi preživel, če pade iz obroča.

· Robot mora vedno odčitati odčitke IR senzorjev, da se prepriča, da nismo prestopili meje obroča.

· Če bere IR prisotnost bele barve, mora robota premakniti neposredno v nasprotni smeri senzorja (na primer: če se sprednji senzor, ki je nakazal belo barvo robota, premakne nazaj)!

5. korak: Programiranje

Programiranje
Programiranje

preverite vezje in kodo

* Posodobitev 26.3.2019

Najprej prenesite ultrazvočno knjižnico in jo namestite:

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

/*

Avtor: ahmed Azouz

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

Najprej prenesite lib od tukaj

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

*/

#vključite ultrazvok.h

Ultrazvočni ultrazvočni (4, 3);

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #define IR_sensor_front A0 // sprednji senzor #define IR_sensor_back A1 // zadnji senzor int distance;

void setup ()

{Serial.begin (9600); zamuda (5000); // po vlogah sumo compat} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); distance = ultrasonic.read (); ZAVRATI (200); // začni rotete if (razdalja <20) {Stop (); while (razdalja 650 || IR_back> 650) {break;} zakasnitev (10); } if (IR_front <650) // <650 pomeni belo črto {Stop (); zamuda (50); NAZAD (255); zamuda (500); } if (IR_back <650) // {Stop (); zamuda (50); NAPREJ (255); zamuda (500); } /* ----------- odpravljanje napak ---------------- Serial.print (ultrazvočno. Ranging (CM)); Serial.println ("cm"); Serial.println ("IR sprednja stran:"); Serial.println (IR_front); Serial.println ("IR nazaj:"); Serial.println (IR_back); */

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

void FORWARD (int Speed) {// Ko želimo dovoliti, da se motor premakne naprej, // ta del na odseku zanke samo izpraznimo. analogWrite (IN1, hitrost); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, hitrost); } // -------------------------------------------- void BACKWARD (int Speed) {// Ko želimo pustiti motorju, da se premakne naprej, // ta del na odseku zanke preprosto izpraznimo. analogWrite (IN1, 0); analogWrite (IN2, hitrost); analogWrite (IN3, hitrost); analogWrite (IN4, 0); } // -------------------------------------------- void ROTATE (int Speed) {// Ko želimo pustiti, da se motor vrti, // samo razveljavimo ta del na odseku zanke. analogWrite (IN1, hitrost); analogWrite (IN2, 0); analogWrite (IN3, hitrost); analogWrite (IN4, 0); } // -------------------------------------------- void Stop () {// Ko želimo ustaviti motor, // samo razveljavimo ta del na odseku zanke. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

Priporočena: