Bir cümlelik özet
Uzaktan kontrol, bir kumandanın gönderdiği komutu robotun bir alıcıyla yakalayıp harekete çevirmesidir; robot komutu duyar, ne yapacağına karar verir ve motorlarını sürer.
Neden önemli?
Bir arabayı garaj kapısından, drone'u yerden, oyuncak robotu telefondan yönetiyorsan bir uzaktan kontrol sistemi kullanıyorsun demektir. Robot sana kabloyla bağlı değildir; aradaki komut görünmez bir sinyalle taşınır.
Önceki derslerde robotun algıla–karar ver–uygula döngüsünü öğrendik. Şimdi bu döngüye yeni bir "algı" ekliyoruz: robot yalnız kendi sensörlerini değil, senin gönderdiğin komutu da bir girdi olarak dinliyor. Yani "ileri git" komutu, tıpkı bir mesafe sensörünün okuması gibi, kararı tetikleyen bir bilgidir. Bu dersin sonunda bir düğmeye basıp robotu ileri gönderen sistemin nasıl düşündüğünü göreceksin.
Uzaktan kontrolün üç parçası
Her uzaktan kontrol sisteminde üç parça vardır. İsimleri korkutucu görünse de fikir çok basittir.
- Verici (transmitter): Komutu gönderen taraf. Kumanda, micro:bit veya telefon olabilir.
- Alıcı (receiver): Komutu yakalayan taraf. Robotun üstündeki modüldür.
- İşlemci (denetleyici): Alınan komuta göre karar verip motorları süren beyin. Bizim örneğimizde Arduino veya bir micro:bit.
Günlük hayattan örnek: telsizle konuşmak
İki telsizle konuşan iki kişiyi düşün. Biri konuşur (verici), diğeri dinler (alıcı). Aynı kanalda olmaları gerekir; farklı kanaldaysalar birbirlerini duymazlar. Uzaktan kontrol de böyledir: verici ile alıcı aynı "dili" ve aynı ayarı paylaşmalıdır.
Günlük hayattan örnek: televizyon kumandası
Televizyon kumandasındaki düğmeye bastığında ışık bile göremezsin ama televizyon komutu alır. Kumanda, gözle görülmeyen kızılötesi ışıkla küçük bir kod gönderir; televizyonun önündeki alıcı bu kodu okur. "Ses aç" düğmesi bir sayı, "kanal değiştir" başka bir sayıdır. Robotta da her komut aslında küçük bir sayı ya da harftir.
Uzaktan kontrol yolları
Komutu havadan taşımanın birkaç yolu vardır. Üçünü kavramsal olarak karşılaştıralım.
Kızılötesi (IR) kumanda
Televizyon kumandalarının kullandığı yöntemdir. Ucuzdur ve kolaydır, ama iki koşulu vardır: kumanda ile alıcının birbirini görmesi gerekir (arada duvar olmaz) ve menzili kısadır (birkaç metre). Robotu köşeden döndürmek istersen sinyal engele takılır.
Radyo (micro:bit ve benzeri)
Radyo dalgaları duvarların arkasından geçebilir ve daha uzağa ulaşır. Görüş hattı gerektirmez. micro:bit'in içinde hazır bir radyo vardır; bir micro:bit'i kumanda, diğerini robotun beyni yapıp aralarında mesaj yollayabilirsin. İki cihazın aynı grup numarasını kullanması gerekir; bu, telsizdeki aynı kanal fikridir.
Bluetooth
Telefon veya tablet ile robot arasında bağlantı kurar. Menzili radyoya benzer ama önce iki cihazın birbirini tanıması, yani eşleşmesi gerekir. Telefondaki bir uygulamadan düğmeye bastığında robota komut gider. Kurulumu biraz daha uzundur, ama arayüzü zengindir.
Kısaca: kızılötesi basit ama görüş hattı ister; radyo ve Bluetooth duvar arkasından çalışır ve daha uzağa gider.
Komutu harekete çevirmek
Robot komutu aldıktan sonra ne yapar? İşte bu dersin kalbi burasıdır. Komut, robota gelen bir girdidir; robot bu girdiye bakıp bir harekete karar verir. Mantığı önce sözde kodla yazalım:
Başla
Sonsuza kadar tekrarla:
Gelen komutu oku
Eğer komut "ileri" ise
iki motoru da ileri sür
Değilse eğer komut "dur" ise
iki motoru da durdur
Değilse
hiçbir şey yapma (son komutu koru)
Dikkat et: bu, algoritma dersindeki koşul yapısının aynısıdır. Robot her komutu bir "eğer" ile karşılaştırır. Tanımadığı bir komut gelirse en güvenli davranış çoğunlukla durmaktır ya da son bilinen komutu korumaktır.
micro:bit'ten Arduino'ya: komutu tek harfe indirmek
İki micro:bit arasında radyoyla en kolay yol, komutu tek bir harf olarak yollamaktır. Kumanda micro:bit'i A düğmesine basınca "F" (forward/ileri), B düğmesine basınca "S" (stop/dur) gönderir. Robottaki micro:bit bu harfi alır ve Arduino'ya aktarır. Arduino tarafı şu mantıkla çalışır:
char komut = alinanHarf(); // radyo/seri porttan gelen harf
if (komut == 'F') { // ileri
digitalWrite(solMotor, HIGH);
digitalWrite(sagMotor, HIGH);
}
else if (komut == 'S') { // dur
digitalWrite(solMotor, LOW);
digitalWrite(sagMotor, LOW);
}
komut == 'F' satırı "gelen harf F mi?" diye sorar; öyleyse iki motoru da çalıştırır. Motorlar doğrudan Arduino pininden değil, bir motor sürücü üzerinden beslenir; çünkü motorlar Arduino'nun pininin veremeyeceği kadar akım çeker. Motor sürücü, düşük güçlü sinyali alıp ayrı pil paketinin gücüyle motoru döndürür.
Neden ayrı pil ve ortak toprak?
Robot kol dersinde öğrendiğimiz kural burada da geçerli. Motorlar için ayrı bir pil paketi kullanılır; Arduino ile pil paketinin eksi uçları (GND) birbirine bağlanır. Buna ortak toprak denir. Ortak toprak olmadan sinyal ile güç aynı referansı paylaşmaz ve sistem düzgün çalışmaz.
Gecikme ve menzil
Uzaktan kontrolde iki gerçeği unutmamak gerekir: sinyal ne kadar hızlı ulaşıyor ve ne kadar uzağa gidiyor?
- Gecikme (latency): Düğmeye bastığın an ile robotun tepki verdiği an arasında küçük bir süre vardır. Genelde çok kısadır, ama sinyal zayıfsa büyür. "Dur" komutunu bir saniye geç alan bir robot, o sürede duvara çarpabilir. Bu yüzden hızlı robotlarda güvenli hız seçmek önemlidir.
- Menzil (range): Verici ile alıcı arasındaki uzaklık arttıkça sinyal zayıflar. Menzil sınırını aşarsan robot komutu hiç almaz. Bazı sistemlerde robot, belli bir süre komut gelmezse kendini durdurur; buna güvenli durdurma denir ve çok işe yarar.
Görüş hattı, duvarlar, başka cihazların paraziti ve pil seviyesi de menzili etkiler. İyi bir uzaktan kontrol tasarımı, komut kesildiğinde robotun ne yapacağını da önceden düşünür.
Mini uygulama
Bu uygulamayı gerçek bir robot olmadan da yapabilirsin; amaç komut–hareket mantığını kurmaktır.
- Bir kağıda dört komut yaz:
F(ileri),B(geri),L(sola dön),S(dur). - Bir arkadaşını "robot" yap. Sen verici ol, o alıcı olsun.
- Komutları yalnız harf söyleyerek ver; arkadaşın her harfe göre bir adım atsın ya da dönsün.
- Şimdi araya bir "gecikme" ekle: harfi söyledikten sonra arkadaşın iki saniye bekleyip öyle hareket etsin. Bir engele doğru yürürken bunun ne kadar tehlikeli olduğunu göreceksin.
- Son olarak bir "menzil" kuralı koy: odanın öbür ucuna geçince fısıltıyla komut ver. Duyulmayan komutlar için arkadaşın dursun (güvenli durdurma).
İpucu: Tanımadığı bir harf duyduğunda arkadaşın hareket etmesin, dursun. Gerçek robotta da bilinmeyen komuta karşı en güvenli tepki budur.
Sık yapılan hatalar
Verici ve alıcıyı farklı ayarda bırakmak
micro:bit'lerde grup numarası, Bluetooth'ta eşleşme farklıysa komut hiç ulaşmaz. İki tarafın da aynı kanalı/grubu kullandığından emin ol.
Kızılötesini duvar arkasından beklemek
Kızılötesi görüş hattı ister. Kumanda ile alıcı birbirini görmüyorsa komut gitmez. Duvar arkası için radyo veya Bluetooth kullan.
"Komut yoksa ne olacak?" sorusunu atlamak
Sinyal kesilince robot son komutu sonsuza kadar sürdürürse duvara gidebilir. Belirli süre komut gelmezse durma kuralı ekle.
Motorları doğrudan Arduino'dan sürmeye çalışmak
Motorlar Arduino pininin verebileceğinden fazla akım çeker. Araya motor sürücü koy, motorları ayrı pil paketiyle besle ve ortak toprağı bağla.
Gecikmeyi yok saymak
Yüksek hızda çalışan bir robotta küçük bir gecikme bile çarpmaya yol açar. Önce düşük hızda test et, tepki süresini gör.
Güvenlik notu
Uzaktan yönetilen robot senden metrelerce uzakta hareket eder; bu, dikkati azaltmak için değil, artırmak için bir nedendir. Robot beklenmedik bir komutla aniden hareket edebilir.
- Robotu çalıştırmadan önce test alanını temizle; kırılabilecek eşyaları ve ayakları uzaklaştır.
- Parmaklarını, saçını ve kabloları tekerleklerden ve dişlilerden uzak tut.
- İlk denemede düşük hızda çalış ve robotun tepki süresini gör.
- Motorlar için ayrı, düşük gerilimli bir pil paketi ve bir motor sürücü kullan; ortak toprağı bağla. Asla şebeke elektriği (priz) kullanma.
- Komut kesildiğinde robotun durmasını sağla; kontrolü kaybedersen enerjiyi kes (pili ayır).
- Motorlar, pil ve aletlerle çalışırken bir yetişkinden yardım al.
Ders özeti
- Uzaktan kontrol üç parçadan oluşur: komutu gönderen verici, yakalayan alıcı ve karar veren işlemci.
- Komutu taşımanın yolları farklıdır: kızılötesi basit ama görüş hattı ister; radyo ve Bluetooth duvar arkasından çalışır ve daha uzağa gider.
- Gelen komut robota bir girdidir; robot bunu bir koşulla karşılaştırıp harekete çevirir.
- Gecikme ve menzil her sistemde vardır; komut kesilince robot güvenli biçimde durmalıdır.
- Motorlar bir motor sürücü ve ayrı pil paketiyle sürülür; Arduino ile ortak toprak paylaşılır.
Kontrol soruları
- Bir uzaktan kontrol sisteminin üç temel parçası nedir?
- Kızılötesi kumandanın radyoya göre iki dezavantajı nedir?
- İki micro:bit'in radyoyla haberleşmesi için hangi ayarın aynı olması gerekir?
- Robota bilinmeyen bir komut geldiğinde en güvenli davranış genelde nedir?
- "Menzil" ve "gecikme" ne demektir; komut kesilince robot ne yapmalıdır?
Cevaplar
- Komutu gönderen verici, komutu yakalayan alıcı ve alınan komuta göre motorları süren işlemci (denetleyici).
- Kızılötesi, kumanda ile alıcının birbirini görmesini ister (duvar arkasından geçmez) ve menzili kısadır (birkaç metre).
- İki micro:bit'in de aynı grup numarasını kullanması gerekir; bu, telsizdeki aynı kanal fikridir.
- Genelde durmak ya da son bilinen güvenli komutu korumak; robot tanımadığı komuta göre rastgele hareket etmemelidir.
- Menzil, verici ile alıcının haberleşebildiği en uzak mesafedir; gecikme, düğmeye basmakla robotun tepki vermesi arasındaki kısa süredir. Komut kesilince robot güvenli biçimde durmalıdır (güvenli durdurma).
Kaynak ve doğrulama notu
“Uzaktan Kontrol” dersi için doğrulama odağı Uzaktan kontrolün üç parçası ile Günlük hayattan örnek: televizyon kumandası arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Robot davranışı yalnız kodla açıklanamaz; mekanik yapı, güç sistemi, sensör konumu ve zemin koşulları birlikte değerlendirilmelidir. Test sonuçları aynı parkurda birkaç tekrar yapılarak kaydedilmelidir.
Sonraki ders
Otonom ve Yarı Otonom Sistemler: Robotun bazı kararları sana sormadan, kendi sensörleriyle vermesi.