Indholdsfortegnelse:

Arduino Sumo Robot: 5 trin
Arduino Sumo Robot: 5 trin

Video: Arduino Sumo Robot: 5 trin

Video: Arduino Sumo Robot: 5 trin
Video: Automated control system for mobile robot with usage of LIDAR technology 2024, November
Anonim
Arduino Sumo Robot
Arduino Sumo Robot

Inden vi starter

Hvad er sumobotten?

Det er en selvkontrolleret robot med specifikke dimensioner og funktioner, den er også designet i fjendtlige former, der kvalificerer den til at deltage i konkurrencer og konkurrencer med andre robotter.

Navnet "sumo" stammer fra en gammel japansk sport, som er to modstandere, der kæmper i en ring, hver af dem forsøger at skubbe den anden modstander ud af det, og det er det, robotter også skal gøre i sumobotokonkurrencerne, hvor to robotter placeret i ringen og hinanden forsøger at skubbe sin modstander ud.

Ideen:

Byg en robot med visse specifikationer og står i overensstemmelse med lovene i denne konkurrence (Sumo), denne robot skal være i nøjagtige dimensioner for at kæmpe og overleve for ikke at blive krydset af ringen på nogen måde.

Så lad os se på Sumo -robotkonkurrencelovgivningen:

Jeg vil forklare nogle vigtige roller, du bør overveje, mens du bygger din egen SUMO, det kan også hjælpe dig med at forestille dig og innovation din egen idé uden at gå i dybe detaljer.

1. Dimensioner: Max Bredde 20 cm, Max Længde 20 cm, Højde ikke angivet.

2. Form: robotformen kan ændres efter start af løbet, men uden at de uadskillelige dele opretholdes som et centralt objekt.

3. Vægt: overstiger ikke 3 kg.

4. Robotten skal være selvkontrollerende.

Trin 1: Komponenter

Image
Image
Anvendelser for hver komponent
Anvendelser for hver komponent

1 Arduino Ano3

2 DC motor

1 L298N Dual H -bro til Arduino

1 ultralydssensor

2 IR TCRT5000

1 batteri 9v

AA batteri 4 * 1,5 v stykker + Batterihus

4 robothjul

jumper ledninger

Trin 2: Anvendelser for hver komponent

Anvendelser for hver komponent
Anvendelser for hver komponent
Anvendelser for hver komponent
Anvendelser for hver komponent

Nu har vi de nødvendige komponenter, så lad os gå i detaljer for at vide, hvad der bruges til..

1- Arduino Ano3

Det er et hovedkort, der styrer alle delene og kæder det sammen

2- DC motor

Som hjælper robotten med at manøvrere og bevæge sig inden for ringen af KONKURRENCE

4- L298N Dual H-bro til Arduino

Det er et lille panel, der leverer konstant spænding til motorerne, samt understøttelse af Arduino -pladen med god styring af bevægelse og spænding.

5- Ultralydssensor

Ultralydssensoren bruges til at lokalisere modstanderens robot og er normalt placeret øverst på robotten.

6- IR TCRT5000

Som vi allerede har nævnt, er konkurrenceringen designet i en bestemt størrelse, og den har to farver, fyldet er sort og rammen er hvid. Deltageren bør ikke gå ud. Derfor bruger vi IR -sensoren til at sikre, at robotten ikke er ude af ringen. Denne sensor har evnen til at skelne mellem ringens farver).

7- Batteri 9v

Det understøtter hovedkortet (Arduino) med den vigtige spænding.

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

Den understøtter de to motorer (DC Motor) med den vigtige spænding, og den skal adskilles for at give fuld kraft til hjulene.

9- Jumper ledninger

Trin 3: Design

Design
Design
Design
Design

Jeg har lavet to sumobrobotdesign ved hjælp af Google 3D sketch-up, fordi jeg kan lide at oprette papirmodeller af mine robotter, før jeg skærer dele ud af akryl på laserskæreren. For at kontrollere, at alle delene passer korrekt sammen, er det vigtigt, at papirmodellerne udskrives i den nøjagtige størrelse på tegninger.

Og jeg tager i betragtning at være i specifik måling med konkurrencelovgivningen, så prøv at tænke i et mere kreativt design og lav din egen model.

