Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza
Blog  ›  Projeler

Işık Takip Eden Robot Yapımı: Arduino, LDR ve L298N

Işık Takip Eden Robot Yapımı: Arduino, LDR ve L298N
Kısa cevap

Işık takip eden robot, önüne takılan iki LDR ile hangi tarafın daha aydınlık olduğunu ölçüp tekerleklerini o yöne süren bir Arduino projesidir. Sol LDR daha çok ışık görürse robot sola, sağ LDR görürse sağa döner; iki taraf eşitse ileri gider. Devre Arduino Uno, L298N motor sürücü, 2WD şase ve iki 18650 pille kurulur.

Karanlık bir odada el fenerini tuttuğunuz yöne dönüp peşinizden gelen bir robot, sensör okumayı, karar vermeyi ve motor sürmeyi aynı anda öğretir. Bu projede iki ışık sensörü (LDR), Arduino Uno ve L298N motor sürücüyle ışık takip eden bir robot yapıyoruz. Proje ortaokul ve lise teknoloji ödevleri, meslek lisesi atölyeleri ve TÜBİTAK 4006 bilim fuarları için uygundur.

Işık takip eden robot nedir?

Işık takip eden robot, ışık sensörleriyle ortamdaki en parlak yönü bulan ve tekerleklerini o yöne süren otonom bir araçtır. Doğada bu davranışın adı fototaksistir; bazı böcekler ve tek hücreli canlılar ışığa doğru hareket eder.

Robotun "gözleri" iki LDR'dir (Light Dependent Resistor, ışığa bağımlı direnç). LDR'nin direnci karanlıkta yüzlerce kΩ'a çıkar, aydınlıkta birkaç kΩ'a düşer. Arduino bu değişimi gerilim olarak okur ve sol ile sağ tarafı karşılaştırır. LDR'nin yapısını LDR ışık sensörü yazısında anlattık.

Hangi malzemeler gerekir?

Işık takip eden robot için Arduino Uno, iki LDR ve iki 10 kΩ direnç, L298N motor sürücü, iki motorlu 2WD şase ve iki 18650 pilli anahtarlı pil yuvası yeterlidir.

Malzeme listesi

MalzemeAdetNe işe yarar?
Arduino Uno R3 (CH340, USB kablolu)1LDR'leri okur, motorlara karar verir
5 mm LDR ışık sensörü2Sol ve sağ "göz"
10 kΩ 1/4 W direnç2LDR ile gerilim bölücü kurar
L298N regülatörlü çift motor sürücü1İki motorun yönünü ve hızını kontrol eder
2WD araç seti1Şase, iki redüktörlü motor ve tekerlekler
18650 ikili pil yuvası, anahtarlı1Robotu besler, anahtarla açılır
3,7V 18650 Li-ion pil (korumalı)2Seri bağlı toplam 7,4V
Erkek-dişi jumper kablo, mini breadboard1Bağlantılar
Siyah pipet ya da karton boru2LDR'lere siper; yan ışığı keser

2WD araç seti engelden kaçan robot için hazırlanmıştır; kitin içeriğini ürün sayfasından kontrol edin ve içinde olan parçaları ayrıca almayın. Aynı şaseyle yapılan engelden kaçan robot projesini de inceleyebilirsiniz.

Devre nasıl bağlanır?

Her LDR, 5V ile bir analog pin arasına; 10 kΩ direnç de aynı analog pin ile GND arasına bağlanır. Sol LDR A0'a, sağ LDR A1'e gider. L298N'nin kontrol pinleri Arduino'nun D2-D7 pinlerine bağlanır.

