Arduino ile robotun ardından basit bir çizgi nasıl oluşturulur

Bir robot projesine başlamak, özellikle hat takip eden bir robot gibi somut bir şey inşa ederken hem heyecan verici hem de eğitici olabilir. En popüler mikrodenetleyicilerden biri olan bir Arduino kullanmak, süreci yeni başlayanlar için bile erişilebilir hale getirir. Bu kılavuzda, özerk bir yolda gezinebilecek basit bir satır takip robotu oluşturmak için size adım atacağız.

İhtiyacınız olacak malzemeler

  • Arduino uno - Robotunuzun beyni.
  • Motor Sürücü Modülü (L298N) - Motorları kontrol etmek için.
  • DC Motorlar Tekerlekler - hareket için.
  • Şasi - Tüm bileşenleri tutacak çerçeve.
  • Hat sensörü modülü (örn. QRE1113) - çizgiyi tespit etmek için.
  • Akü paketi - Robot için güç kaynağı.
  • Jumper telleri - Bağlantılar için.
  • Breadboard - Prototipleme bağlantıları için.
  • Vidalar, fındık ve cıvatalar - Şasiyi monte etmek için.

1. Adım: Şasinin montajı

Şasi robotunuzun temeli olarak hizmet eder. DC motorlarını vidalar ve somunlar kullanarak şasiye takarak başlayın. İşlem sırasında herhangi bir hareketi önlemek için motorların güvenli bir şekilde sabitlendiğinden emin olun. Tekerlekleri motor şaftlarına takın ve pil paketini ve arduino'yu şasiye yerleştirin. Tüm bileşenlerin iyi oturduğundan ve kablolamaya kolayca ulaşıldığından emin olun.

2. Adım: Motorların Kablolanması

DC motorlarını motor sürücü modülüne (L298N) bağlayın. Motor sürücüsü, Arduino ve motorlar arasında bir arayüz görevi görür ve Arduino'nun aşırı yüklenmeden motor hızını ve yönünü kontrol etmesine izin verir.


// Connect motor A
const int motorA_EN = 9;
const int motorA_IN1 = 7;
const int motorA_IN2 = 8;

// Connect motor B
const int motorB_EN = 10;
const int motorB_IN3 = 5;
const int motorB_IN4 = 6;

void setup() {
  // Motor A
  pinMode(motorA_EN, OUTPUT);
  pinMode(motorA_IN1, OUTPUT);
  pinMode(motorA_IN2, OUTPUT);
  
  // Motor B
  pinMode(motorB_EN, OUTPUT);
  pinMode(motorB_IN3, OUTPUT);
  pinMode(motorB_IN4, OUTPUT);
}

Adım 3: Hat sensörünün bağlanması

Hat sensörü, çizgi ve yüzey arasındaki kontrastı algılar. Tipik olarak, bu sensörler yansıtıcı yüzeyleri tespit etmek için kızılötesi LED'lere ve fotodiyotlara sahiptir. Sensörün VCC ve GND'sini sırasıyla Arduino’nun 5V ve GND'sine bağlayın. Sensörün çıkış pimleri, sensör tipine göre Arduino’nun dijital veya analog pimlerine bağlanacaktır.


// Line sensor pins
const int sensorLeft = A0;
const int sensorRight = A1;

void setup() {
  pinMode(sensorLeft, INPUT);
  pinMode(sensorRight, INPUT);
}

4. Adım: Arduino Kodunu Yazma

Arduino kodu sensör değerlerini okuyacak ve çizgiyi takip etmek için motorları buna göre kontrol edecektir. Aşağıda, kodun nasıl görünebileceğinin basit bir örneği:


// Define motor pins
const int motorA_EN = 9;
const int motorA_IN1 = 7;
const int motorA_IN2 = 8;
const int motorB_EN = 10;
const int motorB_IN3 = 5;
const int motorB_IN4 = 6;

// Define sensor pins
const int sensorLeft = A0;
const int sensorRight = A1;

// Threshold for line detection
const int threshold = 500;

void setup() {
  // Initialize motor pins
  pinMode(motorA_EN, OUTPUT);
  pinMode(motorA_IN1, OUTPUT);
  pinMode(motorA_IN2, OUTPUT);
  
  pinMode(motorB_EN, OUTPUT);
  pinMode(motorB_IN3, OUTPUT);
  pinMode(motorB_IN4, OUTPUT);
  
  // Initialize sensor pins
  pinMode(sensorLeft, INPUT);
  pinMode(sensorRight, INPUT);
  
  // Start serial communication for debugging
  Serial.begin(9600);
}

void loop() {
  int leftSensor = analogRead(sensorLeft);
  int rightSensor = analogRead(sensorRight);
  
  Serial.print("Left: ");
  Serial.print(leftSensor);
  Serial.print(" | Right: ");
  Serial.println(rightSensor);
  
  if (leftSensor > threshold && rightSensor > threshold) {
    // Move forward
    moveForward();
  }
  else if (leftSensor < threshold && rightSensor > threshold) {
    // Turn right
    turnRight();
  }
  else if (leftSensor > threshold && rightSensor < threshold) {
    // Turn left
    turnLeft();
  }
  else {
    // Stop
    stopMovement();
  }
}

void moveForward() {
  digitalWrite(motorA_IN1, HIGH);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, HIGH);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 200);
  analogWrite(motorB_EN, 200);
}

void turnRight() {
  digitalWrite(motorA_IN1, HIGH);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, LOW);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 200);
  analogWrite(motorB_EN, 0);
}

void turnLeft() {
  digitalWrite(motorA_IN1, LOW);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, HIGH);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 0);
  analogWrite(motorB_EN, 200);
}

void stopMovement() {
  digitalWrite(motorA_IN1, LOW);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, LOW);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 0);
  analogWrite(motorB_EN, 0);
}

Adım 5: Robotu güçlendirmek

Tüm bağlantılar yapıldıktan sonra, pil paketinizi Arduino ve motor sürücüsüne bağlayın. Bileşenlere zarar vermek için polaritenin doğru olduğundan emin olun. Yükselmeden önce bağlantıları bir multimetre ile test etmek iyi bir uygulamadır.

Test ve kalibrasyon

Açıldıktan sonra, robotunuzu net bir çizgi ile bir yüzeye yerleştirin (örn. Beyaz kağıt üzerinde siyah bant). Nasıl davrandığını gözlemleyin ve gerekli ayarlamaları yapın. Optimum performansı elde etmek için koddaki PWM değerlerini değiştirerek sensör eşiğini değiştirmeniz veya hızı ayarlamanız gerekebilir.

Başarı İçin İpuçları

  • Kararlı bağlantılar sağlayın: Gevşek teller aralıklı davranışa neden olabilir. Prototipleme için bir breadboard kullanın ve kalıcı bir kurulum için lehimleme bağlantılarını düşünün.
  • Kalite sensörleri kullanın: Güvenilir çizgi sensörleri robotunuzun performansını önemli ölçüde artırabilir.
  • Sensörlerinizi kalibre edin: Farklı yüzeyler ve aydınlatma koşulları sensör okumalarını etkileyebilir. Eşiklerinizi buna göre kalibre edin.
  • Kodu optimize et: Verimli kod hızlı yanıt süreleri sağlar. Döngünüzde gereksiz gecikmeler olmadığından emin olun.

Geliştirmeler ve daha fazla öğrenme

Temel satır takip eden bir robotu başarıyla oluşturduktan sonra, yeteneklerini geliştirmek için daha fazla özellik eklemeyi düşünün:

  • Kavşak Tespiti: Robotunuzun kavşaklarda karar vermesini sağlayın.
  • Hız Kontrolü: Sensör girişine dayalı dinamik hız ayarlamaları uygulayın.
  • Kablosuz Kontrol: Robotunuzu uzaktan kontrol etmek için Bluetooth veya Wi-Fi modülleri ekleyin.
  • Engelden kaçınma: Engeller etrafında gezinmek için ultrasonik sensörler dahil edin.

Arduino ile çizgiyi takip eden bir robot inşa etmek, robotik ve gömülü sistemler dünyasına dalmanın harika bir yoludur. Size sensör entegrasyonu, motor kontrolü ve gerçek zamanlı karar verme gibi temel kavramları öğretir. Sabır ve deneyle, bu temel projeyi daha karmaşık ve yetenekli bir robot haline getirebilirsiniz. Mutlu bina!

Yorum bırak

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.