Spisu treści:

Robot Arduino Sumo: 5 kroków
Robot Arduino Sumo: 5 kroków

Wideo: Robot Arduino Sumo: 5 kroków

Wideo: Robot Arduino Sumo: 5 kroków
Wideo: robot race. line follower robot with arduino program 2024, Lipiec
Anonim
Arduino Sumo Robot
Arduino Sumo Robot

Zanim zaczniemy

Czym jest robot sumo?

Jest to samosterujący się robot o określonych wymiarach i funkcjach, jest również zaprojektowany w wrogich kształtach, które kwalifikują go do udziału w zawodach i zawodach z innymi robotami.

Nazwa „sumo” wzięła się od starego japońskiego sportu, czyli dwóch przeciwników walczących na ringu, z których każdy próbuje wypchnąć z niego drugiego przeciwnika. I to właśnie powinny robić roboty w zawodach robotyki sumo, gdzie dwa roboty ustawione w ringu i wzajemnie próbujące wypchnąć swojego przeciwnika.

Pomysł:

Zbuduj robota o określonych specyfikacjach i zgodnych z prawami tej konkurencji (Sumo), ten robot musi mieć dokładne wymiary, aby walczyć i przetrwać, aby w żaden sposób nie został skreślony z ringu.

Przyjrzyjmy się więc przepisom dotyczącym konkurencji robotów Sumo:

Wyjaśnię kilka ważnych ról, które należy wziąć pod uwagę podczas budowania własnego SUMO, może to również pomóc w wyobrażeniu i zinnowowaniu własnego pomysłu bez wnikania w szczegóły.

1. Wymiary: maksymalna szerokość 20 cm, maksymalna długość 20 cm, wysokość nie określona.

2. Kształt: kształt robota można zmienić po rozpoczęciu wyścigu, ale bez nierozłącznych części, które utrzymują się jako jeden centralny obiekt.

3. Waga: nie przekracza 3 kg.

4. Robot musi być samokontrolujący.

Krok 1: Komponenty

Image
Image
Zastosowania dla każdego komponentu
Zastosowania dla każdego komponentu

1 Arduino Ano3

2 Silnik prądu stałego

1 mostek L298N Dual H dla Arduino

1 czujnik ultradźwiękowy

2 IR TCRT5000

1 bateria 9v

Bateria AA 4*1.5 v sztuk + komora baterii

4 koła robota

przewody połączeniowe

Krok 2: Zastosowania dla każdego komponentu

Zastosowania dla każdego komponentu
Zastosowania dla każdego komponentu
Zastosowania dla każdego komponentu
Zastosowania dla każdego komponentu

Teraz mamy wymagane komponenty, więc przejdźmy do szczegółów, aby dowiedzieć się, do czego służy …

1- Arduino Ano3

Jest to płyta główna, która kontroluje wszystkie części i łączy je ze sobą

2-silnik prądu stałego

Które pomagają robotowi manewrować i poruszać się w pierścieniu KONKURENCJI

4-L298N Podwójny mostek H dla Arduino

Jest to niewielki panel, który dostarcza stałe napięcie do silników, a także podporę płytki Arduino z dobrą kontrolą ruchu i napięcia.

5-Czujnik ultradźwiękowy

Czujnik ultradźwiękowy służy do lokalizowania robota przeciwnika i jest zwykle umieszczany na górze robota.

6-IR TCRT5000

Jak już wspomnieliśmy, pierścionek konkursowy zaprojektowany w określonym rozmiarze i w dwóch kolorach, wypełnienie jest czarne, a ramka biała. Zawodnik nie powinien wychodzić. Dlatego używamy czujnika IR, aby mieć pewność, że robot nie wyjdzie poza ring. Ten czujnik ma możliwość rozróżniania kolorów pierścienia).

7- Bateria 9v

Obsługuje płytę główną (Arduino) z ważnym napięciem.

8-bateria AA 4*1.5 v sztuk + komora baterii;

Obsługuje dwa silniki (silnik prądu stałego) ważnym napięciem i musi być oddzielony, aby zapewnić pełną siłę dla kół.

9- Przewody połączeniowe

Krok 3: Projekt

Projekt
Projekt
Projekt
Projekt

Zrobiłem dwa projekty robotów sumo, korzystając ze szkicu Google 3D, ponieważ lubię tworzyć papierowe modele moich robotów, zanim wycinam części z akrylu na wycinarce laserowej. Aby sprawdzić, czy wszystkie części będą do siebie pasować, ważne jest, aby papierowe modele były drukowane w dokładnym rozmiarze rysunków.

A ja biorę pod uwagę, aby dokładnie mierzyć się z przepisami o konkurencji, więc staraj się myśleć w bardziej kreatywnych projektach i stwórz swój własny model.

Aby być bardziej wrażliwym na wagę robota należy włożyć baterie z przodu robota z przednią osłoną pod kątem 45 stopni do kształtu robota.

Pobierz projekt 1 stąd

Pobierz projekt 2 stąd

Możesz również pobrać szablon modelu papieru

