Merhaba arkadaşlar, tüm robot yarışmalarında vazgeçilmez kategori olan çizgi izleyen robot yarışmaları için geliştirdiğimiz Siroline Temel Çizgi İzleyen Robotun yapım ve kodlama aşamalarını anlatacağım. Umarım faydalı olur ve beğenirsiniz.
Önemli Bilgilendirme:
- Bu robot MEB Robot Yarışması Temel Seviye Çizgi İzleyen Kategorisi Şartnamesine uygun olacak şekilde tasarlanmaya çalışılmıştır.
- Performanstan ödün vermeden mBlock ile blok tabanlı olarak kodlanabilmektedir. Bu sayede kodları çocukların yazması amaçlanmıştır.
- PID algoritması kullanılarak hızlı çizgi izleme ve Encoder kullanılarak istenilen yerlerde hızlandırma, yavaşlatma özelliği bulunmaktadır.
- Kod yazımı ve karşınıza çıkabilecek tüm algoritmalara çözümler Sıfırbir Yayınları Robotik Kodlama kitabında paylaşılmıştır.
KULLANILAN MALZEMELER
MALZEME ADI | ADET |
Arduino Nano | 1 |
Siroline Kontrol Kartı | 1 |
TB6612FNG Motor Sürücü | 1 |
QTR 8A Kızılötesi Sensör | 1 |
QTR 8A Kızılötesi Sensör | 2 |
6-12V Plastik Redüktörlü Motor | 2 |
2mm 2 Pin JST Kablo (Motor Kart Bağlantısı) | 2 |
3S- 11.1 Lipo Pil | 1 |
JST Kablo- (Lipo Pil Kart Bağlantısı) | 1 |
Dişi-Dişi Jumper Kablo (QTR-8A Kart Bağlantısı) | 40 |
Silikon Teker | 2 |
Siroline Temel Çizgi İzleyen Robot Şasesi | 1 |
QTR Koruyucu- Tutucu | 1 |
Motor Tutucu | 2 |
Distance- Yükseltici | 4 |
Sarhoş Teker | 2 |
Vida ve Somun (3 Metrik) | 30 |
Robot üzerinde kullanılan malzemeler yukarıda tablo halinde verilmiştir. Set haline https://www.turnafor.com/urun/siroline-temel-cizgi-izleyen-robot-kiti adresinden ulaşabilirsiniz. Detaylı bilgi için mutlaka İnstagram hesabım üzerinden bana ulaşabilirsiniz.
MONTAJ KILAVUZU
Montaj kılavuzu pdf olarak eklenecektir.
KOD YÜKLEME VE İYİLEŞTİRME İŞLEMLERİ
1- KART SEÇİMİNİ YAPALIM
Robotumuzda aygıt olarak Arduino Nano ekleyeceğiz. Aygıt ekle bölümünde Nano şeklinde arama yaptığımızda 2 farklı aygıt olduğunu görüyoruz. İkisi de aynı fakat birinde parantez içinde (Old Bootloader) yazar.
Önce birini seçip kablo ile bağlantısını yapalım. Kod alanına “Arduino başlatıldığında” kod bloğunu ekleyerek yükleme yapalım. Sadece aşağıdaki kod bloğunu yazacağız.
Eğer yükleme yapıyorsa doğru kart seçimi yapmışız demektir. Yükleme yapmaz ise diğer modeli seçerek tekrar deneyelim.
2- ÇİZGİ İZLEYEN ROBOT UZANTISINI YÜKLEYELİM
Çizgi izleyen robot projeleri genellikle yüksek performans alabilmek için Arduino IDE ile metin tabanlı olarak kodlanmaktadır. Performans kaybı olmadan blok tabanlı kodlayabilmek için Çizgi İzleyen Robot Uzantısı oluşturulmuştur.
Robotumuzu yaparken bu uzantıyı kullanacağız Kartımızı ekledikten sonra uzantı ekleme bölümüne girelim ve arama kısmına “Çizgi İzleyen Robot” yazarak görselde verilen uzantıyı bularak ekleyelim.
Uzantıyı ekledikten sonra QTR 8A kızılötesi sensöründen değer alabilecek ve alınan değerlere göre motor güçlerini ayarlayabileceğimiz kod blokları kullanılabilir hale gelecektir.
3- MOTOR BAĞLANTILARINI KONTROL EDELİM
Ana kodlara geçmeden önce robotumuzun motorlarını doğru şekilde bağlayıp bağlamadığımızı kontrol edelim. Bunun için aşağıdaki kod bloklarını yazarak karta yükleyelim.
Görselde verilen kod bloklarını robotumuza yüklediğimizde robotumuzun sağ ve sol motoru 100 hızında ileri doğru hareket etmesi gerekmektedir. Eğer herhangi bir motorumuz ters yönde hareket ediyorsa ilgili motorun M1 ve M2 değerlerini değiştirerek tekrar yükleme yapmalıyız. Bu kod bloklarını yükleyip deneme yapmadan diğer kodlara geçmeyelim. Motorlardan herhangi birinin ters bağlanmış olması robotun düzgün çalışmasını engelleyecektir.
4- ÇİZGİYİ İZLETELİM
Robotumuzun düz veya hafif eğimli çizgi takibi için kullandığı kodların tamamı uzantı içerisinde verilmiş olup görselde verildiği gibidir.
Yukarıdaki kod bloklarını yazdığımızda Çizgi İzleyen Robotumuz sorunsuz bir şekilde çizgi takibi yapacaktır. Bu kodları yükledikten sonra yapmamız gereken en önemli şey robotta olan salınımı azaltmaktır. Bunun için en ideal Taban Hız, Kp ve Kd değerlerini bulmalıyız.
2024 MEB Robot Yarışma pisti üzerinde yapılan deneme sonucu aşağıya eklenmiştir.
5- ENCODER İLE MESAFEYE GÖRE İLERLEYELİM
Encoder özelliği sayesinde robot tekerlerin dönüş sayısına göre alınan mesafeyi hesaplayabilmektedir. Bu özellik robotun belirli aralıklarla hız değiştirmesine olanak sağlamaktadır. Çok virajlı yerlerde hızı azaltırken düz yerlerde hız artırma imkanı sunmaktadır. Kullanımı için aşağıdaki kod bloklarını yazmamız gerekmektedir.
Bu bölümde ek kod olarak Encoder Tanımla Teker Çapı ….. , Sol Encoder 4 , Sağ Encoder 3 Yap kodu eklenmiştir. Burada teker çapı varsayılan olarak 4.5 cm olarak verilmiştir. Farklı boyutlarda bir teker kullanıyorsak doğru hesap yapabilmesi için bu kısmı değiştirmemiz gerekmektedir. Sürekli Tekrarla bloğu içerisine ise Encoder Say fonksiyonu eklenerek robotun sürekli olarak alınan mesafeyi hesaplayarak Uzunluk isimli değişkende tutması sağlanmaktadır.
Bundan sonra yapılacak tek işlem bir eğer koşulu kullanılarak uzunluk değerine göre işlem yapması sağlamaktır. Örnek kodumuzda uzunluk değeri 500 ü geçtiğinde robotun durması sağlanmıştır. Dilersek burada hızı artırıp azaltma ve diğer değerleri değiştirme işlemleri yapabiliriz.
Encoder özelliği kullanılarak belirli bir mesafe sonra robotun durduğunu gösteren video aşağıya eklenmiştir.
6- MEB ROBOT YARIŞMASI DERECELERİ
Robotumuz Türkiye’nin En büyük temel seviye çizgi izleyen yarışmasında kendini gösterdi. Ödülleri alarak döndü.
7- DİĞER ÇİZGİ İZLEYEN ROBOT ALGORİTMALARINI İNCELEYELİM.
Bu kısımda 90 Derece – Kesik Çizgi – Bitiş Çizgisi – Yol Ayrımı gibi robotun karşılaşabileceği yollar üzerinde yapılabilecek çözüm algoritmaları paylaşılacaktır.
Sorularınızı aşağıya yorum olarak bırakabilirsiniz. Faydalı olması dileğiyle.
İlk yorum yapan olun