Cuprins:

Robot Arduino Sumo: 5 pași
Robot Arduino Sumo: 5 pași

Video: Robot Arduino Sumo: 5 pași

Video: Robot Arduino Sumo: 5 pași
Video: Arduino robot sumo 2024, Noiembrie
Anonim
Robot Arduino Sumo
Robot Arduino Sumo

Înainte de a începe

Ce este robotul sumo?

Este un roboți autocontrolați cu dimensiuni și caracteristici specifice, este, de asemenea, proiectat într-o formă ostilă care îl califică să participe la concursuri și competiții cu alți roboți.

Numele „sumo” provine dintr-un vechi sport japonez, care este doi adversari care luptă într-un ring, fiecare încercând să-l împingă pe celălalt adversar din el. Și asta ar trebui să facă roboții și în competițiile de robotică sumo, unde doi roboții plasați în ring și unii pe alții încercând să-și împingă adversarul.

Ideea:

Construiește un robot cu anumite specificații și proporțional cu legile acelei competiții (Sumo), acest robot trebuie să aibă dimensiuni exacte pentru a lupta și a supraviețui pentru a nu fi înlăturat în niciun fel.

Deci, să aruncăm o privire asupra legilor concurenței robotului Sumo:

Vă voi explica câteva roluri importante pe care ar trebui să le luați în considerare în timp ce vă construiți propriul SUMO, de asemenea, vă poate ajuta să vă imaginați și să vă inovați propria idee fără a intra în detalii profunde.

1. Dimensiuni: Lățime maximă 20 cm, Lungime maximă 20 cm, Înălțime nespecificată.

2. Forma: forma robotului poate fi schimbabilă după începerea cursei, dar fără ca părțile inseparabile să mențină un obiect central.

3. Greutate: nu depășește 3 kg.

4. Robotul trebuie să se autocontroleze.

Pasul 1: Componente

Image
Image
Utilizări pentru fiecare componentă
Utilizări pentru fiecare componentă

1 Arduino Ano3

2 Motor DC

1 L298N Dual H Bridge pentru Arduino

1 senzor cu ultrasunete

2 IR TCRT5000

1 Baterie 9v

Baterie AA 4 * 1,5 v bucăți + Acumulator

4 roți robot

fire jumper

Pasul 2: utilizări pentru fiecare componentă

Utilizări pentru fiecare componentă
Utilizări pentru fiecare componentă
Utilizări pentru fiecare componentă
Utilizări pentru fiecare componentă

Acum avem componentele necesare, așa că să trecem în detalii pentru a afla la ce se folosește..

1- Arduino Ano3

Este o placă principală care controlează toate piesele și o leagă între ele

2- Motor DC

Care ajută robotul să manevreze și să se deplaseze în inelul CONCURENȚEI

4- L298N Dual H Bridge pentru Arduino

Este un panou mic care asigură tensiune constantă motoarelor, precum și suportul plăcii Arduino cu un control bun al mișcării și tensiunii.

5- Senzor cu ultrasunete

Senzorul cu ultrasunete este utilizat pentru localizarea robotului adversarului și este de obicei plasat în partea superioară a robotului.

6- IR TCRT5000

După cum am menționat deja, inelul de concurs proiectat într-o anumită dimensiune și are două culori, umplutura este neagră și rama este albă. Concurentul nu trebuie să iasă. Prin urmare, folosim senzorul IR pentru a ne asigura că robotul nu va ieși din inel. Acest senzor are capacitatea de a distinge între culorile inelului).

7- Baterie 9v

Suportă placa principală (Arduino) cu tensiunea importantă.

8- baterie AA 4 * 1,5 v bucăți + baterie

Acesta susține cele două motoare (DC Motor) cu tensiunea importantă și trebuie separat pentru a da forța maximă pentru roți.

9- fire de jumper

Pasul 3: Proiectare

Proiecta
Proiecta
Proiecta
Proiecta

Am realizat două modele de robot sumo folosind schița Google 3D, deoarece îmi place să creez modele de hârtie ale roboților mei înainte de a tăia piese din acril pe tăietorul laser. Pentru a verifica dacă toate piesele se potrivesc corect, este important ca modelele de hârtie să fie tipărite la dimensiunea exactă a desenelor.

Și iau în considerare faptul că sunt în măsurători specifice cu legile concurenței, așa că încercați să vă gândiți într-un design mai creativ și să vă faceți propriul model.

Pentru a fi mai sensibil la greutatea robotului prezentat sau apoi puneți bateriile în partea din față a robotului cu scutul frontal la un unghi de 45 de grade față de forma robotului.

Descărcați designul 1 de aici

Descărcați designul 2 de aici

De asemenea, puteți descărca șablonul modelului de hârtie

Deschideți fișierul PDF cu Adobe Acrobat Reader (software recomandat)

Pasul 4: Joacă strategie

Image
Image
Joacă Strategie
Joacă Strategie

După cum am menționat anterior, robotul trebuie să aibă propria capacitate de a-l controla, așa că ne oferă posibilitatea de a-l programa în mai multe moduri, în funcție de modul în care doriți ca robotul să joace pe ring la fel ca orice adversar din doresc cu adevărat să câștig jocul.

Strategia de joc (1):

· Vom face robotul în jurul său în mod continuu.

· Robotul măsoară întotdeauna distanța continuu în timpul rotației.

· Dacă distanța măsurată a adversarului este mai mică de (10 cm, de exemplu), înseamnă că adversarul se află în fața robotului direct.

· Robotul trebuie să se oprească din rotație și apoi să înceapă atacul (înaintează rapid cu toată forța).

· Robotul trebuie să preia citirile de la senzorii IR întotdeauna pentru a fi siguri că nu am traversat marginea inelului.

· Dacă este citit prezența IR de culoare albă, acesta trebuie să deplaseze robotul direct în direcția opusă a senzorului (de exemplu: Dacă senzorul frontal, care a indicat culoarea albă a robotului, se mișcă înapoi)!

Strategia de joc (2):

· La start robotul măsoară distanța din față.

· Robotul se deplasează înapoi pe aceeași distanță măsurată.

· Robotul se oprește din rotire și apoi începe atacul brusc (mergeți înainte cu toată forța).

· În cazul atașării adversarului, robotul trebuie să se rotească cu 45 de grade pentru a supraviețui singur dacă cade din inel.

· Robotul trebuie să preia citirile de la senzorii IR întotdeauna pentru a fi siguri că nu am traversat marginea inelului.

· Dacă este citit prezența IR de culoare albă, acesta trebuie să deplaseze robotul direct în direcția opusă a senzorului (de exemplu: Dacă senzorul frontal, care a indicat culoarea albă a robotului, se mișcă înapoi)!

Pasul 5: Programare

Programare
Programare

vă rugăm să verificați circuitul și codul

* Actualizare 2019-03-26

Descărcați mai întâi biblioteca cu ultrasunete de aici și instalați-o:

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

/*

de ahmed Azouz

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

Descărcați mai întâi lib de aici

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

*/

#include Ultrasonic.h

Ultrasunete cu ultrasunete (4, 3);

const int IN1 = 5;

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

configurare nulă ()

{Serial.begin (9600); întârziere (5000); // conform rolurilor compat sumo} void loop () {int IR_front = analogRead (IR_sensor_front); int IR_back = analogRead (IR_sensor_back); distanță = ultrasonic.read (); ROTAȚI (200); // start rotete if (distanță <20) {Stop (); while (distanța 650 || IR_back> 650) {pauză;} întârziere (10); } if (IR_front <650) // <650 înseamnă linia albă {Stop (); întârziere (50); SPATE (255); întârziere (500); } if (IR_back <650) // {Stop (); întârziere (50); ÎNAINTE (255); întârziere (500); } / * ----------- depanare -------------- Serial.print (ultrasonic. Ranging (CM)); Serial.println ("cm"); Serial.println ("IR front:"); Serial.println (IR_front); Serial.println ("IR înapoi:"); Serial.println (IR_back); * /

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

void FORWARD (int Speed) {// Când vrem să lăsăm Motorul să avanseze, // doar anulați această parte în secțiunea buclă. analogWrite (IN1, Speed); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, Speed); } // -------------------------------------------- void BACKWARD (int Speed) {// Când vrem să lăsăm Motorul să avanseze, // doar anulează această parte din secțiunea buclă. analogWrite (IN1, 0); analogWrite (IN2, Speed); analogWrite (IN3, Speed); analogWrite (IN4, 0); } // -------------------------------------------- anula ROTARE (int Speed) {// Când vrem să lăsăm Motorul să se rotească, // doar anulăm această parte din secțiunea buclă. analogWrite (IN1, Speed); analogWrite (IN2, 0); analogWrite (IN3, Speed); analogWrite (IN4, 0); } // -------------------------------------------- void Stop () {// Când vrem să oprim motorul, // doar anulăm această parte din secțiunea buclă. analogWrite (IN1, 0); analogWrite (IN2, 0); analogWrite (IN3, 0); analogWrite (IN4, 0); }

Recomandat: