Arduino Sumo Robot: 5 trinn
Arduino Sumo Robot: 5 trinn
Anonim
Arduino Sumo Robot
Arduino Sumo Robot

Før vi begynner

Hva er sumoboten?

Det er en selvkontrollert robot med spesifikke dimensjoner og funksjoner, den er også designet i fiendtlige former som kvalifiserer den til å delta i konkurranser og konkurranser med andre roboter.

Navnet "sumo" kom fra en gammel japansk sport, som er to motstandere som kjemper i en ring, hver av dem prøver å presse den andre motstanderen ut av den, og dette er hva roboter også bør gjøre i sumobotikkonkurransen, hvor to roboter plassert i ringen og hverandre prøver å skyve ut motstanderen.

Ideen:

Bygg en robot med visse spesifikasjoner og står i samsvar med lovene i den konkurransen (Sumo), denne roboten må være i eksakte dimensjoner for å kjempe og overleve for ikke å bli krysset av ringen på noen måte.

Så la oss ta en titt på Sumo -robotkonkurranselovgivningen:

Jeg vil forklare noen viktige roller du bør vurdere når du bygger din egen SUMO. Det kan også hjelpe deg med å forestille deg og innovere din egen idé uten å gå i dype detaljer.

1. Dimensjoner: Maks bredde 20 cm, Maks lengde 20 cm, Høyde ikke spesifisert.

2. Form: robotformen kan endres etter at du har startet løpet, men uten at de uatskillelige delene opprettholdes som et sentralt objekt.

3. Vekt: overstiger ikke 3 kg.

4. Roboten må være selvkontrollerende.

Trinn 1: Komponenter

Image
Image
Bruker for hver komponent
Bruker for hver komponent

1 Arduino Ano3

2 likestrømsmotor

1 L298N Dual H -bro for Arduino

1 ultralydsensor

2 IR TCRT5000

1 batteri 9v

AA -batteri 4 * 1,5 v stykker + Batterihus

4 robothjul

jumper ledninger

Trinn 2: Bruksområder for hver komponent

Bruker for hver komponent
Bruker for hver komponent
Bruker for hver komponent
Bruker for hver komponent

Nå har vi de nødvendige komponentene, så la oss gå i detaljer for å vite hva som brukes til..

1- Arduino Ano3

Det er et hovedkort som styrer alle delene og kobler det sammen

2- DC motor

Som hjelper roboten til å manøvrere og bevege seg innenfor ringen til KONKURRANSE

4- L298N Dual H-bro for Arduino

Det er et lite panel som gir konstant spenning til motorene, samt støtten til Arduino -platen med god kontroll på bevegelse og spenning.

5- Ultralydsensor

Ultralydssensoren brukes til å lokalisere motstanderens robot og er vanligvis plassert på toppen av roboten.

6- IR TCRT5000

Som vi allerede har nevnt, er konkurranseringen designet i en viss størrelse, og den har to farger, fyllet er svart og rammen er hvit. Deltakeren skal ikke gå ut. Derfor bruker vi IR -sensoren for å sikre at roboten ikke kommer ut av ringen. Denne sensoren har evnen til å skille mellom ringens farger).

7- Batteri 9v

Den støtter hovedkortet (Arduino) med den viktige spenningen.

8- AA batteri 4 * 1,5 v stykker + Batterihus

Den støtter de to motorene (DC Motor) med den viktige spenningen, og den må skilles for å gi full kraft for hjulene.

9- Stikkledere

Trinn 3: Design

Design
Design
Design
Design

Jeg har laget to sumobrobotdesigner ved hjelp av Google 3D sketch-up fordi jeg liker å lage papirmodeller av robotene mine før jeg kutter deler ut av akryl på laserskjæreren. For å kontrollere at alle delene vil passe riktig sammen, er det viktig at papirmodellene skrives ut i nøyaktig størrelse på tegningene.

Og jeg tar i betraktning å være i spesifikk måling med konkurranselover, så prøv å tenke mer kreativt og lage din egen modell.

For å være mer følsom for robotvekten som sendes inn eller deretter sette batteriene foran på roboten med frontskjermen i 45 graders vinkel i forhold til robotens form.

Last ned design 1 herfra

Last ned design 2 herfra

Du kan også laste ned modell for papirmodell