Otwórz plik PDF za pomocą programu Adobe Acrobat Reader (zalecane oprogramowanie)

Krok 4: Zagraj w strategię

Image
Image
Graj w strategię
Graj w strategię

Jak wspomnieliśmy wcześniej, robot musi mieć własną zdolność do samodzielnego kontrolowania siebie, więc daje nam to możliwość zaprogramowania go na więcej niż jeden sposób, w zależności od tego, jak chcesz, aby robot grał na ringu tak samo, jak każdy przeciwnik w naprawdę chcą wygrać grę.

Strategia gry (1):

· Będziemy nieustannie otaczać się robotem.

· Robot zawsze mierzy odległość w sposób ciągły podczas obrotu.

· Jeśli zmierzona odległość przeciwnika jest mniejsza niż (na przykład 10 cm), oznacza to, że przeciwnik znajduje się bezpośrednio przed robotem.

· Robot musi przestać się obracać, a następnie rozpocząć atak (szybko poruszać się do przodu z pełną siłą).

· Robot musi zawsze pobierać odczyty z czujników podczerwieni, aby mieć pewność, że nie przekroczyliśmy granicy pierścienia.

· W przypadku odczytu obecności IR koloru białego, należy przesunąć robota bezpośrednio w kierunku przeciwnym do czujnika (na przykład: Jeżeli czujnik przedni, który dał wskazanie koloru białego, robot porusza się do tyłu)!

Strategia gry (2):

· Na początku robot mierzy odległość z przodu.

· Robot cofa się o tę samą zmierzoną odległość.

· Robot przestaje się obracać i nagle zaczyna atakować (poruszać się do przodu z pełną siłą).

· W przypadku przyczepienia przeciwnika robot musi obracać się o 45 stopni, aby przetrwać, jeśli wypadnie z ringu.

· Robot musi zawsze pobierać odczyty z czujników podczerwieni, aby mieć pewność, że nie przekroczyliśmy granicy pierścienia.

· W przypadku odczytu obecności IR koloru białego, należy przesunąć robota bezpośrednio w kierunku przeciwnym do czujnika (na przykład: Jeżeli czujnik przedni, który dał wskazanie koloru białego, robot porusza się do tyłu)!

Krok 5: Programowanie

Programowanie
Programowanie

proszę sprawdzić obwód i kod!

* Aktualizacja 26.03.2019

Pobierz najpierw bibliotekę ultradźwiękową stąd i zainstaluj ją:

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

/*

autor: Ahmed Azouz

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

Najpierw pobierz bibliotekę stąd

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

*/

#include Ultrasonic.h

Ultradźwiękowy ultradźwiękowy(4, 3);

const int IN1=5;

const int IN2=6; const int IN3=9; const int IN4=10; #define IR_sensor_front A0 // czujnik przedni #define IR_sensor_back A1 // odległość int czujnika tylnego;

pusta konfiguracja()

{ Szeregowy.początek(9600); opóźnienie (5000); // zgodnie z rolami sumo compat } void loop() { int IR_front = analogRead(IR_sensor_front); int IR_back = analogRead(IR_sensor_back); odległość = ultradźwięk.odczyt(); OBRÓĆ(200); // uruchom rotete if (odległość < 20){ Stop(); while (odległość 650 || IR_back > 650) { break;} delay(10); } if (IR_front < 650) // < 650 oznacza białą linię { Stop(); opóźnienie (50); DO TYŁU(255); opóźnienie (500); } if (IR_back < 650) // { Stop(); opóźnienie (50); DO PRZODU (255); opóźnienie (500); } /* ----------- debugowanie ---------------- Serial.print(ultrason. Ranging(CM)); Serial.println("cm"); Serial.println("Przód IR:"); Serial.println(IR_front); Serial.println("IR tył:"); Serial.println(IR_back); */

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

void FORWARD (int Speed){ //Gdy chcemy, aby Motor poruszał się do przodu, // po prostu unieważnij tę część w sekcji pętli. zapis analogowy (IN1, prędkość); analogZapis(IN2, 0); analogZapis(IN3, 0); zapis analogowy (IN4, prędkość); }//------------------------------------------- nieważne WSTECZ (int Speed){ //Gdy chcemy, aby Motor poruszał się do przodu, // po prostu anuluj tę część w sekcji pętli. analogZapis(IN1, 0); zapis analogowy (IN2, prędkość); zapis analogowy (IN3, prędkość); analogZapis(IN4, 0); }//------------------------------------------- nieważne OBRÓĆ (int Speed) { //Gdy chcemy pozwolić Motor To Rotate, // po prostu unieważnij tę część w sekcji pętli. zapis analogowy (IN1, prędkość); analogZapis(IN2, 0); zapis analogowy (IN3, prędkość); analogZapis(IN4, 0); }//------------------------------------------- void Stop(){ //Kiedy chcemy zatrzymać ruch, // po prostu anuluj tę część w sekcji pętli. analogZapis(IN1, 0); analogZapis(IN2, 0); analogZapis(IN3, 0); analogZapis(IN4, 0); }

Zalecana: