Arduino Projeleri

Arduino ile Bluetooth Kontrollü Robot Araç Projesi

Arduino Uno, HC-05 Bluetooth modülü ve L298N çift motor sürücü kartı kullanarak akıllı telefon üzerinden kablosuz olarak yönetilebilen, 2 çeker (2WD) mobil robot aracı sıfırdan tasarlayıp kodluyoruz.

Arduino ile bluetooth kontrollü araç yapımı

Uzaktan kumandalı mobil robot araç projeleri, mekanik montaj, elektronik devre mimarisi ve seri haberleşme yazılımı gibi temel robotik disiplinlerini tek bir potada birleştiren en eğlenceli ve öğretici uygulamaların başında gelir. Bu rehberde, HC-05 Bluetooth modülü ile kablosuz veri iletimi kurmayı, L298N motor sürücü entegresi üzerinden DC motorların yön ve hız denetimini sağlamayı ve yazılan C++ kodlarıyla akıllı telefondan gelen komutları robotik harekete dönüştürmeyi öğreneceksiniz.

1 Neden Bluetooth Kontrollü Robot Araç?

Bluetooth teknolojisi, kısa mesafe kablosuz haberleşmede düşük güç tüketimi, yüksek veri aktarım kararlılığı ve mobil cihazlarla tam uyumluluk sunar. Robotik projelerde Bluetooth kullanmak şu avantajları sağlar:

Mobil Entegrasyon Özel bir kumanda donanımına ihtiyaç duymadan, Android telefonları dokunmatik kumandaya dönüştürür.
Seri Haberleşme (UART) Arduino'nun Rx/Tx pinleri üzerinden RX-TX çapraz bağlantısıyla çok basit ASCII karakter işleme imkanı verir.
Hız ve Yön Kontrolü PWM sinyalleri ile motor dönüş hızını, pin durumları ile de aracın yönünü dinamik olarak kontrol etmeyi sağlar.

2 Gerekli Malzemeler

Projemizi sorunsuz tamamlamak için aşağıdaki temel elektronik ve mekanik bileşenlere ihtiyacımız bulunmaktadır:

Arduino Uno R3 Projenin ana işlemci beyni. Seri veriyi okur ve motor sürücüye yön iletir.
HC-05 Bluetooth Modülü Telefondan gelen kablosuz komutları alıp Arduino'ya aktaran Seri haberleşme kartı.
L298N Motor Sürücü Kartı Arduino'nun düşük akım çıkışlarını, motorların ihtiyaç duyduğu yüksek akıma dönüştüren çift kanallı sürücü.
2 Adet DC Redüktörlü Motor ve Tekerlek Robot şasisinin sağ ve sol hareketini gerçekleştiren 6V-9V uyumlu redüktörlü motorlar.
2WD Pleksiglas Robot Şasesi ve Sarhoş Teker Gövdeyi taşıyan, dengeli dönüş sağlayan mekanik platform ve destek tekeri.
2 Adet 18650 Li-ion Pil ve Pil Yuvası Motorlar ve elektronik kartlar için gereken kararlı 7.4V - 8.4V doğru akım kaynağı.

3 Devre Kurulumu ve Bağlantı Şeması

Devre bağlantılarını yaparken motorların çektiği anlık akımın Arduino'yu resetlememesi için motor sürücü ve pil besleme hatlarını özenle ayırmalıyız. L298N entegresi ve HC-05 modülünün pin eşleşmeleri aşağıda detaylandırılmıştır:

Motor Sürücü ve Bluetooth Pin Haritası

ENA
Pin 5 (PWM) Sol Motor Hızı
IN1-2
Pin 6 ve 7 Sol Motor Yönü
IN3-4
Pin 8 ve 9 Sağ Motor Yönü
ENB
Pin 10 (PWM) Sağ Motor Hızı
ARDUINO UNO RX (Pin 0) TX (Pin 1) D5-D10 (Motor) HC-05 BLUETOOTH TX Pin RX Pin L298N MOTOR SÜRÜCÜ ENA IN1 IN2 IN3 IN4 ENB
Şema 1.1: HC-05 Bluetooth Modülü ve L298N Motor Sürücü Arduino Bağlantı Mimarisi

Önemli Montaj ve Yükleme Uyarısı

Arduino'ya bilgisayar üzerinden C++ kodunu yüklemeden önce HC-05 modülünün RX kablosunu (Pin 0) mutlaka sökünüz!

Arduino, bilgisayarla haberleşirken dijital 0 ve 1 pinlerini kullanır. Bluetooth modülü bağlıyken kod yüklemeye çalışırsanız hatta çakışma yaşanacak ve IDE yükleme hatası verecektir. Yükleme tamamlandıktan sonra kabloyu tekrar takabilirsiniz.

4 Arduino C++ Kodlama

Aşağıdaki gömülü C++ kodu, Bluetooth üzerinden Seri port aracılığıyla iletilen karakterleri dinler. Telefonda basılan butonlara göre belirlenen yön komutları şunlardır:

  • 'F' (Forward): İleri hareket
  • 'B' (Back): Geri hareket
  • 'L' (Left): Sol dönüş
  • 'R' (Right): Sağ dönüş
  • 'S' (Stop): Tüm motorları durdur
bluetooth_robot_arac.ino
// ==========================================================
// Proje: Arduino Bluetooth Kontrollü Robot Araç
// Yazar: Melda Aslan - RobotikHocasi.com
// ==========================================================

// Sol Motor Bağlantı Pinleri
#define ENA 5   // PWM Hız Kontrolü Sol Motor
#define IN1 6   // Sol Motor Yön 1
#define IN2 7   // Sol Motor Yön 2

// Sağ Motor Bağlantı Pinleri
#define IN3 8   // Sağ Motor Yön 1
#define IN4 9   // Sağ Motor Yön 2
#define ENB 10  // PWM Hız Kontrolü Sağ Motor

char gelenKomut = 'S';
int motorHizi = 200; // 0 - 255 arası varsayılan motor hızı

void setup() {
  // Motor Sürücü Pinlerini Çıkış Olarak Ayarla
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);

  // HC-05 için Seri Haberleşmeyi Başlat (9600 Baud)
  Serial.begin(9600);
  robotuDurdur();
}

void loop() {
  // Bluetooth Üzerinden Veri Gelip Gelmediğini Kontrol Et
  if (Serial.available() > 0) {
    gelenKomut = Serial.read();

    // Gelen Karakter Komutuna Göre YönlendirmeYap
    if (gelenKomut == 'F') {
      ileriGit();
    } else if (gelenKomut == 'B') {
      geriGit();
    } else if (gelenKomut == 'L') {
      solaDon();
    } else if (gelenKomut == 'R') {
      sagaDon();
    } else if (gelenKomut == 'S') {
      robotuDurdur();
    }
  }
}

// --- HAREKET FONKSİYONLARI ---

void ileriGit() {
  analogWrite(ENA, motorHizi);
  analogWrite(ENB, motorHizi);
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, HIGH);
  digitalWrite(IN4, LOW);
}

void geriGit() {
  analogWrite(ENA, motorHizi);
  analogWrite(ENB, motorHizi);
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, HIGH);
}

void solaDon() {
  analogWrite(ENA, motorHizi);
  analogWrite(ENB, motorHizi);
  digitalWrite(IN1, LOW);  // Sol motor geri
  digitalWrite(IN2, HIGH);
  digitalWrite(IN3, HIGH); // Sağ motor ileri
  digitalWrite(IN4, LOW);
}

void sagaDon() {
  analogWrite(ENA, motorHizi);
  analogWrite(ENB, motorHizi);
  digitalWrite(IN1, HIGH); // Sol motor ileri
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);  // Sağ motor geri
  digitalWrite(IN4, HIGH);
}

void robotuDurdur() {
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
  digitalWrite(IN3, LOW);
  digitalWrite(IN4, LOW);
}

5 Mobil Uygulama Bağlantısı ve Geliştirme Fikirleri

Devre kurulumunu ve kod yüklemesini tamamladıktan sonra takip etmeniz gereken son adımlar şunlardır:

  1. Bluetooth Eşleştirme: Akıllı telefonunuzun Bluetooth ayarlarını açın, çevre cihazları taratın ve HC-05 isimli cihazı bulun. Şifre olarak 1234 veya 0000 girerek eşleşmeyi tamamlayın.
  2. Uygulama Seçimi: Google Play Store üzerinden "Arduino Bluetooth RC Car" veya benzeri ücretsiz kontrol uygulamalarından birini indirin.
  3. Bağlantı Kurma: Uygulama içerisindeki "Connect" veya "Bağlan" butonuna dokunup eşleşen HC-05 modülünü seçin. HC-05 üzerindeki kırmızı LED'in hızlı yanıp sönmesi durup düzenli aralıklarla çift kedi gözü gibi yanıp sönmeye başladığında bağlantı başarıyla kurulmuş demektir.

Robotunuzu Geliştirmek İçin Fikirler

  • HC-SR04 Engel Mesafe Sensörü Ekleme: Aracın önüne bir ultrasonik sensör ekleyerek engellere 20 cm kala otomatik fren yapmasını sağlayabilirsiniz.
  • Ön ve Arka Far Sistemleri: Telefondan 'W' (Front Light) veya 'U' (Back Light) komutu gönderildiğinde yanan LED far entegrasyonu yapabilirsiniz.
  • Buzzer ile Korna Sesi: Seri komutla tetiklenen aktif bir buzzer ekleyerek uzaktan kumandalı kornayı aktifleştirebilirsiniz.

Robotik dünyasına adım atmak için ilk adımı atın!

Eğitim materyallerimizi ve projelerimizi keşfederek hemen öğrenmeye başlayın. Blok tabanlı kodlamaya başlayın.

Başla

Sıkça Sorulan Sorular

Arduino'ya kod yüklerken HC-05 Bluetooth modülü neden sökülmelidir?

HC-05 modülü Arduino'nun Seri haberleşme (RX/TX - Pin 0 ve Pin 1) pinlerine bağlıdır. Bilgisayardan Arduino'ya USB kablosu üzerinden kod yüklendiğinde de aynı haberleşme hattı kullanılır. HC-05 takılıyken hatta çakışma oluşur ve Arduino IDE "Failed uploading" hatası verir. Yükleme esnasında RX pininin sökülmesi yeterlidir.

HC-05 Bluetooth modülünün varsayılan eşleşme şifresi ve Baud Rate değeri nedir?

HC-05 modülünün fabrika çıkışlı varsayılan Bluetooth eşleşme şifresi "1234" veya "0000"dır. Standart Seri haberleşme hızı (Baud Rate) ise 9600 bps'dir.

L298N motor sürücü kartındaki jumper (Jumper Cap) ne işe yarar?

L298N üzerindeki 5V regülatör jumper'ı takılı olduğunda, sürücüye bağlanan 7V-12V arası motor pillerinden alınan yüksek voltaj dahili olarak 5V'a düşürülür ve Arduino'yu beslemek üzere 5V çıkış verir. Motor pilleri 12V üzerine çıkarsa bu jumper sökülmeli ve 5V haricen beslenmelidir.