Parça ucuArduino piniGörevi
Sol LDR / 10 kΩ5V → LDR → A0 → 10 kΩ → GNDSol ışık ölçümü
Sağ LDR / 10 kΩ5V → LDR → A1 → 10 kΩ → GNDSağ ışık ölçümü
L298N ENA / IN1 / IN2D5 / D2 / D3Sol motorun hızı ve yönü
L298N ENB / IN3 / IN4D6 / D4 / D7Sağ motorun hızı ve yönü
Pil (+), anahtardan sonraVIN ve L298N 12V girişiArduino ve motor beslemesi
Pil (−)GND ve L298N GNDOrtak toprak
Işık takip eden robot bağlantı şeması: sol LDR 5V ile A0 arasına, sağ LDR 5V ile A1 arasına bağlı, A0 ve A1 birer 10 kΩ dirençle GND'ye iniyor; L298N motor sürücünün ENA, IN1, IN2 uçları Arduino Uno D5, D2, D3 pinlerine, IN3, IN4, ENB uçları D4, D7, D6 pinlerine bağlı; OUT1-OUT2 sol motora, OUT3-OUT4 sağ motora gidiyor; iki 18650 pilin artısı anahtardan sonra L298N 12V girişine ve Arduino VIN pinine bağlı; altta karar kuralları: ikisi de 300'ün altındaysa dur, fark 60'tan büyükse dön, değilse ileri
LDR'ler 10 kΩ bölücüyle A0 ve A1'e, L298N ENA/IN1/IN2 D5/D2/D3'e, ENB/IN3/IN4 D6/D4/D7'ye bağlanır; pil artısı L298N 12V ve Arduino VIN'e gider.
  1. Motorları ve tekerlekleri şaseye kitin talimatına göre takın.
  2. LDR'leri robotun ön köşelerine, aralarında 8-10 cm olacak ve hafifçe dışa bakacak şekilde yerleştirin. Her LDR'nin önüne 1-2 cm'lik siyah bir pipet geçirin; böylece her göz yalnızca kendi tarafını görür.
  3. Gerilim bölücüleri mini breadboard üzerinde kurun: LDR'nin bir bacağı 5V'a, diğer bacağı A0'a (sağda A1'e); 10 kΩ direnç A0 (A1) ile GND arasına.
  4. Sol motoru L298N'nin OUT1-OUT2, sağ motoru OUT3-OUT4 klemensine bağlayın.
  5. L298N üzerindeki ENA ve ENB jumper'larını çıkarın ve kontrol pinlerini tablodaki gibi bağlayın. Sürücünün ayrıntıları L298N motor sürücü yazısında.
  6. Pil kutusunun artısını L298N'nin 12V girişine ve Arduino'nun VIN pinine, eksisini iki GND'ye bağlayın.
  7. Kodu USB ile yükleyin, USB'yi çıkarın, robotu yere koyup anahtarı açın. Bir tekerlek ters dönüyorsa o motorun iki kablosunu klemenste yer değiştirin.

Robot nasıl karar verir?

Robot, iki LDR okumasının farkına bakar: fark büyükse ışığın olduğu tarafa döner, küçükse ileri gider; iki değer de düşükse ışık yok demektir ve durur. Gerilim bölücüde ışık arttıkça LDR'nin direnci düşer ve analog değer büyür.

DurumKoşul (0-1023)Hareket
Işık yoksol < 300 ve sağ < 300Durur
Işık soldasol − sağ > 60Sol motor yavaş geri, sağ motor ileri: sola döner
Işık sağdasağ − sol > 60Sol motor ileri, sağ motor yavaş geri: sağa döner
Işık öndefark 60 ya da daha azİki motor ileri

Örnek hesap: LDR aydınlıkta 2 kΩ ise A0 gerilimi 5 × 10 / (2 + 10) ≈ 4,2V olur ve Arduino yaklaşık 853 okur. Karanlıkta 200 kΩ ise gerilim yaklaşık 0,24V'a, okuma 49'a düşer.

Işık takip eden robot kodu nasıl çalışır?

Kod her 20 ms'de iki LDR'yi okur, tablodaki dört durumdan hangisinin geçerli olduğuna bakar ve motor() işleviyle iki tekerleğin yönünü ve hızını ayarlar.

const byte ENA = 5, IN1 = 2, IN2 = 3;   // sol motor
const byte ENB = 6, IN3 = 4, IN4 = 7;   // sag motor
const int KARANLIK = 300;   // ikisi de bunun altindaysa dur
const int FARK = 60;        // bu kadar fark varsa don
const int HIZ = 170;        // PWM, 0-255

void motor(byte en, byte a, byte b, int hiz) {   // hiz: -255..255
  digitalWrite(a, hiz > 0);
  digitalWrite(b, hiz < 0);
  analogWrite(en, abs(hiz));
}

void setup() {
  for (byte p = 2; p <= 7; p++) pinMode(p, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int sol = analogRead(A0);
  int sag = analogRead(A1);
  Serial.print(sol);
  Serial.print(' ');
  Serial.println(sag);

  if (sol < KARANLIK && sag < KARANLIK) {   // isik yok
    motor(ENA, IN1, IN2, 0);
    motor(ENB, IN3, IN4, 0);
  } else if (sol - sag > FARK) {            // isik solda
    motor(ENA, IN1, IN2, -HIZ / 2);
    motor(ENB, IN3, IN4, HIZ);
  } else if (sag - sol > FARK) {            // isik sagda
    motor(ENA, IN1, IN2, HIZ);
    motor(ENB, IN3, IN4, -HIZ / 2);
  } else {                                  // isik onde
    motor(ENA, IN1, IN2, HIZ);
    motor(ENB, IN3, IN4, HIZ);
  }
  delay(20);
}

Eşik değerleri nasıl ayarlanır?

Robotu USB'ye bağlı tutup seri monitörü 9600 baud ile açın. Önce oda ışığında iki değeri, sonra feneri 30-50 cm'den tuttuğunuzda oluşan değerleri not edin. KARANLIK değerini oda ışığındaki okumanın biraz üstüne koyun; böylece robot yalnızca fenere tepki verir. Robot sağa sola titriyorsa FARK değerini artırın, geç dönüyorsa azaltın.

Hangi güvenlik kurallarına dikkat edilmeli?

Robot 7,4V'luk pille çalışır; 220V şebeke elektriğine hiçbir parça bağlanmaz. Şu kurallara uyun:

  • Koruma devreli 18650 pil kullanın; pilleri yuvaya kutupları doğru takın, ezilmiş ya da şişmiş pili kullanmayın.
  • Pilleri yalnızca uygun bir Li-ion şarj cihazıyla ve bir yetişkin gözetiminde şarj edin.
  • Besleme 12V'u geçmemelidir; iki 18650 pil tam doluyken 8,4V verir.
  • Kablo bağlarken anahtar kapalı olsun. Dönen tekerleklere parmak yaklaştırmayın; robotu masa kenarında çalıştırmayın.
  • Feneri kimsenin gözüne tutmayın.

Ödevinizi nasıl sunarsınız?

Sunumda sınıfı karartıp robotu el feneriyle bir parkurda gezdirmek en etkili gösteridir.

  • Problem: "Ayçiçeği ve güneş paneli takip sistemleri en parlak yönü nasıl bulur?"
  • Ölçüm: Seri monitörden aydınlık ve karanlık değerlerini bir tabloya yazın.
  • Hesap: Gerilim bölücü formülüyle iki farklı LDR direnci için A0 gerilimini hesaplayın.
  • Rapor: Bağlantı şemasını, karar tablosunu ve kodun açıklamasını ekleyin.
  • Geliştirme: Koddaki sol ve sağ kararları yer değiştirerek ışıktan kaçan robot yapın. Bu iki davranış, Valentino Braitenberg'in robotik düşünce deneylerindeki araçlara benzer.

Sık sorulan sorular

LDR yerine hazır ışık sensör modülü kullanılabilir mi?

Kullanılabilir. Modülün analog çıkışını (AO) A0 ya da A1'e, VCC'yi 5V'a, GND'yi GND'ye bağlayın; ayrı 10 kΩ direnç gerekmez. Bazı modüllerde ışık arttıkça okunan değer azalır. Seri monitörden kontrol edin; değer ters değişiyorsa koddaki sol ve sağ dönüş koşullarını yer değiştirin.

Robot yerinde dönüp duruyorsa ne yapmalıyım?

Önce iki LDR'nin aynı ışıkta yakın değerler okuduğunu kontrol edin. LDR'ler üretim farkı nedeniyle biraz farklı okuyabilir; fark büyükse FARK değerini artırın. Siper pipetlerinin yerinde olduğundan ve tavan lambasının bir tarafa daha çok ışık vermediğinden emin olun.

Robot gün ışığında çalışır mı?

Güçlü gün ışığında iki LDR de çok yüksek değer okur ve fener fark yaratmaz. Robot en iyi loş bir odada, el feneri ya da telefon feneriyle çalışır. Dışarıda denemek isterseniz siper borularını uzatın ve KARANLIK eşiğini yükseltin.

L298N yerine L9110 kullanılabilir mi?

Kullanılabilir, ama kod değişir. L9110 kartlarında ayrı hız (EN) pini yoktur; her motor iki girişle sürülür ve hız, girişlerden birine PWM verilerek ayarlanır. Bu durumda dört girişin de Arduino'nun PWM pinlerine (D3, D5, D6, D9, D10, D11) bağlanması gerekir.

Robota hangi pil uygundur?

İki seri 18650 Li-ion pil (7,4V) yaygın bir seçimdir. L298N üzerinde yaklaşık 2V gerilim kaybı olduğu için 4 adet AA pil (6V) motorları yavaş döndürür. Pil seçimi için 18650 Li-ion pil rehberi yazısına bakabilirsiniz.

Özet

  • Işık takip eden robot, iki LDR'nin okumasını karşılaştırıp aydınlık tarafa döner.
  • Bağlantı: LDR'ler 10 kΩ bölücüyle A0 ve A1'e, L298N ENA/IN1/IN2 D5/D2/D3'e, ENB/IN3/IN4 D6/D4/D7'ye.
  • Karar: ikisi de 300'ün altındaysa dur, fark 60'tan büyükse dön, değilse ileri git.
  • Siyah pipet siperler ve seri monitörle eşik ayarı robotun kararlı çalışmasını sağlar.
  • Besleme iki 18650 pilden 7,4V'tur; 220V kullanılmaz, piller yetişkin gözetiminde şarj edilir.

Bu yazıdaki ürünler

Diğer yazılar

11 Kasım 20266 dk okuma

Pense Çeşitleri: Yan Keski, Kargaburun ve Kombine Pense

Pense çeşitleri arasında seçim işe göre yapılır: tel ve komponent bacağı kesmek için yan keski, dar alanda tutmak ve bükmek için kargaburun,...

Devamını oku →
11 Kasım 20266 dk okuma

İzoleli Tornavida ve 1000V VDE El Aletleri Nedir?

İzoleli tornavida, IEC 60900 (EN 60900) standardına göre 1000V AC ve 1500V DC gerilime kadar yalıtım için test edilmiş ve üzerinde çift üçge...

Devamını oku →
11 Kasım 20267 dk okuma

ESP8266 Hava Durumu Ekranı: NodeMCU, OLED ve Open-Meteo

ESP8266 hava durumu ekranı, NodeMCU kartının Wi-Fi ile internete bağlanıp Open-Meteo servisinden anlık sıcaklık, nem, rüzgâr ve hava durumu...

Devamını oku →
11 Kasım 20266 dk okuma

Havya Ucu Çeşitleri ve Bakımı: Konik, Keski, Bıçak

Havya ucu, lehimlenecek noktanın boyutuna göre seçilir: ince SMD ve sık bacaklar için konik (I), genel THT lehim için keski (D) ya da eğik k...

Devamını oku →
11 Kasım 20266 dk okuma

Ultrasonik Theremin Projesi: HC-SR04 ile Elle Müzik

Ultrasonik theremin, HC-SR04 sensörüyle elinizin uzaklığını ölçüp bu mesafeyi ses frekansına çeviren bir Arduino projesidir. El sensöre yakl...

Devamını oku →
11 Kasım 20266 dk okuma

Filament Nasıl Kurutulur ve Saklanır? PLA, PETG, TPU

Nem çeken filament, malzemesine uygun sıcaklıkta birkaç saat ısıtılarak kurutulur: PLA için 45-50 °C, PETG için 60-65 °C, TPU için 50-55 °C...

Devamını oku →