Çizgi izleyen robotlar, robotik dünyasına giriş yapmak isteyenler için harika bir başlangıç projesidir. Bu robotlar, zemindeki siyah veya beyaz bir çizgiyi algılayarak bu çizgi boyunca hareket eder. Bu yazıda, Arduino kullanarak kendi çizgi izleyen robotunuzu nasıl yapacağınızı adım adım anlatacağım. Gerekli malzemelerden, devre bağlantılarına ve kod örneklerine kadar her şeyi bulacaksınız.

Gerekli Bileşenler

  • Arduino Uno (veya benzeri bir mikrodenetleyici) - Robotun beyni.
  • 2x DC Motor ve Tekerlek - Robotun hareketini sağlar.
  • L298N Motor Sürücü Modülü - DC motorları kontrol etmek için.
  • 2x TCRT5000 veya QTR-8A gibi Kızılötesi (IR) Sensör - Çizgiyi algılamak için (en az 2 sensör, daha hassas kontrol için 4-6 kullanılabilir).
  • Robot Şasisi - Motorları ve bileşenleri monte etmek için.
  • 9V Pil veya 7.4V Li-Po Batarya - Güç kaynağı.
  • Jumper Kablolar - Bağlantılar için.
  • Breadboard (isteğe bağlı) - Prototipler için kullanışlı.
  • Siyah Elektrik Bandı - Test için çizgi oluşturmak amacıyla.

Opsiyonel Malzemeler:

  • Kablo Bağları - Kabloları düzenlemek için.
  • Lehimleme Kiti - Kalıcı bağlantılar için.

Çalışma Prensibi

Çizgi izleyen robot, IR sensörler sayesinde zemindeki renk farkını algılar. Genellikle siyah bir çizgi beyaz bir zemin üzerinde kullanılır (veya tam tersi). Sensörler, çizginin konumuna göre Arduino’ya dijital veya analog sinyaller gönderir. Arduino bu verileri işleyerek motorlara komut verir ve robot çizgi üzerinde kalmaya çalışır.

Adım 1: Şasiyi Hazırlama

  1. Robot şasisine iki DC motoru ve tekerlekleri monte edin.
  2. Şasinin önüne serbest dönen bir tekerlek (caster wheel) veya sabit bir destek ekleyin.
  3. Arduino’yu ve motor sürücüyü şasiye sabitleyin (vida veya çift taraflı bant kullanabilirsiniz).

Adım 2: Devre Bağlantıları

Motor Sürücü (L298N) Bağlantıları:

  • IN1 ve IN2: Sol motorun yön kontrolü (Arduino’nun 9 ve 10 numaralı pinlerine).
  • IN3 ve IN4: Sağ motorun yön kontrolü (Arduino’nun 5 ve 6 numaralı pinlerine).
  • ENA ve ENB: Motor hız kontrolü (PWM pinleri, örneğin 3 ve 11).
  • VCC: 9V pilin pozitif ucuna.
  • GND: Pilin negatif ucuna ve Arduino GND pinine.
  • 5V Çıkış: Arduino’nun 5V pinine.

IR Sensör Bağlantıları (TCRT5000 örneği):

  • VCC: Arduino’nun 5V pinine.
  • GND: Arduino’nun GND pinine.
  • OUT: Arduino’nun dijital pinlerine (örneğin 2 ve 4 numaralı pinler).

Güç Kaynağı:

  • 9V pili motor sürücüye bağlayın.
  • Arduino’yu USB ile bilgisayara bağlayarak programlayabilirsiniz, ancak robotun hareketi için pili kullanmanız gerekecek.

Adım 3: Kod Yazımı

// Pin Tanımlamaları
#define solSensor 2
#define sagSensor 4
#define solMotorIN1 9
#define solMotorIN2 10
#define sagMotorIN3 5
#define sagMotorIN4 6
#define ENA 3
#define ENB 11

void setup() {
  pinMode(solSensor, INPUT);
  pinMode(sagSensor, INPUT);
  pinMode(solMotorIN1, OUTPUT);
  pinMode(solMotorIN2, OUTPUT);
  pinMode(sagMotorIN3, OUTPUT);
  pinMode(sagMotorIN4, OUTPUT);
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int solDurum = digitalRead(solSensor);
  int sagDurum = digitalRead(sagSensor);

  if (solDurum == 0 && sagDurum == 0) { // Her iki sensör çizgi üstünde
    ileri();
  } else if (solDurum == 1 && sagDurum == 0) { // Sol sensör çizgi dışında
    sagaDon();
  } else if (solDurum == 0 && sagDurum == 1) { // Sağ sensör çizgi dışında
    solaDon();
  } else { // Her iki sensör çizgi dışında
    dur();
  }
}

void ileri() {
  digitalWrite(solMotorIN1, HIGH);
  digitalWrite(solMotorIN2, LOW);
  digitalWrite(sagMotorIN3, HIGH);
  digitalWrite(sagMotorIN4, LOW);
  analogWrite(ENA, 150);
  analogWrite(ENB, 150);
}

void sagaDon() {
  digitalWrite(solMotorIN1, HIGH);
  digitalWrite(solMotorIN2, LOW);
  digitalWrite(sagMotorIN3, LOW);
  digitalWrite(sagMotorIN4, HIGH);
  analogWrite(ENA, 150);
  analogWrite(ENB, 150);
}

void solaDon() {
  digitalWrite(solMotorIN1, LOW);
  digitalWrite(solMotorIN2, HIGH);
  digitalWrite(sagMotorIN3, HIGH);
  digitalWrite(sagMotorIN4, LOW);
  analogWrite(ENA, 150);
  analogWrite(ENB, 150);
}

void dur() {
  digitalWrite(solMotorIN1, LOW);
  digitalWrite(solMotorIN2, LOW);
  digitalWrite(sagMotorIN3, LOW);
  digitalWrite(sagMotorIN4, LOW);
  analogWrite(ENA, 0);
  analogWrite(ENB, 0);
}

Adım 4: Robotu Test Etme

  1. Siyah elektrik bandıyla zemine bir çizgi yapın.
  2. Kodu Arduino’ya yükleyin.
  3. Robotu çizginin üstüne yerleştirin ve gücü açın.
  4. Sensörlerin çizgiyi algıladığından emin olun. Gerekirse sensörlerin yüksekliğini ayarlayın.

Adım 5: Geliştirme Önerileri

  • PID Kontrolü: Daha hassas takip için PID algoritması ekleyin.
  • Daha Fazla Sensör: 4 veya 6 sensörle daha karmaşık yolları takip edebilirsiniz.
  • Bluetooth Kontrolü: HC-05 modülüyle robotu uzaktan kontrol edebilirsiniz.

Sonuç

Bu projeyle, Arduino programlama ve robotik temellerini öğrenmiş oldunuz. Çizgi izleyen robotunuzu geliştirmek için sensör sayısını artırabilir, hız kontrolünü optimize edebilir veya farklı zeminlerde test edebilirsiniz.