Åpne PDF -filen med Adobe Acrobat Reader (anbefalt programvare)

Trinn 4: Spill strategi

Image
Image
Spill strategi
Spill strategi

Som vi nevnte tidligere at roboten må ha sin egen evne til å kontrollere seg selv, så den gir oss muligheten til å programmere den på mer enn én måte, det avhenger av hvordan du vil at roboten skal spille på ringen akkurat som enhver motstander i har virkelig lyst til å vinne spillet.

Spillstrategi (1):

· Vi vil gjøre roboten rundt seg selv kontinuerlig.

· Roboten måler alltid avstanden kontinuerlig under rotasjonen.

· Hvis avstanden som er målt, er lavere enn (for eksempel 10 cm), betyr det at motstanderen er foran roboten direkte.

· Roboten må slutte å rotere og deretter starte angrepet (gå raskt fremover med full kraft).

· Roboten må alltid ta avlesningene fra IR -sensorene for å være sikker på at vi ikke krysset ringgrensen.

· Hvis den leses om IR -tilstedeværelse av hvit farge, må den bevege roboten direkte i motsatt retning av sensoren (for eksempel: Hvis frontsensoren, som ga en indikasjon på robotens hvite farge, beveger seg bakover)!

Spillstrategi (2):

· Ved start måler roboten avstanden foran.

· Roboten flytter tilbake den samme målte avstanden.

· Roboten slutter å rotere og begynner deretter å angripe plutselig (gå fremover med full kraft).

· I tilfelle motstander må roboten rotere 45 grader mens den skal overleve selv hvis den faller ut av ringen.

· Roboten må alltid ta avlesningene fra IR -sensorene for å være sikker på at vi ikke krysset ringgrensen.

· Hvis den leses om IR -tilstedeværelse av hvit farge, må den bevege roboten direkte i motsatt retning av sensoren (for eksempel: Hvis frontsensoren, som ga en indikasjon på robotens hvite farge, beveger seg bakover)!

Trinn 5: Programmering

Programmering
Programmering

sjekk kretsen og koden

* Oppdatering 2019-03-26

Last ned ultralydbiblioteket herfra først og installer det:

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

/*

av ahmed Azouz

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

Last ned lib herfra først

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

*/

#inkludere Ultrasonic.h

Ultralyd ultralyd (4, 3);

const int IN1 = 5;

const int IN2 = 6; const int IN3 = 9; const int IN4 = 10; #define IR_sensor_front A0 // front sensor #define IR_sensor_back A1 // rear senson int distance;

ugyldig oppsett ()

{Serial.begin (9600); forsinkelse (5000); // i henhold til sumo kompat roller} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); avstand = ultralyd.les (); ROTERE (200); // start rotete if (avstand <20) {Stop (); mens (avstand 650 || IR_back> 650) {pause;} forsinkelse (10); } hvis (IR_front <650) // <650 betyr hvit linje {Stop (); forsinkelse (50); TILBAKE (255); forsinkelse (500); } hvis (IR_back <650) // {Stop (); forsinkelse (50); FREM (255); forsinkelse (500); } /* ----------- feilsøking ---------------- Serial.print (ultrasonic. Ranging (CM)); Serial.println ("cm"); Serial.println ("IR -front:"); Serial.println (IR_front); Serial.println ("IR -bak:"); Serial.println (IR_back); */

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

void FORWARD (int Speed) {// Når vi vil la Motor To be frem, // ugyldiggjør denne delen i loop -delen. analogWrite (IN1, hastighet); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, hastighet); } // --------------------------------------------- ugyldig TILBAKE (int Speed) {// Når vi vil la Motor To be frem, // ugyldiggjør denne delen i loop -delen. analogWrite (IN1, 0); analogWrite (IN2, hastighet); analogWrite (IN3, hastighet); analogWrite (IN4, 0); } // -------------------------------------------- ugyldig ROTERE (int Speed) {// Når vi vil la Motor To Rotate, // ugyldiggjøre denne delen i loop -delen. analogWrite (IN1, hastighet); analogWrite (IN2, 0); analogWrite (IN3, hastighet); analogWrite (IN4, 0); } // -------------------------------------------- ugyldig stopp () {// Når vi vil stoppe motoren, // ugyldiggjør denne delen i sløyfedelen. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }