Arduino Matlab Radar Projesi

31 2.500

Radarlar, nesneleri radyo dalgalarının yansıması sonucu tespit eden cihazlardır. Fakat biz ultrasonik sensör kullanarak ses dalgaları ile nesnelerin yerlerini tespit edeceğiz. Arduino ile yapılmış birçok radar projesi mevcut. Kullanıcı arayüzleri farklı programlarda yazılabilir. Bu projemizde matlab gerçek zamanlı grafik ekranından radara takılan cisimlerin konumlarını göreceğiz. Matlab Radar projemize başlayalım.

Malzemeler:

  1. Arduino Uno
  2. Ping Ultrasonik Sensör veya HC-SR04 Ultrasonik Sensör
  3. Servo Motor

Ping Ultrasonik Sensörü ile Elektronik Devre Şeması:

Devre Bağlantıları:

Ping Sensör: 5v – 5v, Gnd – Gnd, Sinyal – Dijital 8. pin

Servo Motor: Kırmızı – 5v, Kahverengi- Gnd, Dijital 9. pin

HC-SR04 Ultrasonik Sensörü ile Devre Şeması

Yazılım Kısmı:

Ping Ultrasonik Sensörü ile Arduino Yazılımı:

#include <Servo.h>
Servo myservo;
int pos = 1;
long duration, inches, cm=0;
const int pingPin = 8;
int st=0;
 
void setup()
{
Serial.begin(9600);
myservo.attach(9);
}
 
void loop()
{
 
if (pos == 1)
st = 0;
 
if (pos == 180)
st = 1;
 
if (st==0)
pos = pos+1;
 
if (st==1)
pos = pos-1;
 
myservo.write(pos);
 
data();
 
Serial.print(pos); Serial.print( " "); Serial.println(cm);
delay(30);
 
}
 
void data()
{
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
// convert the time into a distance
inches = microsecondsToInches(duration);
cm = microsecondsToCentimeters(duration);
if (cm>100)
{
cm = 100;
}
}
 
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
 
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}

Güncelleme: 22.12.2016

Ultrasonic.h kütüphanesini buradan indirebilirsiniz >> Ultrasonic.zip

HC-SR04 Ultrasonik ile Arduino Yazılımı

#include <Servo.h>
Servo myservo;
#include <Ultrasonic.h>
Ultrasonic sensor(6,5); // (Trig PIN,Echo PIN)
int pos = 1;
long cm=0;
 
int st=0;
 
void setup()
{
Serial.begin(9600);
myservo.attach(9);
}
 
void loop()
{
 
if (pos == 1)
st = 0;
 
if (pos == 180)
st = 1;
 
if (st==0)
pos = pos+1;
 
if (st==1)
pos = pos-1;
 
myservo.write(pos);
 
data();
 
Serial.print(pos); Serial.print( " "); Serial.println(cm);
delay(30);
 
}
 
void data()
{
cm = sensor.Ranging(CM);
if (cm>100)
{
cm = 100;
}
}

 

Matlab Yazılımı:

Matlab de yeni bir script açın ve aşağıdaki kodu yapıştırın.

clc;
clear all;
%Customize graph
figure('units','normalized','outerposition',[0 0 1 1]);
whitebg('black');
%Draw Scale Data
th = linspace(0,pi,1000);
R = 10:10:100;
for i=1:length(R);
x = R(i)*cos(th);
y = R(i)*sin(th);
plot(x,y,'Color', [0.603922 , 0.803922 , 0.196078] ,'LineWidth',1);
hold on;
end
%Draw Axis data
x0 = [0 100 0 0 0 0 ]; x1 = [0 100 86.60 50 -50 -86.60]; y0 = [0 0 0 0 0 0]; y1 = [100 0 50 86.60 86.60 50];
for i=1:length(x0);
hold on;
plot([x0(i),x1(i)],[y0(i),y1(i)] ,'Color', [0.603922 , 0.803922 , 0.196078],'LineWidth',2);
end
%Draw Sonar default data
for i=1:180
hold on;
[x, y] = pol2cart(i*0.0174532925, 100);
h(i) = plot([0,x],[0,y],'g','LineWidth',1);
end
%define serial port
s1 = serial('COM12');
s1.BaudRate=9600;
fopen(s1);
%Draw Sonar Data
while(1)
data = fscanf(s1);
[th, r] = strtok(data);
th = real(str2num(th));
r = str2num(r);
set(h(th),'color','r');
[x0, y0] = pol2cart(th*0.0174532925, 100);
[x, y] = pol2cart(th*0.0174532925, r);
set(h(th),'XData',[x0,x]);
set(h(th),'YData',[y0,y]);
m = plot([0,x0],[0,y0],'r','LineWidth',3);
drawnow
delete(m);
end
fclose(s1);

s1 = serial(‘COM12’); satırındaki port numarasını arduinonun bağlı olduğu port numarası yapın.

Arduinoyu bilgisayara takın ve matlab dosyasını çalıştırın. Radarınız tarama yapmaya başlayacaktır

Bunları da beğenebilirsin

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

31 Yorum

  1. Eren

    Hocam kodu servo motor olmadan kullandım radar çubuğu gelmedi, matlabda sadece bu kodu kullanmak yetmiyecek anladığım kadarıyla ardunio ile haberleştirmem lazım demi?

    1. murti67

      çınar senmisin knk

  2. Ahmet

    Merhaba. Bende bunu aynı kodlarla HC-SR04 ile yaptım. Ama sensör 50 cm’den sonrasını algılayamıyor. Radar ekranında 50 cm’den sonrası ne olursa olsun resimdeki gibi direk kırmızı olarak çıkıyor. Yardımcı olursanız sevinirim. hizliresim.com/9QD1R3

    1. Sezgin GÜL

      Projedeki kütüphaneyi yeniledim. tekrar indirip kütüphaneye eklersen sorun ortadan kalkacaktır.

  3. serhat

    matlab kodlarındaki sayılar nereden geliyor?

    1. Sezgin GÜL

      grafik ekranının çizilmesi için hesaplanmış değerlerdir. Yani ekranda çıkan yarım dairelerin her biri arası ölçekli olarak ekrana basılır ve bu sayede nesne radara takıldığında ne kadar uzaklıkta olduğu ekrandan rahatlıkla okunabilir

  4. halil

    hocam iyi günler öncelikle elinize sağlık . Acaba elinizde matlab kodunun hc sr04 e uyarlanmış şekli var mı proje için lazımda yardımcı olursanız sevinirim şimdiden teşekkürler.

  5. Mehmet

    Merhaba ben Arduino uno ile yapıcam yalnız bağlantı şeması net değil ve uno da girişler farklı yardimci olurmusunuz

  6. eymen

    kodu yapıştırıyorum kontrol et diyorum hata vermiyor yukle deyince hata veriyor data(); burda hata veriyor bende ki arduino nana ordan mı kaynaklı hata

    1. Sezgin GÜL

      Tam hatayı yazarsanız yardımcı olurum.

      1. eymen

        31 sırada ki data(); kısmında veriyor derliyorum sıkıntı yok ama yukle deyince oldu araçlardan portu ayarladım ardiuno yu seçtim ama bende ki nano

        1. eymen

          anlamadım şimdi yükledi programı en başta neden hata verdi anlamadım yine de teşekkürler

  7. eymen

    admin kodu alıyorum yapıştırıyorum kontrol et diyorum hata vermiyor arduino takıyorum bende ki nano yukle deyince hata veriyor data() burda hata veriyor arduino farklı oldugu için olabilir mi ?

  8. SAFA

    bu programın matlabdaki akış diyagramını yazabilirmisiniz

  9. Emirhan

    bu uygulamanın kodalrını hc-sr04 için düzenleyip atabilirmisiniz acaba

  10. huzeyfe

    merhaba. aynı projenin hc-sr04 matlab kodlarını paylaşabilirmisiniz?

  11. Tahsin

    Bu projeyi hcsr04 ile yapmak için kodda nasıl bi deişiklik yapmamız gerek bilenler yazabilir mi

  12. ömer

    merhaba ben bu projeyi yapmak istiyorum . Ping Ultrasonik Sensör yerine ,HC-SR04 Ultrasonik Mesafe Sensörü kullanabilirmiyim onu merak ettim .çünkü ikisisnin arasında cok fazla fiyat farkı var

    1. Sezgin GÜL

      ping sensör 100 tl hc-sr04 ise 5 tl . fiyata bakmıyorsan ping sensör en iyisi. hatasız ölçüm yapar ve hızlıdır. hc-sr04 kullanırsan da kodu değiştirmen gerekiyor.

      1. ömer

        teşekkürler

  13. ahmet

    Bu projeyi HC-SR04 sensör ile yapamazmıyız

    1. Sezgin GÜL

      tabi yaparsınız uzaklığı hc-04 e göre hesaplattır çıkış datasını matlab a gönder

    2. halil

      hocam acaba HC-SR04 için yapabildin mi?

  14. Evren

    Hocam oncelikle merhaba arduino yu bilgisayara baglamadan bu grafiği kaplosuz olarak nasil aktarabilirim.

    1. Sezgin GÜL

      bluetooth veya rf ile değerleri gönderirsin.Bluetooth ile yapmak istersen buradan iki bluetooth modulun haberleşme ayarlarına bakabilirsin. http://www.robimek.com/hc-05-ile-hc-06-bluetooth-modullerin-haberlesmesi/ Slave modda olan bluetooth u pc ye serial dönüştürücü ile bağla. Master olan modülü de arduinoya bağla.Ya da pcnin kendi bluetooth unu da kullanabilirsin. Ama bazen bağlantı erken kopuyor. Sadece arduino kodunda loop kısmındaki Serial.print(pos); Serial.print( ” “); Serial.println(cm); “println” ifadelerinin yerine “write” yaz.

  15. Şinasi

    Merhaba devre çok güzel fakat ben devreyi biraz daha geliştirip cismi algıladıgında benim istedigim bir ses dosyasini calistirmasini istiyorum ayni zamanda buna ek olarak bir cisim gördügü zaman bu cisme kitlenip bu cismin hareket ettigi yere yönelmesini istiyorum bunu nasil saglarım teşekkürler.

    1. Sezgin GÜL

      Merhaba
      Buradaki projeden ses dosyası çalma işlemine bakabilirsin.http://www.robimek.com/arduino-ile-sd-karttan-melodi-calma/ Yazılımda mesafeye koşul tanımlayarak gerekli dosyayı çaldırırsın.Eğer mp3 formatında çaldırmak istersen bu projeye bakabilirsin. http://www.robimek.com/arduino-ile-wtv020sd-16p-mp3-modul-kullanimi/
      Cismi takip ettirmek için en az iki sensör kullanman gerekir. Bu sensörleri birbirleriyle küçük bir açı yapacak şekilde bitişik yerleştir. Sensörleri de servonun kanadına yapıştır. Yani servo hareket ettikçe sensörlerde dönecek.Yazılım kısmında örneğin iki sensör kullandıysan iki sensörün ölçümünü karşılaştır. Hangi sensörde cisim algılandıysa o tarafa servoyu belli bir adım hareket ettir. Hareket işleminde iki sensörde de cisim algılama olana kadar birer ikişer derece (hassasiyetini belirleme ) arttırarak devam ettir. Bu şekilde cismi takip ettirebilirsin.

      1. Şinasi

        Yeniden merhaba ,1 haftalık malzeme araştırmasından sonra benim bulduğum devre elemanları hem arduinoya başlangıç için hemde devreyi geliştirmek adına yapmak istediğim devre kısaca (son hali artık 😀 ) sizin devrenizden tek farklı olarak ben görüntüyü kamera yardımı ile de almak istiyorum bu yüzden kullanmak istediğim malzemeler ;
        Arduino Kamera Modülü OV7670 Arduino – ARM – PIC Uyumlu
        direnc.net/Arduino-Uno-Maxi-Baslangic-Seti,PR-23611.html
        direnc.net/SG90-9G-SERVO-MOTOR-1-ADET,PR-17719.html

        Bunları haricinde başka almam gereken bir malzeme bulunuyor mu acaba ?

        1. Sezgin GÜL

          Servo motor tekrar almana gerek yok kamerayı da ultrasonik sensörün üzerine veya yanına yerleştirebilirsin. Bu kamera modülünü rahatlıkla kullanabilirsin ama görüntü kalitesi çok düşüktür. başka malzemeye gerek yok.

  16. hüseyin

    mrb porjenizi çok iyi başarlar dilerim. Ping Ultrasonik Sensörü en uyugun fiata nerdebulabilirim .

    1. Sezgin GÜL

      Teşekkürler Hüseyin. Ping sensör genelinde pahalıdır ama yurt dışında biraz daha uygun fiyata bulabilirsin.