Herkesin telefonuyla uğraşmak istemediği durumlar için, klasik bir kumandayla kontrol edilen robot yapmak hem basit hem de eğlenceli bir alternatiftir. Bu yazıda IR Kumandalı Robot Araba Kiti ile kurulumu anlatıyoruz.
IR Kumanda Nasıl Çalışır?
Kumandadaki her tuş, basılınca farklı bir kızılötesi (IR) sinyali gönderir. Robot üzerindeki IR alıcı modül bu sinyalleri yakalar ve Arduino'ya iletir. Arduino, hangi tuşa basıldığını kodda tanımladığın değerlerle karşılaştırıp L298N motor sürücü üzerinden robotu ileri, geri, sağa veya sola hareket ettirir.
Bağlantı Şeması
Şemalar bu yazıdaki kodla birebir uyumludur (IN1→D5, IN2→D6, IN3→D9, IN4→D10, IR alıcı OUT→D11). Pil + ucu Arduino'nun VIN pinine bağlanır; ENA, ENB ve L298N 5V jumper'ları takılı kalmalı, tüm GND'ler ortak olmalıdır.
Standart set (4'lü AA pil kutusu, 6V):

18650 pil yuvalı set (2x18650, 7,4V):

Kurulum Adımları
- 2WD robot gövdesini motor ve tekerleklerle birleştir
- L298N motor sürücüyü Arduino ve motorlara bağla
- IR alıcı modülü Arduino'nun dijital pinine bağla
- IRremote kütüphanesiyle kumandanın tuş kodlarını oku
- Okunan kodlara göre motor yönlerini kodda tanımla
- Kumandayla robotu sürmeye başla!
Bluetooth'a Göre Farkı
IR kumanda, telefon veya uygulama gerektirmez — kutudan çıkan kumandayla direkt kullanıma hazırdır. Daha genç yaş grubu ve hızlı kurulum isteyenler için ideal bir alternatiftir.
Arduino Kodu
Önce Arduino IDE'de Kütüphane Yöneticisi'nden "IRremote" kütüphanesini kur (kod, kütüphanenin güncel 4.x sürümüne göre yazıldı). Aşağıdaki tuş kodları kitteki 17 tuşlu kumandaya göredir. Farklı bir kumanda kullanıyorsan Seri Monitör'ü (9600 baud) aç, her tuşa basınca görünen "Komut" değerini koddaki ilgili satıra yaz.
// IR Kumandalı Robot Araba - Atölye Elektronik
// IRremote 4.x sürümü için
#include <IRremote.hpp>
#define IR_PIN 11
#define IN1 5
#define IN2 6
#define IN3 9
#define IN4 10
// Kitteki 17 tuşlu kumandanın komut kodları
// (farklı kumandada Seri Monitör'deki "Komut" değerini yaz)
#define KOD_ILERI 0x18 // yukarı ok
#define KOD_GERI 0x52 // aşağı ok
#define KOD_SOL 0x08 // sol ok
#define KOD_SAG 0x5A // sağ ok
#define KOD_DUR 0x1C // OK tuşu
void ileri() { digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); }
void geri() { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); }
void sola() { digitalWrite(IN1,LOW); digitalWrite(IN2,HIGH); digitalWrite(IN3,HIGH); digitalWrite(IN4,LOW); }
void saga() { digitalWrite(IN1,HIGH); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,HIGH); }
void dur() { digitalWrite(IN1,LOW); digitalWrite(IN2,LOW); digitalWrite(IN3,LOW); digitalWrite(IN4,LOW); }
void setup() {
Serial.begin(9600);
IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK); // tuşa basınca karttaki L ledi yanar
pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT);
dur();
}
void loop() {
if (IrReceiver.decode()) {
uint8_t komut = IrReceiver.decodedIRData.command;
Serial.print("Komut: 0x");
Serial.println(komut, HEX);
switch (komut) {
case KOD_ILERI: ileri(); break;
case KOD_GERI: geri(); break;
case KOD_SOL: sola(); break;
case KOD_SAG: saga(); break;
case KOD_DUR: dur(); break;
}
IrReceiver.resume(); // sonraki tuşa hazırlan
}
}
Sorun Giderme
- Derlerken "decode_results" veya "IRrecv" hatası: Bu yazının eski kodunu kullanıyorsun; yukarıdaki güncel kodu yükle.
- Tuşa basınca Seri Monitör'de bir şey çıkmıyor: IR alıcının OUT ucunun D11'e, VCC'nin 5V'a bağlı olduğunu kontrol et; kumandanın pilini ve kumandayı alıcıya doğru tuttuğunu kontrol et.
- Seri Monitör'de kod çıkıyor ama robot hareket etmiyor: Görünen "Komut" değeri koddakilerden farklıdır; kendi kumandanın değerlerini KOD_ILERI vb. satırlarına yaz.
- Bir tekerlek ters dönüyor: O motorun iki kablosunu L298N üzerinde yer değiştir.
Kitin içinde 2WD gövde, Arduino Uno, motor sürücü, IR kumanda seti ve jumper kablo dahil. Detaylar ve satın alma için IR Kumandalı Robot Araba Kiti veya pil masrafı olmayan 18650 Pil Yuvalı IR Kumandalı Robot Kiti sayfasını ziyaret edebilirsin.