Arduino radar projesi, bir servo motorun üzerine yerleştirilen HC-SR04 ultrasonik sensörle yapılır. Servo sensörü 15° ile 165° arasında döndürür, Arduino her açıda mesafeyi ölçüp bilgisayara gönderir. Processing programı bu verilerle yarım daire şeklinde bir radar ekranı çizer. HC-SR04 yaklaşık 2-400 cm arasında ölçer.
Filmlerdeki yeşil radar ekranlarını kendi masanızda yapabilirsiniz. Bu yazıda HC-SR04 ultrasonik sensörü bir SG90 servo motorun üzerine yerleştirip çevreyi tarıyoruz. Arduino her açıda ölçtüğü mesafeyi bilgisayara gönderiyor, Processing programı da bunları radar ekranında gösteriyor. Sensörün neleri ölçebildiğini ve neleri ölçemediğini de anlatıyoruz.
Arduino radar nedir?
Arduino radar, dönen bir mesafe sensörüyle çevresindeki cisimlerin yönünü ve uzaklığını bulan bir tarama sistemidir. Gerçek radarlar radyo dalgası kullanır. Bizim projemiz ise ses dalgası kullanır; bu yüzden aslında bir "sonar"dır. Yarasalar ve yunuslar da yönlerini benzer biçimde, yankıyla bulur.
Sistemin iki görevi vardır. Servo motor sensörün baktığı açıyı belirler. HC-SR04 o yöndeki en yakın cismin mesafesini ölçer. Açı ve mesafe birlikte, cismin haritadaki yerini verir.
Hangi malzemeler gerekir?
Arduino radar için bir Arduino Uno, HC-SR04 sensör, SG90 servo motor, breadboard ve jumper kablolar yeterlidir. Ekran için bilgisayara ücretsiz Processing programını kurmanız gerekir.
Malzeme listesi
| Malzeme | Adet | Ne işe yarar? |
|---|---|---|
| Arduino UNO R3 | 1 | Servoyu döndürür, mesafeyi ölçüp gönderir |
| HC-SR04 ultrasonik mesafe sensörü | 1 | Ses yankısıyla mesafe ölçer |
| SG90 mini servo motor | 1 | Sensörü 15°-165° arasında döndürür |
| 830 pin breadboard | 1 | 5V ve GND dağıtımı yapılır |
| Erkek-dişi jumper kablo | 4 | Sensörü breadboard'a bağlar |
| Erkek-erkek jumper kablo | 6-8 | Servo ve güç bağlantıları |
Sensörü servo koluna sıcak silikon ya da çift taraflı bantla yapıştıracaksınız. Erkek-dişi kablolar, sensör dönerken kabloların gerilmemesi için yeterince uzun olmalıdır.
Devre nasıl kurulur?
HC-SR04'ün Trig ucu D10'a, Echo ucu D11'e, servonun sinyal kablosu D12'ye bağlanır; ikisi de 5V ve GND ile beslenir. Bağlantıyı yaparken USB kablosu takılı olmasın.
- Arduino'nun 5V pinini breadboard'un kırmızı (+) hattına, GND pinini mavi (−) hattına bağlayın.
- HC-SR04 bağlantısı: VCC → 5V hattı, Trig → D10, Echo → D11, GND → GND hattı.
- Servo bağlantısı: kırmızı → 5V hattı, kahverengi → GND hattı, turuncu (sinyal) → D12.
- Servoyu kodla 90°'ye getirin, sonra sensörü kolun üzerine tam ileri bakacak şekilde yapıştırın.
- Servoyu sabit bir tabana (karton kutu ya da tahta) sıkıca tutturun.
- Arduino kodunu yükleyin, Seri Monitör'ü kapatın ve Processing programını çalıştırın.
Sensör dönerken kabloların takılmaması için kabloları servonun arkasından gevşek bir halka şeklinde geçirin. HC-SR04'ün çalışma ilkesini HC-SR04 ultrasonik sensör yazısında, servonun nasıl açı tuttuğunu servo motor nedir yazısında anlattık.
Radar kodu nasıl çalışır?
Arduino kodu servoyu 15°'den 165°'ye birer derece döndürür, her açıda mesafeyi ölçer ve "açı,mesafe." biçiminde bilgisayara gönderir; sonra aynı işi ters yönde yapar.
#include <Servo.h>
const byte TRIG = 10, ECHO = 11;
Servo servo;
int mesafeOlc() {
digitalWrite(TRIG, LOW); delayMicroseconds(2);
digitalWrite(TRIG, HIGH); delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long sure = pulseIn(ECHO, HIGH, 30000); // en çok 30 ms bekle
return sure / 58; // cm; 0 = yankı yok
}
void olcVeGonder(int aci) {
servo.write(aci);
delay(30); // servonun yerine oturması için
Serial.print(aci);
Serial.print(',');
Serial.print(mesafeOlc());
Serial.print('.');
}
void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
servo.attach(12);
Serial.begin(9600);
}
void loop() {
for (int a = 15; a <= 165; a++) olcVeGonder(a);
for (int a = 165; a >= 15; a--) olcVeGonder(a);
}
Mesafe hesabı ses hızına dayanır. Ses havada 20 °C'de yaklaşık 343 m/s, yani 0,0343 cm/µs hızla gider. Yankı süresi gidiş ve dönüşü içerdiği için ikiye bölünür: mesafe = süre × 0,0343 / 2 ≈ süre / 58. Örneğin 1.160 µs, 20 cm demektir.
Tarama 0° ile 180° yerine 15° ile 165° arasında yapılır. SG90 uç açılarda zorlanıp titreyebilir ve sensör kendi tabanını ya da kablolarını görebilir. Bu kenar payı ölçümleri temiz tutar.
Processing radar ekranı nasıl yapılır?
Processing radar ekranı, seri porttan gelen "açı,mesafe." verisini okuyup yarım daire üzerinde dönen bir çizgi ve cisim noktaları çizer. Processing'i processing.org adresinden ücretsiz indirip aşağıdaki kısa programı çalıştırın.
import processing.serial.*;
Serial port;
float aci = 0, mesafe = 0;
void setup() {
size(800, 450);
port = new Serial(this, Serial.list()[0], 9600);
port.bufferUntil('.');
background(0);
}
void draw() {
noStroke(); fill(0, 12); rect(0, 0, width, height); // eski izler söner
translate(width / 2, height - 20);
stroke(0, 255, 0); noFill();
for (int r = 100; r <= 400; r += 100) arc(0, 0, r * 2, r * 2, PI, TWO_PI);
float a = radians(aci);
line(0, 0, 400 * cos(a), -400 * sin(a));
if (mesafe > 0 && mesafe <= 40) { // 1 cm = 10 piksel
stroke(255, 0, 0); strokeWeight(8);
point(mesafe * 10 * cos(a), -mesafe * 10 * sin(a));
strokeWeight(1);
}
}
void serialEvent(Serial s) {
String veri = s.readStringUntil('.');
if (veri == null) return;
String[] parca = split(trim(veri.substring(0, veri.length() - 1)), ',');
if (parca.length == 2) { aci = float(parca[0]); mesafe = float(parca[1]); }
}
Ekrandaki her yeşil halka 10 cm'dir; en dıştaki halka 40 cm'yi gösterir. Kırmızı noktalar algılanan cisimlerdir. Program açılmıyorsa Serial.list()[0] içindeki 0'ı 1 ya da 2 yapın; bu sayı Arduino'nun bağlı olduğu portu seçer. Arduino IDE'nin Seri Monitör'ü açıksa Processing porta bağlanamaz.
HC-SR04 hangi mesafeleri ölçebilir?
HC-SR04 yaklaşık 2 ile 400 cm arasını ölçer, ancak sonuç cismin boyutuna, yüzeyine ve açısına bağlıdır. Sensörün ses ışını yaklaşık 15° genişliğindedir; bu yüzden küçük cisimler ekranda birkaç derecelik bir yay gibi görünür.
| Durum | Ne olur? | Neden? |
|---|---|---|
| Cisim 2 cm'den yakın | Yanlış ya da 0 değer | Yankı, sensör dinlemeye başlamadan döner |
| Düz, sert yüzey (kitap, duvar) | Doğru ölçüm | Ses sensöre geri yansır |
| Yumuşak yüzey (kumaş, sünger) | Ölçüm yok ya da hatalı | Ses emilir |
| Eğik yüzey | Cisim görünmeyebilir | Yankı başka yöne yansır |
| İnce cisim (kalem, tel) | Çoğu zaman görünmez | Yansıyan ses çok azdır |
| Sıcak ya da soğuk hava | Küçük sapma | Ses hızı sıcaklıkla değişir |
Ses hızı her 1 °C için yaklaşık 0,6 m/s değişir. Bu, maket ölçeğinde birkaç milimetrelik bir farktır ve ödev için önemsizdir. Asıl sınırlama ışının genişliğidir: radarınız iki cismi ancak aralarında birkaç santimetre boşluk varsa ayırabilir.
Hangi güvenlik kurallarına dikkat edilmeli?
Radar USB'den 5 V ile çalıştığı için güvenlidir; yine de şu kurallara uyun:
- Devreyi yalnızca bilgisayarın USB çıkışından besleyin. 220V şebeke elektriğine hiçbir şey bağlamayın.
- Projeyi bir öğretmen ya da yetişkin gözetiminde kurun; sıcak silikon tabancasını yetişkin yardımıyla kullanın.
- Servo dönerken parmaklarınızı ve kablolarınızı kolun önünden uzak tutun.
- Servo titriyor ya da Arduino kendini yeniden başlatıyorsa servoyu 4 kalem pilden (6 V) besleyin ve pilin eksisini Arduino GND'sine bağlayın.
- Sensörü elle zorla çevirmeyin; servonun plastik dişlileri kırılabilir.
Ödevinizi nasıl sunarsınız?
Ödevinizi, radarın önüne farklı cisimler koyup ekrandaki sonuçları gerçek ölçümlerle karşılaştırarak sunabilirsiniz.
- Soru: "Ses dalgalarıyla bir cismin yeri bulunabilir mi?"
- Deney 1: Bir kutuyu 10, 20 ve 30 cm'ye koyun; cetvel ölçümü ile ekrandaki değeri tabloya yazın.
- Deney 2: Aynı mesafeye kitap, sünger ve kalem koyun; hangilerinin görüldüğünü not edin.
- Bağlantı: Yarasaların ve gemilerdeki sonarların aynı ilkeyle çalıştığını anlatın.
- Sonuç: Sensörün sınırlarını ve hata payını yorumlayın.
Sunumda radarın önüne oyuncak araçlar ya da küçük kutular dizin ve ekranı projeksiyona yansıtın. Benzer bir uygulama olan Arduino park sensörü projesi de sunumunuzda karşılaştırma için iyi bir örnektir. Diğer modüller için Arduino sensör ve modüller kategorisine bakabilirsiniz.
Sık sorulan sorular
Radar neden gerçek radar değil sonar sayılır?
Gerçek radar radyo dalgası, sonar ise ses dalgası kullanır; HC-SR04 ses kullandığı için projemiz aslında bir sonardır. Sensör insan kulağının duyamadığı 40 kHz'lik ultrasonik ses gönderir. Radyo dalgaları ışık hızında gittiği için çok uzak mesafeleri ölçer. Ses ise yavaş gider ve havada çabuk zayıflar; bu yüzden menzil birkaç metreyle sınırlıdır.
Ekranda hiç nokta görünmüyorsa ne yapmalıyım?
Önce Arduino IDE'nin Seri Monitör'ünü kapatın, çünkü port aynı anda iki program tarafından kullanılamaz. Sonra Processing'deki Serial.list()[0] değerini değiştirip doğru portu seçin. Cisimleri 40 cm'den yakına koyun; ekran yalnızca bu mesafeyi gösterir. Sorun sürerse Seri Monitör'de "90,25." gibi verilerin geldiğini kontrol edin.
Tarama hızı nasıl artırılır?
Tarama hızı, servonun adım açısı büyütülerek ya da bekleme süresi kısaltılarak artırılır. Koddaki a++ yerine a += 2 yazarsanız tarama iki kat hızlanır, ama ayrıntı azalır. delay(30) değerini çok küçültmeyin; servo yerine oturmadan ölçüm yapılırsa noktalar yanlış açıda çizilir. Bir tam tarama şu ayarlarla birkaç saniye sürer.
Menzil 40 cm'den büyük yapılabilir mi?
Evet, menzil Processing programındaki ölçek değiştirilerek büyütülebilir. Koddaki mesafe * 10 çarpanını 4 yaparsanız 400 piksel 100 cm'yi gösterir; koşuldaki 40 değerini de 100 yapın. HC-SR04 birkaç metreyi ölçebilir, ama uzak mesafelerde küçük cisimlerden yankı alması zorlaşır. Sınıf için 1 metre pratik bir sınırdır.
Servo yerine step motor kullanılabilir mi?
Evet, step motor da kullanılabilir ve daha hassas adım atar. Ancak step motor ek bir sürücü kartı ister ve konumunu kendisi bilmez; açılışta bir başlangıç noktası belirlemeniz gerekir. SG90 servo ise istenen açıya doğrudan gider ve tek kabloyla kontrol edilir. Öğrenci projesi için servo daha kolay ve yeterlidir.
Özet
- Arduino radar, servoyla dönen bir HC-SR04 ile açı ve mesafe ölçen bir sonardır.
- Bağlantı: Trig D10, Echo D11, servo sinyali D12; hepsi 5V ve GND ile beslenir.
- Servo 15°-165° arasında birer derece döner; her açıda "açı,mesafe." gönderilir.
- Mesafe = süre / 58 (cm); ses 20 °C'de yaklaşık 343 m/s hızla gider.
- HC-SR04 yaklaşık 2-400 cm ölçer; yumuşak, eğik ve ince cisimleri kaçırabilir.
- Devreyi yalnızca USB ile, yetişkin gözetiminde çalıştırın.