For at være mere følsom over for robotens vægt i indsendt eller derefter sætte batterierne i fronten af robotten med frontskærmen i en 45 graders vinkel i forhold til robotens form.

Download design 1 herfra

Download design 2 herfra

Du kan også downloade skabelon til papirmodel

Åbn PDF -filen med Adobe Acrobat Reader (anbefalet software)

Trin 4: Spil strategi

Image
Image
Spil strategi
Spil strategi

Som vi nævnte før, at robotten skal have sin egen evne til at kontrollere sig selv, så den giver os mulighed for at programmere den på mere end én måde, det afhænger af, hvordan du vil have robotten til at spille på ringen ligesom enhver modstander i virkelig lyst til at vinde spillet.

Afspilningsstrategi (1):

· Vi vil løbende lave robotten omkring sig selv.

· Robotten måler altid afstanden kontinuerligt under rotation.

· Hvis den målte modstanders afstand er lavere end (f.eks. 10 cm), betyder det, at modstanderen er direkte foran robotten.

· Robotten skal stoppe med at rotere og derefter starte angrebet (gå hurtigt fremad med fuld kraft).

· Robotten skal altid tage målingerne fra IR -sensorerne for at være sikker på, at vi ikke krydsede ringgrænsen.

· Hvis læst om IR -tilstedeværelse af hvid farve, skal den flytte robotten direkte i sensorens modsatte retning (f.eks.: Hvis den forreste sensor, som gav en indikation af robotens hvide farve, bevæger sig baglæns)!

Afspilningsstrategi (2):

· Ved starten måler robotten afstanden foran.

· Robotten flytter den samme målte afstand tilbage.

· Robotten holder op med at rotere og starter derefter med at angribe pludseligt (gå fremad med fuld kraft).

· I tilfælde af modstander skal robotten rotere 45 grader for at overleve sig selv, hvis den falder ud af ringen.

· Robotten skal altid tage målingerne fra IR -sensorerne for at være sikker på, at vi ikke krydsede ringgrænsen.

· Hvis læst om IR -tilstedeværelse af hvid farve, skal den flytte robotten direkte i sensorens modsatte retning (f.eks.: Hvis den forreste sensor, som gav en indikation af robotens hvide farve, bevæger sig baglæns)!

Trin 5: Programmering

Programmering
Programmering

tjek kredsløbet og koden

* Opdatering 2019-03-26

Download ultralydsbiblioteket herfra først og installer det:

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

/*

af ahmed Azouz

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

Download lib herfra først

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

*/

#include Ultrasonic.h

Ultralyds 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 opsætning ()

{Serial.begin (9600); forsinkelse (5000); // i henhold til sumo -kompatible roller} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); distance = ultrasonic.read (); ROTERE (200); // start rotete if (distance <20) {Stop (); mens (afstand 650 || IR_back> 650) {pause;} forsinkelse (10); } hvis (IR_front <650) // <650 betyder hvid linje {Stop (); forsinkelse (50); TILBAGE (255); forsinkelse (500); } hvis (IR_back <650) // {Stop (); forsinkelse (50); FREM (255); forsinkelse (500); } /* ----------- debugging ---------------- Serial.print (ultrasonic. Ranging (CM)); Serial.println ("cm"); Serial.println ("IR front:"); Serial.println (IR_front); Serial.println ("IR tilbage:"); Serial.println (IR_back); */

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

void FORWARD (int Speed) {// Når vi vil lade Motor To bevæge sig fremad, // skal du bare annullere denne del på loop -sektionen. analogWrite (IN1, hastighed); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, hastighed); } // -------------------------------------------- ugyldig BACKWARD (int Speed) {// Når vi vil lade motoren bevæge sig fremad, // skal du bare annullere denne del på loop -sektionen. analogWrite (IN1, 0); analogWrite (IN2, hastighed); analogWrite (IN3, hastighed); analogWrite (IN4, 0); } // -------------------------------------------- ugyldig ROTERING (int Speed) {// Når vi vil lade motoren rotere, // skal du bare annullere denne del på loop -sektionen. analogWrite (IN1, hastighed); analogWrite (IN2, 0); analogWrite (IN3, hastighed); analogWrite (IN4, 0); } // -------------------------------------------- ugyldig stop () {// Når vi vil stoppe motoren, // skal du bare annullere denne del i loop -sektionen. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

Anbefalede: