İçindekiler:

Arduino Sumo Robotu: 5 Adım
Arduino Sumo Robotu: 5 Adım

Video: Arduino Sumo Robotu: 5 Adım

Video: Arduino Sumo Robotu: 5 Adım
Video: Adım Adım Mini Sumo Robot Yapımı 2024, Temmuz
Anonim
Arduino Sumo Robotu
Arduino Sumo Robotu

Başlamadan önce.

Sumo robotu nedir?

Belirli boyut ve özelliklere sahip kendi kendini kontrol eden bir robottur, ayrıca diğer robotlarla yarışmalara ve yarışmalara katılmaya hak kazanan bir Düşman şekillerde tasarlanmıştır.

"Sumo" adı, iki rakibin bir ringde dövüşmesi ve her birinin diğer rakibi ondan dışarı atmaya çalışması anlamına gelen eski bir Japon sporundan gelmektedir. ringe yerleştirilen robotlar ve birbirlerine rakiplerini itmeye çalışıyorlar.

Fikir:

Belirli özelliklere sahip bir robot yapın ve o yarışmanın (Sumo) yasalarına uygun bir robot yapın, bu robotun savaşmak için tam boyutlarda olması ve hiçbir şekilde çemberin dışına çıkmaması için hayatta kalması gerekir.

O halde Sumo robot rekabet yasalarına bir göz atalım:

Kendi SUMO'nuzu oluştururken göz önünde bulundurmanız gereken bazı önemli rolleri açıklayacağım, ayrıca derin ayrıntılara girmeden kendi Fikrinizi hayal etmenize ve geliştirmenize yardımcı olabilir.

1. Boyutlar: Maksimum Genişlik 20 cm, Maksimum Uzunluk 20 cm, Yükseklik belirtilmemiştir.

2. Şekil: Robot şekli yarışa başladıktan sonra değiştirilebilir, ancak tek bir merkezi Nesne olmayı sürdürmek için ayrılmaz parçalar olmadan.

3. Ağırlık: 3 kg'ı geçmez.

4. Robot kendi kendini kontrol edebilmelidir.

Adım 1: Bileşenler

Image
Image
Her Bileşen için Kullanım Alanları
Her Bileşen için Kullanım Alanları

1 Arduino Ano3

2 DC Motor

Arduino için 1 L298N Çift H Köprüsü

1 Ultrasonik sensör

2 IR TCRT5000

1 Pil 9v

AA pil 4*1.5 v adet + Pil yuvası

4 Robot Tekerleği

atlama telleri

Adım 2: Her Bileşen İçin Kullanımlar

Her Bileşen için Kullanım Alanları
Her Bileşen için Kullanım Alanları
Her Bileşen için Kullanım Alanları
Her Bileşen için Kullanım Alanları

Artık gerekli bileşenlere sahibiz, o yüzden ne için kullanıldığını öğrenmek için ayrıntılara geçelim..

1- Arduino Ano3

Tüm parçaları kontrol eden ve birbirine bağlayan bir ana karttır.

2- DC Motor

Robotun YARIŞMA halkası içinde manevra yapmasına ve hareket etmesine yardımcı olan

4- Arduino için L298N Çift H Köprüsü

Motorlara sabit voltaj sağlayan, ayrıca iyi hareket ve voltaj kontrolü ile Arduino plakasının desteğini sağlayan küçük bir paneldir.

5- Ultrasonik sensör

Ultrasonik sensör, rakibin robotunu bulmak için kullanılır ve genellikle robotun üstüne yerleştirilir.

6- IR TCRT5000

Daha önce de belirttiğimiz gibi yarışma yüzüğü belli ölçülerde tasarlanmış ve iki renk, dolgu siyah ve çerçeve beyazdır. Yarışmacı dışarı çıkmamalıdır. Bu nedenle robotun ring dışına çıkmamasını sağlamak için IR sensörünü kullanıyoruz. Bu sensör, halkanın renklerini ayırt etme yeteneğine sahiptir).

7- Pil 9v

Ana kartı (Arduino) önemli voltajla destekler.

8- AA pil 4*1.5 v adet + Pil yuvası

Önemli gerilim ile iki motoru (DC Motor) destekler ve tekerleklere tam kuvvet verecek şekilde ayrılmalıdır.

9- Jumper kabloları

Adım 3: Tasarım

Tasarım
Tasarım
Tasarım
Tasarım

Lazer kesicide akrilikten parçalar kesmeden önce robotlarımın kağıt modellerini oluşturmayı sevdiğim için Google 3D Sketch-up'ı kullanarak iki sumo robot tasarımı yaptım. Tüm parçaların düzgün bir şekilde birbirine oturduğunu doğrulamak için kağıt modellerin tam çizimler boyutunda yazdırılması önemlidir.

Ve rekabet yasaları ile belirli ölçülerde olmayı dikkate alıyorum, bu yüzden daha yaratıcı tasarımlarda düşünmeye çalışın ve kendi modelinizi yapın.

Gönderilen robot ağırlığına daha duyarlı olmak için veya daha sonra pilleri robotun önüne 45 derecelik bir açıyla ön kalkan ile robotun formuna yerleştirin.

