Inhoudsopgave:

Arduino Sumo-robot - Ajarnpa
Arduino Sumo-robot - Ajarnpa

Video: Arduino Sumo-robot - Ajarnpa

Video: Arduino Sumo-robot - Ajarnpa
Video: Sumo robot | Robo sumo | Robot sumo | Arduino robot yasash. робот сумо. Сумо робот @roboshopuz 2024, Juli-
Anonim
Arduino Sumo-robot
Arduino Sumo-robot

Voor we beginnen

Wat is de sumo-robot?

Het is een zelfgestuurde robot met specifieke afmetingen en functies, het is ook ontworpen in een vijandige vorm die het kwalificeert om deel te nemen aan de wedstrijden en wedstrijden met andere robots.

De naam "sumo" kwam van een oude Japanse sport, twee tegenstanders die in een ring vechten, elk van hen probeert de andere tegenstander eruit te duwen. En dit is wat robots ook moeten doen in de sumo-robotica-competities, waar twee robots die in de ring worden geplaatst en elkaar proberen de tegenstander eruit te duwen.

Het idee:

Bouw een robot met bepaalde specificaties en in overeenstemming met de wetten van die competitie (Sumo), deze robot moet in exacte afmetingen zijn om te vechten en te overleven om op geen enkele manier uit de ring te raken.

Dus laten we eens kijken naar de Sumo robot concurrentiewetten:

Ik zal enkele belangrijke rollen uitleggen die je zou moeten overwegen bij het bouwen van je eigen SUMO. Het kan je ook helpen om je eigen idee voor te stellen en te innoveren zonder diep in details te treden.

1. Afmetingen: Max Breedte 20 cm, Max Lengte 20 cm, Hoogte niet gespecificeerd.

2. Vorm: de vorm van de robot kan worden gewijzigd na het starten van de race, maar zonder dat de onafscheidelijke onderdelen één centraal object vormen.

3. Gewicht: niet meer dan 3 kg.

4. Robot moet zelfsturend zijn.

Stap 1: Componenten

Image
Image
Gebruik voor elke component
Gebruik voor elke component

1 Arduino Ano3

2 gelijkstroommotor

1 L298N Dual H-brug voor Arduino

1 Ultrasone sensor

2 IR TCRT5000

1 batterij 9v

AA batterij 4*1.5 v stuks + Batterijhuis

4 robotwielen

jumperdraden

Stap 2: Gebruik voor elke component

Gebruik voor elke component
Gebruik voor elke component
Gebruik voor elke component
Gebruik voor elke component

Nu hebben we de vereiste componenten, dus laten we in detail gaan om te weten waarvoor..

1- Arduino Ano3

Het is een moederbord dat alle onderdelen bestuurt en aan elkaar koppelt

2- DC-motor

Welke robot helpen om te manoeuvreren en te bewegen binnen de ring van COMPETING

4- L298N Dual H-brug voor Arduino

Het is een klein paneel dat een constante spanning aan de motoren levert, evenals de ondersteuning van de Arduino-plaat met een goede controle van beweging en spanning.

5- Ultrasone sensor

De ultrasone sensor wordt gebruikt om de robot van de tegenstander te lokaliseren en wordt meestal bovenaan de robot geplaatst.

6- IR TCRT5000

Zoals we al hebben vermeld, is de wedstrijdring ontworpen in een bepaalde maat en heeft deze twee kleuren, de vulling is zwart en het frame is wit. De deelnemer mag niet uitgaan. Daarom gebruiken we de IR-sensor om ervoor te zorgen dat de robot niet uit de ring komt. Deze sensor heeft de mogelijkheid om onderscheid te maken tussen de kleuren van de ring).

7- Batterij 9v

Het ondersteunt het moederbord (Arduino) met de belangrijke spanning.

8- AA-batterij 4 * 1.5 v stuks + Batterijhuis

Het ondersteunt de twee motoren (DC-motor) met de belangrijke spanning en moet worden gescheiden om de volledige kracht voor de wielen te geven.

9- Jumper-draden

Stap 3: Ontwerp

Ontwerp
Ontwerp
Ontwerp
Ontwerp

Ik heb twee sumo-robotontwerpen gemaakt met Google 3D-schets omdat ik graag papieren modellen van mijn robots maak voordat ik onderdelen uit acryl op de lasersnijder snij. Om te controleren of alle onderdelen goed in elkaar passen, is het belangrijk dat de papieren modellen worden afgedrukt op het exacte formaat van de tekeningen.

En ik houd er rekening mee om specifiek te meten met concurrentiewetten, dus probeer in creatievere ontwerpen te denken en maak je eigen model.

Om gevoeliger te zijn voor het robotgewicht, plaatst u de batterijen voorin de robot met het voorscherm in een hoek van 45 graden ten opzichte van de vorm van de robot.

Download het ontwerp 1 van hier

Download het ontwerp 2 van hier

U kunt ook een papieren modelsjabloon downloaden

Open het PDF-bestand met Adobe Acrobat Reader (aanbevolen software)

Stap 4: Speel Strategie

Image
Image
Speel Strategie
Speel Strategie

Zoals we eerder vermeldden, moet de robot zijn eigen vermogen hebben om zichzelf te besturen, dus het geeft ons de mogelijkheid om het op meer dan één manier te programmeren, afhankelijk van hoe je wilt dat de robot op de ring speelt, net als elke tegenstander in echt het spel willen winnen.

Speelstrategie (1):

· We maken de robot continu om zich heen.

· Tijdens de rotatie meet de robot continu de afstand.

· Als de gemeten afstand van de tegenstander kleiner is dan (bijvoorbeeld 10 cm), betekent dit dat de tegenstander direct voor robot ons staat.

· De robot moet stoppen met draaien en dan de aanval starten (snel met volle kracht vooruit gaan).

· De robot moet altijd de metingen van de IR-sensoren opnemen om er zeker van te zijn dat we de ringgrens niet hebben overschreden.

· Als IR-aanwezigheid van witte kleur wordt gelezen, moet deze de robot rechtstreeks in de tegenovergestelde richting van de sensor bewegen (bijvoorbeeld: als de sensor aan de voorkant, die een indicatie gaf van de witte kleur van de robot, achteruit beweegt)!

Speelstrategie (2):

· Bij de start meet de robot de afstand vooraan.

· Robot beweegt dezelfde gemeten afstand terug.

· Robot stopt met draaien en begint dan plotseling aan te vallen (beweeg met volle kracht vooruit).

· In het geval van een tegenstander moet de robot 45 graden draaien om zichzelf te overleven als hij uit de ring valt.

· De robot moet altijd de metingen van de IR-sensoren opnemen om er zeker van te zijn dat we de ringgrens niet hebben overschreden.

· Als IR-aanwezigheid van witte kleur wordt gelezen, moet deze de robot rechtstreeks in de tegenovergestelde richting van de sensor bewegen (bijvoorbeeld: als de sensor aan de voorkant, die een indicatie gaf van de witte kleur van de robot, achteruit beweegt)!

Stap 5: Programmeren

Programmeren
Programmeren

controleer het circuit en de code!

* Update 2019-03-26

Download hier eerst de Ultrasonic-bibliotheek en installeer deze:

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

/*

door ahmed Azouz

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

Download eerst de lib van hier

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

*/

#include Ultrasonic.h

Ultrasoon ultrasoon (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;

ongeldige setup()

{ Serieel.begin (9600); vertraging (5000); // volgens sumo compat-rollen} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); afstand = ultrasoon.lezen(); DRAAIEN(200); // start rotete if (afstand <20) {Stop(); while (afstand 650 || IR_back > 650) {pauze;} vertraging (10); } if (IR_front < 650) // < 650 betekent witte lijn { Stop(); vertraging (50); ACHTERUIT (255); vertraging (500); } if (IR_back < 650) // { Stop(); vertraging (50); VOORUIT (255); vertraging (500); } /* ----------- debugging ---------------- Serial.print(ultrasoon. Ranging(CM)); Serieel.println("cm"); Serial.println ("IR-front:"); Serial.println(IR_front); Serial.println ("IR terug:"); Serial.println(IR_back); */

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

void FORWARD (int Speed) { // Als we Motor vooruit willen laten gaan, // maak dit deel gewoon ongeldig in de loop-sectie. analoogSchrijven (IN1, Snelheid); analoogWrite(IN2, 0); analoogWrite(IN3, 0); analoogSchrijven (IN4, Snelheid); }//-------------------------------------------- ongeldig ACHTERUIT (int Speed) { // Als we Motor vooruit willen laten gaan, // laat dit deel gewoon vervallen in de lussectie. analoogWrite(IN1, 0); analoog schrijven (IN2, snelheid); analoogSchrijven (IN3, Snelheid); analoogWrite(IN4, 0); }//-------------------------------------------- ongeldig DRAAIEN (int Speed) {//Als we de motor willen laten roteren, // laat dit deel gewoon vervallen in de lussectie. analoogSchrijven (IN1, Snelheid); analoogWrite(IN2, 0); analoogSchrijven (IN3, Snelheid); analoogWrite(IN4, 0); }//-------------------------------------------- ongeldig Stop(){ //Als we willen stoppen met de motor, // maak dit deel gewoon ongeldig in de lussectie. analoogWrite(IN1, 0); analoogWrite(IN2, 0); analoogWrite(IN3, 0); analoogWrite(IN4, 0); }

Aanbevolen: