Arduino ile 2WD Robot Uygulaması
Arduino platformu, sağladığı geniş kütüphane yelpazesi ve topluluk desteği ile mikrodenetleyicili uygulamalarının prototiplenmesi…
Arduino ile 2WD Robot Uygulaması
Arduino platformu, sağladığı geniş kütüphane yelpazesi ve topluluk desteği ile mikrodenetleyicili uygulamalarının prototiplenmesi konusunda önde gelen araçlardan biri haline geldi. Bu uygulamada temel olarak bir 2WD robotun kumanda edilmesi ele alınmıştır. 2WD robot, iki adet DC motor ile yürütülen basit bir araç modelidir (Şekil 1). Bu motorlar, Arduino ile bir adet motor sürücü modülü üzerinden kontrol edilerek araca yön ve hareket verilmektedir.

Şekil 1. 2WD Robot Gövdesi
2WD robota yön verilirken, dönülecek yönün tersindeki motor devri düşürülmektedir. Bunun yanında geri ve ileri hareket için motor sürücü üzerinden motorun dönüş yönü belirlenmekte ve hız kontrolü de motor sürücünün girişlerine değişen gerilim uygulanarak gerçekleştirilmektedir. Bu işlemlerin tamamı Arduino ile gerçeklenmektedir. Bu uygulamada şu malzeme listesi kullanılmaktadır:

Çizelge 1. 2WD Robot Malzeme Lisesi
Şekil 3'te 2WD Robot elemanlarının bağlantı şeması verilmiştir. Bu tasarımda en kritik bölüm L298N H-Bridge Köprü tümdevresinin bağlantılarıdır. Bu modül ile iki adet DC motor her bir kanal (motor) için maksimum 2A çıkış akımı sağlayabilecek şekilde sürülebilmektedir. Bu modülde her bir motorun sürülebilmesi için üç uç kullanılmaktadır. Bunlardan Enable1 ve Enable2 uçları jumper ile direkt lojik 5V hattına bağlanmıştır. IN1 ve IN2 uçları soldaki motor; IN3 ve IN4 uçları ise sağdaki motorun çalıştırılması ve yön kontrolü için kullanılmaktadır.

Şekil 3. 2WD Robot Elemanların Bağlantı Şeması
Genel olarak motorun hız kontrolü için Enable uçlarına mikrodenetleyiciden alınan PWM çıkışları bağlanmaktadır. INput uçları ile yön ve hareket kontrolü yapılmaktadır. Fakat bu uygulamanın basitleştirebilmesi için direkt olarak INput uçları PWM işareti ile sürülmektedir. L298N modülü 5V ile 35V gerilim aralığında çalışabilmektedir. Bu çalışmada kullanılan motorlar 6V ile çalışmakta olup 4 adet AAA alkalin pil (Seri halde 6V) ile motor sürücü modülüne güç girişi yapılmıştır. Motor sürücü üzerinde 5V çıkışlı regülatör tümdevresinin kullanımına ihtiyaç duyulması halinde bu modülün minimum 7V ile beslenmesi gerektiğini hatırlatalım. Eğer bu modül ile kullanılacak motorlar 12V’tan daha büyük bir gerilim ile çalışıyorsa bu regülatör girişinin modül üzerindeki ilgili jumper ın çıkartılarak devre dışı bırakılması gerekmektedir. Çünkü 5V çıkışlı regülatör tümdevresi maksimum 12V giriş gerilimi ile çalışmaktadır.

Şekil 4. L298 modülü üzerinde 5V luk regülatör girişine ait jumper
L298N modülüne enerji verildiğinde üzerindeki güç LED’i ışık vermektedir. Bu ışığın parlaklık durumuna bakılarak pillerin şarj durumu da tahmin edilebilmektedir.
Bu çalışmada kullanılan Bluetooth Modül HC-05 olup hem Master hem de Slave olarak programlanabilen bir modüldür. Arduino UNO’ya robotun taslak programı yüklenirkden Bluetooth modülden gelen iletişim uçlarının (RX ve TX) çıkarılması gerekmektedir. Çünkü bu pinler, Arduino UNO’ya program kodları bu kanal üzeriden aktarılmaktadır. Programlama işlemi bittiği ve Arduino tekrardan başladığında bu kanal boşa çıkmaktadır. Böylece robota seri iletişim kanalı ile haberleşen herhangi bir donanımla komut gönderilebilmektedir. Bluetooth modül bekleme sırasında (herhangi bir cihaza bağlandığında) yüksek güç tükettiğinden Arduino ve bu modüle ait besleme gerilimi ayrı olarak 9V bir pil ile sağlanmaktadır.
Şekil 5'te motor sürücünün bir kananlının çalışmasına ilişkin doğruluk tablosu (işlev tablosu) verilmiştir. Tablodan görüldüğü gibi IN1 ve IN2 uçlarına girilen lojik seviyelerin yer değiştirilmesi ile motorun dönüş yönü kolaylıkla ayarlanabilmektedir. Bu uygulamada ENA ve ENB uçlarına direkt olarak 5V ‘a bağlanıp lojik olarak 1 seviyesine çekilmiştir. IN1 ve IN2 uçları Arduino D9 ve D10; IN3 ve IN4 uçları ise Arduino D5 ve D6 çıkışlarına bağlanmıştır. D9-D10 ve D5-D6 çıkışlarının tamamı analog çıkış (PWM ile) olarak kullanılabildiğinden motorların hızları da Arduino analogWrite fonksiyonu ile gerçekleştirilebilmektedir.

Şekil 5. L298N Sürücü Tümdevresi İşlev Tablosu
Bu çalışma şekliyle IN1 ve IN2 uçları arasındaki potansiyel farkının yönü motor yönünü belirlerken; fark miktarı da hızı belirlemektedir. Arduino, PWM özellikli bu çıkışlar sayesinde 0–5V arası gerilim aralığı ile L298N girişlerini sürebilmektedir.
2WD Robot Kontrolüne İlişkin Arduino Taslak Kodu:
// L298N Bağlantısı
const int motorA1 = 5; // L298N'in IN4 Girişi
const int motorA2 = 6; // L298N'in IN3 Girişi
const int motorB1 = 9; // L298N'in IN1 Girişi
const int motorB2 = 10; // L298N'in IN2 Girişi
// Bluetooth cihazından gelecek komutu tutan değişken
int komut;
int hiz = 200;
void ileri() {
analogWrite(motorA1, hiz); analogWrite(motorA2, 0);
analogWrite(motorB1, hiz); analogWrite(motorB2, 0);
}
void geri() {
analogWrite(motorA1, 0 ); analogWrite(motorA2, hiz);
analogWrite(motorB1, 0); analogWrite(motorB2, hiz);
}
void saga() {
analogWrite(motorA1, 0); analogWrite(motorA2, 0);
analogWrite(motorB1, hiz); analogWrite(motorB2, 50);
}
void sola() {
analogWrite(motorA1, hiz); analogWrite(motorA2, 50);
analogWrite(motorB1, 0); analogWrite(motorB2, 0);
}
void dur() {
analogWrite(motorA1, 0); analogWrite(motorA2, 0);
analogWrite(motorB1, 0); analogWrite(motorB2, 0);
}
void setup() {
// Pin yönlerini ayarla
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
// 9600 baud hızında bir seri iletisim baslatalim
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0){
komut = Serial.read();
if (komut == 'F') {
ileri();
delay(300);
dur();
} else
if (komut == 'B') {
geri();
delay(300);
dur();
} else
if (komut == 'R') {
saga();
delay(300);
dur();
} else
if (komut == 'L') {
sola();
delay(300);
dur();
} else
if (komut == 'S') {
dur();
}
delay(10);
}
}
Bu taslak kodda görüldüğü gibi 2WD robota ilişkin temek haraket işlevleri alt programlar halinde kodlanmıştır. Arduino analogWrite çıkış fonksiyonu kullanılarak Şekil 6'ta gösterilen işlevler gerçekleştirilmiştir. Sürücü girişlerine uygulanan gerilim farkları ile motor hızı; gerilim yönleri ile de motor yönü kontrol edilmiştir. Robota komutlar tuş kodları ile gönderilmektedir. Örneğin robotun ileri yönde hareket edebilmesi için ‘F’ karakter kodu yollanmaktadır. Robot her hareket komutu geldiğinde 0,3 saniye boyunca komutu yerine getirmekte ve sonra durmaktadır. Bu çalışma şekli ihtiyaca göre değiştirilebilir.
Taslak program derlenip Arduino’ya yüklendikten sonra robot havada tutulmalı ve Arduino Seri Monitör aracılığı ile komutlar robota yollanıp motor çalışma yönleri test edilmelidir. Böylelikle Bluetooth modül takılmadan önce test işlemi tamamlanır. Bluetooth modül adı (HC 05) ve iletişim parametreleri USB-seri dönüştürücü modül ile değiştirilebilmektedir. Bir laboratuvar ortamında birden fazla aynı isimle görülen Bluetooth modülü çalışmayı zorlaştırabilir.
Bu çalışmada mobil telefondan robota komut göndermek için “Bluetooth Bluetooth Controller” adlı uygulama kullanılmıştır. Uygulamanın kontrolcü arayüzü Şekil 6'da verilmiştir. Cihaza bağlandıktan sonra uygulamanın menüsünden kontrolcü arayüzü seçilip kumanda işlemleri gerçekleştirilebilir. Arayüzde görülen tuşlara komut atamak için ayarlar diyaloğu kullanılmalıdır.

Şekil 6. Mobil uygulama kontrolcü arayüzü.
Uygulama indirme adresi: https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor

메타데이터
- post_id
- 4fc1c48520ea
- slug
- arduino-ile-2wd-robot-uygulaması-4fc1c48520ea
- url
- https://medium.com/@mehmetgkk/arduino-ile-2wd-robot-uygulamas%C4%B1-4fc1c48520ea
- canonical_url
- https://medium.com/@mehmetgkk/arduino-ile-2wd-robot-uygulamas%C4%B1-4fc1c48520ea
- author_url
- https://medium.com/@mehmetgkk
- status
- ok
- fetched_at
- 2026-07-29 14:27:05