Tasarım 1'i buradan indirin

Tasarım 2'yi buradan indirin

Ayrıca Kağıt model şablonunu da indirebilirsiniz.

PDF dosyasını Adobe Acrobat Reader ile açın (önerilen yazılım)

4. Adım: Oyun Stratejisi

Image
Image
Oyun Stratejisi
Oyun Stratejisi

Daha önce de belirttiğimiz gibi, robotun kendi kendini kontrol etme yeteneğine sahip olması gerekir, bu yüzden bize onu birden fazla şekilde programlama yeteneği verir, bu, tıpkı herhangi bir rakip gibi, robotun ringde nasıl oynamasını istediğinize bağlı olarak değişir. gerçek oyunu kazanmak istiyorum.

Oyun stratejisi (1):

· Robotu sürekli kendi etrafında yapacağız.

· Robot dönüş sırasında sürekli olarak mesafeyi ölçer.

· Rakibin ölçülen mesafesi (örneğin 10 cm'den) daha düşükse, rakip doğrudan robotumuzun önünde demektir.

· Robot dönmeyi durdurmalı ve ardından saldırıya başlamalıdır (hızlı bir şekilde tam güçle ileri hareket edin).

· Robot, halka sınırını geçmediğimizden emin olmak için her zaman IR sensörlerinden okuma yapmalıdır.

· Beyaz rengin IR varlığının Okunması durumunda, robotu doğrudan sensörün ters yönüne hareket ettirmelidir (örneğin: Robotun beyaz rengini gösteren ön sensör geriye doğru hareket ederse)!

Oyun stratejisi (2):

· Başlangıçta robot öndeki mesafeyi ölçün.

· Robot aynı ölçülen mesafeyi geri hareket ettirir.

· Robot dönmeyi durdurur ve sonra aniden saldırmaya başlar (tam güçle ileri hareket eder).

· Rakip takma durumunda robot, ringden düşerse hayatta kalabilmek için 45 derece dönmelidir.

· Robot, halka sınırını geçmediğimizden emin olmak için her zaman IR sensörlerinden okuma yapmalıdır.

· Beyaz rengin IR varlığının Okunması durumunda, robotu doğrudan sensörün ters yönüne hareket ettirmelidir (örneğin: Robotun beyaz rengini gösteren ön sensör geriye doğru hareket ederse)!

Adım 5: Programlama

Programlama
Programlama

lütfen devreyi ve kodu kontrol edin

* Güncelleme 2019-03-26

Önce Ultrasonik kütüphaneyi buradan indirin ve kurun:

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

/*

ahmed Azouz tarafından

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

Önce lib'i buradan indirin

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

*/

#include Ultrasonic.h

Ultrasonik ultrasonik(4, 3);

const int IN1=5;

const int IN2=6; const int IN3=9; const int IN4=10; #define IR_sensor_front A0 // ön sensör #define IR_sensor_back A1 // arka sensör int mesafesi;

geçersiz kurulum()

{ Serial.başlangıç(9600); gecikme (5000); // sumo uyumlu rollere göre } void loop() { int IR_front = analogRead(IR_sensor_front); int IR_back = analogRead(IR_sensor_back); mesafe = ultrasonic.read(); DÖNDÜR(200); // ezbere başla if (mesafe < 20){ Stop(); while (mesafe 650 || IR_back > 650) { break;} gecikme(10); } if (IR_front < 650) // < 650 beyaz çizgi anlamına gelir { Stop(); gecikme (50); GERİ(255); gecikme (500); } if (IR_back < 650) // { Stop(); gecikme (50); İLERİ(255); gecikme (500); } /* ----------- hata ayıklama ---------------- Serial.print(ultrasonic. Ranging(CM)); Seri.println("cm"); Serial.println("IR ön:"); Serial.println(IR_front); Serial.println("IR geri:"); Serial.println(IR_back); */

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

void FORWARD (int Speed){ //Motorun ileri gitmesine izin vermek istediğimizde // bu kısmı döngü bölümünde geçersiz kılmanız yeterli. analogWrite(IN1, Hız); analogWrite(IN2, 0); analogWrite(IN3, 0); analogWrite(IN4, Hız); }//------------------------------------------- geçersiz GERİ (int Speed){ //Motorun ilerlemesine izin vermek istediğimizde // bu kısmı döngü bölümünde geçersiz kılalım. analogWrite(IN1, 0); analogWrite(IN2, Hız); analogWrite(IN3, Hız); analogWrite(IN4, 0); }//------------------------------------------- geçersiz ROTATE (int Speed) { //Motorun Dönmesine İzin Vermek istediğimizde // bu kısmı loop bölümünde geçersiz kılalım. analogWrite(IN1, Hız); analogWrite(IN2, 0); analogWrite(IN3, Hız); analogWrite(IN4, 0); }//------------------------------------------ geçersiz Dur(){ //Motoru durdurmak istediğimizde // bu kısmı döngü bölümünden geçersiz kılalım. analogWrite(IN1, 0); analogWrite(IN2, 0); analogWrite(IN3, 0); analogWrite(IN4, 0); }

Önerilen: