Merhaba arkadaşlar. Bu yazımızda “Çizgi İzleyen Robot nedir, nasıl yapılır?” konularından bahsedeceğiz.

Çizgi izleyen robotu yap, sonra engelden kaçanı da yapmanı tavsiye ederiz 🙂 >>>>Engelden Kaçan Robotu Da Yap!
Genel olarak robot yapımı ile alakalı detaylı içeriğimizi de okuyabilirsiniz. >>>> Genel olarak detaylı robot yapımı yazımızı da incele!

Çizgi İzleyen Robot Nedir?

Çizgi izleyen robot, gideceği yolu otonom olarak takip eden robot tipidir. Takip edeceği yol, siyah düzlemin üstünde beyaz çizgi veya beyaz düzlemin üstünde siyah çizgi olacak şekilde hazırlanabilir. Robot bu takip etme işlemini sensörleri vasıtasıyla renk farkını algılayarak yapmaktadır.

Yarışmalar için hazırlanmış bir çizgi izleyen robotun yol takibinin iyi olması dışında yolu kısa sürede tamamlayabilmesi için hızlı olması gerekir. Hızlı bir robotun anlık yol takibi yapabilmesi için dengesinin de iyi olması gerekir. Bu yüzden kullandığınız gövde, sensör ve motor seçimi de önemlidir.

Endüstriyel sektörde de çizgi izleyen robot mantığında robotlar bulunmakta fakat biz bu yazımızda hobi amaçlı çizgi izleyen robotları inceleyeceğiz.

Arduino ile Çizgi İzleyen Robot Nasıl Yapılır?

Robotumuz, 3 adet kızılötesi sensör ile hangi yöne gitmesi gerektiğini belirleyecek. Robotumuzun hızını ve yönünü bir motor sürücü ile kontrol edeceğiz.

Gerekli Malzemeler

Çizgi İzleyen Robot Devresi

 

 

çizgi izleyen robot devresi

Her şey tamamsa robotumuzun montajına başlayabiliriz.

Öncelikle Arduinomuzu, sürücümüzü, sensörlerimizi ve pilimizi robot platformunda nereye yerleştireceğimize karar vermeliyiz. Sonrasında ise platformu kılavuzdaki adımları takip ederek monte ediyoruz. Devre bağlantılarını da gerçekleştirdikten sonra robotumuz programlanmaya hazır hale geliyor.

Gövde Montajı

Çizgi İzleyen Robot Montajı

Sensörleri 90 derece açı ile aşağıya bükmemiz gerekiyor ki yüzeydeki rengi sağlıklı bir şekilde görebilsin.

Arduino Programı

Arduino programını yazmadan önce çizgi izleyen sensörün çalışma mantığından bahsetmek istiyorum. Kullanacağımız sensörler dijital çıkış verdiklerinden dolayı siyah ve beyaz gördüklerinde çıkış sinyalleri 0 veya 1 olacaktır. Sensör siyah gördüğünde hangi değeri verdiğini bu yazılım ile test edebilirsiniz:

#define SensorSol 10
#define SensorOrta 11   // Sensör pinlerini tanımlıyoruz.
#define SensorSag 12

void setup() {

  pinMode(SensorSol, INPUT);
  pinMode(SensorOrta, INPUT); //Sensörlerimizi giriş olarak tanımlıyoruz.
  pinMode(SensorSag, INPUT);
  Serial.begin(9600);  //Seri haberleşmeyi başlatıyoruz.
  Serial.println("Cizgi Sensoru Testi");
  delay(2000);
}

void loop() {
  Serial.print(digitalRead(SensorSol));
  Serial.print(",");
  Serial.print(digitalRead(SensorOrta));
  Serial.print(",");
  Serial.println(digitalRead(SensorOrta));
  delay(100);
}

Sensörlerimizin siyah görüğünde “1” çıkış değerini aldığında oluşan mantık tablodaki gibidir.

Bu mantığa göre programlamaya başlıyoruz.

#define SensorSol 10  
#define SensorOrta 11
#define SensorSag 12

#define MotorR1 6
#define MotorR2 7 // Sensör ve Motorların Arduino'ya bağladığımız pinlerini tanımlıyoruz.
#define MotorRE 9

#define MotorL1 5
#define MotorL2 4
#define MotorLE 3



void setup() {
  
  pinMode(SensorSol, INPUT);
  pinMode(SensorOrta, INPUT);
  pinMode(SensorSag, INPUT);

  pinMode(MotorR1, OUTPUT); // Sensör ve Motorların Giriş-Çıkış bilgilerini belirtiyoruz.
  pinMode(MotorR2, OUTPUT);

  pinMode(MotorL1, OUTPUT);
  pinMode(MotorL2, OUTPUT);


}

void loop() {

  if(digitalRead(SensorSol) == 0 && digitalRead(SensorOrta) == 1 && digitalRead(SensorSag) == 0){  // Orta sensör çizgiyi gördüğünde robot ileri gitsin.
    ileri();
  }

  if(digitalRead(SensorSol) == 0 && digitalRead(SensorOrta) == 0 && digitalRead(SensorSag) == 1){  // Sağ sensör çizgiyi gördüğünde robot sağa dönsün.
    sag();
  }

  if(digitalRead(SensorSol) == 1 && digitalRead(SensorOrta) == 0 && digitalRead(SensorSag) == 0){  // Sol sensör çizgiyi gördüğünde robot sola dönsün.
    sol();
  }

 
  

}


void ileri(){  // Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz.

  digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
  digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
  analogWrite(MotorRE, 150); // Sağ motorun hızı 150

  digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
  digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
  analogWrite(MotorLE, 150); // Sol motorun hızı 150
  
  
}


void sag(){ // Robotun sağa dönme hareketi için fonksiyon tanımlıyoruz.

  digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
  digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
  analogWrite(MotorRE, 0); // Sağ motorun hızı 0 (Motor duruyor)

  digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
  digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
  analogWrite(MotorLE, 150); // Sol motorun hızı 150
  
  
}

void sol(){ // Robotun sola dönme hareketi için fonksiyon tanımlıyoruz.

  digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
  digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
  analogWrite(MotorRE, 150); // Sağ motorun hızı 150

  digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
  digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
  analogWrite(MotorLE, 0); // Sol motorun hızı 0 (Motor duruyor)
  
}

void dur(){ // Robotun durma hareketi için fonksiyon tanımlıyoruz.

  digitalWrite(MotorR1, HIGH);
  digitalWrite(MotorR2, LOW);
  digitalWrite(MotorRE, LOW);

  digitalWrite(MotorL1, HIGH);
  digitalWrite(MotorL2, LOW);
  digitalWrite(MotorLE, LOW);
  
}

Proje hakkında yorumlarınızı aşağıdaki ‘Yorumlar’ kısmında bizimle paylaşabilirsiniz.

Siz de yaptığınız projeleri Twitter ve Instagram üzerinden #Robotistan hashtagi ile bizimle paylaşın, projenizi hesabımızda paylaşalım !

Twitter ve Instagram Hesaplarımız: @Robotistan

Bu yazımızda bir çizgi izleyen robotun temel bileşenlerinden ve çalışma mantığından bahsederek basit bir uygulama yaptık. Yaptığımız robot öğretici amaçlı olup herhangi bir yarışma amacı taşımamaktadır. İsterseniz farklı gövde ve devre elemanları kullanarak da robotunuzun görünüşünü ve performansını değiştirebilirsiniz. Başka bir projede görüşmek dileğiyle, takipte kalın 🙂

88 Yorumlar

  1. abi ben devreyi kurdum motorlara güç gitmiyor robot olduğu yerde kalıyor sebebi nedir güç kaynağımda duracell

    • Pilinizin doluluğundan emin olun. Düşük pil seviyesi, motorlara yeterli akımı gönderemeyecektir.

  2. iyi günler dilerim. ben yaptım fakat şunu anlamadım.bu siyah beyaz sensörler varya onlar robotun arka tarafındamı oluyor yani robot hangi yöne gidecek ? montajı yaptım sadece sensör kaldıda

    • Bu Konuda Sizden Ben Bu Aşamaya Kadar Yardım Alabilirmiyim Yada Nasıl Iletisim Sağlayabilirim Çünkü Proje Ödevimmm.

      • iyi günler tayfun bey ben yaptım her şeyi oldu fakat pili bağlıyorum yani enerjiyi veriyorum çizgiyi görmeden sadece sağ tekerlek dönüyor sorun nedir ? söylerseniz sevinirim.

        • Sensörlerin çizgiyi görüp görmediğini kontrol edebilir misiniz? Tüm sensörler doğru çalışıyorsa motorların doğru çalıştığından emin olun.

          • bu sorunuda çözdüm fakat sensör sadece 0 görüyor bunun sorunu nedir lütfen cevap verirseniz sevinirim ne yaparsam yapayım her zaman 0 görüyor

    • Merhabalar, projede kullanmış olduğumuz motor sürücü olan L298N’nin datasheet’ine bakacak olursak, burada belirtilen değerin maksimum 24V olduğunu ve sürekli verebileceği akımın 2A olduğunu görüyoruz. Bu demektir ki maksimum olarak 50W güç sağlayabilecek bir motor sürücüye sahibiz. Bu sürücüyü 250W gücündeki bir motor ile kullanmamız malesef mümkün değildir.

  3. Merhaba;
    15.30 dk’ da ki motor sürücü kartından çıkış için kullanılan iki kablo ile pil yatağından çıkan iki kabloyu 20.40 dk’da ki klemens dönüştürücü yardımıyla arduinonun jak girişine takmak yerine başka bir seçenek var mı? Arduino ile ilgili bilgim kısıtlı. Devre şemasında biraz farklı gösterilmiş sanki o şekilde bağlamak istersem ne yapabilirim? Klemens dönüştürücüm yok ve hızlı temin edebileceğim bir yerde yok. Projeyi hızlı yapmam lazım. Şimdiden teşekkür ederim. Böyle bizlere yardım eden çalışmalarınızın devamını dilerim. Kolay gelsin.

  4. L298N voltaj regulatorlu çift motor surucu kartı ve çizgi izleyen sensor seti robotistanda tükenmiş bunlar yerine başka hangi malzeme kullanabilirim

  5. Bir yarışma için bu aracı yapacağız. Bunun gidiş hızını arttırma işlemini sadece kodlama ile mi gerçekleştiriyoruz, yoksa önerebileceğiniz bir motor var mı? Birde kulvarda dönüşlerde bu hız yüzünden parkur dışında kalmamak için ne yapabiliriz?

    • Merhabalar, yarışma amaçlı bir robot yapacaksanız daha hafif ve daha küçük boyutlu bir robot gövdesi kullanmanızı tavsiye ederiz. Bu gövdeye uyumlu olacak motorlar set içerisindekilerdir ve malesef daha yüksek hız sunamamaktadırlar.

  6. 4WD platform ile nasıl çizgi izleyen yapılır acilen yazabilir misiniz? Hemen yazabilirseniz muhteşem olur teşekkürler

  7. Çizgi izleyen ve engelde durup bekleyip engel kalkınca yoluna devam eden veya engelin çevresinden dolaşan robot kodu ve malzeme listesi pin şeması var mı ? Varsa malzelerı sizden siparis edeceğim.

  8. Merhaba videonuzdaki her şeyi yaptım fakat robot çalışmıyor, tekerliklerde dönmüyor sebebi nedir? Sadece sol teker döndü ve durdu. çalışmadı
    Ne yapmam lazım

    • Aynı robot gövdesini farklı sensörler ekleyip yazılımını değiştirerek istediğiniz amaçla kullanabilirsiniz.

      • Ben çizgi labirent çözen robot ile düşünüyorumda hocam 4lu çizgi sensor setinin kullanimi ile qtr 8rc ayni midir eger kullanilirsa baglantida digital pinler yeterli olurmu yoksa qtr 8rc de sadece analog pin mi kullanilir

    • Çalışma prensibinde bişey değişmez. Yine ortadaki sensörler gördüğü zaman ileri git, kenardakiler gördüğünde sensörün olduğu tarafın zıttına dönüş yap gibisinden bir algoritma geçerli olacaktır.

  9. Merhaba, robotu yaptım tüm parçaları eksiksiz kullandım robotu belirli bir yükseklikte tuttuğumda robot çalışıyor ancak yere bıraktığımda dönmeyi durduyor nasıl düzeltebilirim sizce ?

    • Sensörlerinizin hassasiyeti ile ilgili bir durum gibi görünüyor. Sensör kartında yer alan trimpotlar ile hassasiyet ayarını değiştirmeyi deneyebilirsiniz.

      • Teşşekkür ederim o sorunu hallettim de paylaştığınız kod bloğu hatalı mı ? çünkü robotumda sol ya da sağ sensör siyahı görünce herhangi bir motor durmuyor normal ilerlemesine devam ediyor.

    • Her üç sensör de siyah algılıyorsa burayı bir bitiş çizgisi olarak yorumlayıp robotun durmasını sağlayabilirsiniz.

  10. Merhabalar, kodda bulunan “motor hızı 150” komutunu 200 veya 300 olarak değiştirsek robot savrulabilirmi?

    • 150 değerini yalnızca 0-255 aralığında değiştirebilirsiniz. Robotunuz çok hızlı hareket ediyorsa elbette savrulabilir.

  11. Bir motor sanki diğerinden daha yavaş çalışıyor kablo bağlantılarım damı sorun var yoksa motor damı çözemedim sorunun hangisinde olduğunu nasıl anlayabilirim.

    • Motorların dönüş yönleri birbirine göre ters olduğundan dolayı bu şekilde bir sorunla karşılaşmış olabilirsiniz. Kod içerisinde yer alan ileri, geri, sag ve sol hareket fonksiyonlarında sağ ve sol motorların hızları analogWrite(MotorLE, 150); benzeri kodlar ile ayarlanmaktadır. Buradaki 150 değerini 0 ile 255 arasında değiştirerek iki motorun hızını birbirine eşitlemeniz mümkündür.

  12. Python dersi için projeyi yapmak istiyorum.Ardunio’da python kullanarak yazılımı yapmak mümkün müdür?Yoksa ardunio yerine rasperry pi 0 kullanmak mı gerekli olur?

    • Arduino’yu doğrudan Python ile programlamanız malesef mümkün değildir. Bilgisayarınızda çalıştırdığınız Python programını kullanarak seri port üzerinden Arduino ile haberleşme yaptırmanız mümkündür. Raspberry Pi kullandığınızda ise Python ile programlama yapabilirsiniz. Raspberry Pi derslerimizi buradan inceleyebilirsiniz.

  13. Merhaba ben sizi yazdığınız gibi değil
    Void yaratmadan da kullanmak istiyorum
    Yani direk digital olarak
    Sıkıntı olurmu bluetooth ile birlikte kulanıcam da hem normal araba hemde
    Çizgi izleyen araba

  14. Kolay gelsin çizgi izleyip engelden kaçan robot yapmak istiyoruz.üniversitede proje olarak seçtik bunu nasıl yapabiliriz ?

  15. ben bu robotu yapmak istiyorum fakat engel tanıyıp geçmesini de istiyorum . bu robota artı olarak engel sensörü ekleyebilir miyiz ? yoksa tamamen değiştirmem mi gerekiyor ?

  16. Çizgi izleyen robotun programlamasını yaptık arduino uno bilgisayar bağlantısını Usb ile yapıp programı yükledik arduino uno katında On ve L ışığı bilgisayara bağlı iken yanıyor ancak Usb bağlantısını çıkardığımızda piller takılı olmasına rağmen arduino uno ve motorlar pasif kalıyor. Neden kaynaklanıyor olabilir? Bu sorunu nasıl çözebiliriz?

  17. Robotun hareket edeceği zemin hakkında bilgi verir misiniz? Robotu yaptık ancak sensör klavye üstündeki siyahı algılarken siyah bandı yapıştırdigim zemini algilamiyor

  18. iyi akşamlar biz robotu tamamladık siyah beyaz zemini algılamıyor. ancak robotu bilgisayarın siyah zeminine tuttuğumda çalışıyor. acaba sebebi nedir

  19. Kolay gelsin. Devreyi doğru bir şekilde kurdum sadece sönsör devrem eksik. Pile bagladigim zaman motorlarim çalışmıyor. Arnodino ve L298N de ışıklar yaniyor. Nerede hata yapmış olabilirim sizde

    • Yalnızca delay fonksiyonlarını değiştirerek belirli bir yere kadar hızlanma sağlayabilirsiniz. Burada en temel çizgi izleme algoritmasını herkesin anlayabileceği basitlikte oluşturduk, sizler tecrübeniz varsa daha iyi bir algoritma ve daha hızlı motorlar ve gövde kullanarak daha hızlı çalışacak bir robot yapabilirsiniz.

  20. Abi biz yarışmaya katıldık pistten haberinde vardır az çok o 135 derecelik açıyı dönderemiyoruz onun için bize bi kod yazma şansın varmı uğraştık bende çok uprqştık nerdeyse 1 haftayı geçti onun üstünde çalışmaya başlayalı ama yapamadık sana zahmet vi yardımcı olurmusun ??

  21. Merhaba. Tüm ekipmanı kurdum. Sorunsuz çalışıyor. Ancak hızı fazla olduğu için düşürmek istedim. 150 dışında hiçbir değeri algılamadı. Ne yapmalıyım.

    • Sanırım sorun analogWrite kodundan kaynaklanıyor. Analog olunca hızı değiştirmek anlam ifade etmedi. digitalWrite ile denedim oldu gibi. Peki uygulamada sorun yaşar mıyım?

    • Kullanabilirsiniz, ama unutmayın ki sensörlerinizi, motorlarınızı, bataryanızı ve diğer mekanik parçalarınızı kullandığınız platforma göre tercih etmeniz gerekecektir.

  22. abi devreyi herşeyi iyi kurdum sensörler süper görüyor ama motorlar dönmüyor
    9 v pil kullanıyorum motorlar 5 v ve ben napıyım şimdi motorları degiştirirsem gidermi
    ve ben projemle tubitak robot yarışmasına katılıyorum napmama lazım acil cevap veririmisin abi

  23. Kolay gelsin. Programi yazdim fakat ‘ileri’ komutunda sürekli hata veriyor tanimlanmiyor diye. Bir turlu cözüm bulamadim. Duzeltmek icin birkac şeyle oynuyorum bu sefer başka komutlar hata veriyor. Az bir zamanim kaldi ödev teslimim icin ama çözüm bulamadim yardim edermisiniz ?

CEVAP VER

Please enter your comment!
Please enter your name here