Arduino
OKUDUĞUNUZ KONU
Arduino Ultrasonik Radar Projesi
115

Arduino Ultrasonik Radar Projesi

Yazar : Murat Duran17 Ekim 2015

Bu projemizde ultrasonik radar yapacağız, bildiğiniz üzere askeri radarlar radyo frekanslarının yansıtılmasıyla ölçülmektedir.Çok geniş bir alanda tarama yapan bu radarlar hava araçlarının tespitinde kullanılır.Bizde bu projede buna benzer ama daha küçük ölçeklisini yapacağız.Bizim radarımız radyo dalgalarıyla değil ses dalgalarıyla ölçüm yapmaktadır.Bizim yaptığımız radar 150º lik bir alanda tarama yapabilmektedir.

Projemiz arduino ve prosesing tabanlı çalışmaktadır.Arduino bölümü c++ ile yazıldı.Prosesing bölümü ise java ile hazırlandı.Kodları açık kaynaklı olarak paylaşmaktayız bu sayede geliştirme yapabilirsiniz.

Proje Malzemelerimiz

Projenin Malzemelerini Satın Al

Bu proje için gerekli malzemeleri Proje Hocam garantisi ile tek sepette satın alabilirsiniz.Malzemeler proje ile %100 uyumludur.İstenilmesi halinde arduino içerisine kodlar yüklenerek gönderilir. “Satın Almak İçin Yukarıda Butona Basınız”

İlk önce projemizin devresini kurun aşağıdaki şekilde hazırlayın düzgün görünmesi açısından breadboard üzerinde hazırladık siz isterseniz kullanamayabilirsiniz.

arduinoradarboardprojehocam

Projenin devresini kurduktan sonra usb ile bilgisayarınıza arduino kartınızı bağlayın , daha sonra bağlandı ibaresini görünce prosesing programını çalıştırın , program com portu hatası verirse yanlış portu yazmışsınız demektir.Bu yüzden kendi portunuzu girmeniz gerekiyor aşağıdaki prosesing kodunda bunu açıkladık.

Projenin arduino kodları aşağıdadır bu kodları kopyalayıp arduino kartınıza yüklemeniz gerekiyor.

// Proje Hocam - Radar Projesi
// Murat DURAN - V2
#include <Servo.h>. 

// Ultrasonik Sinyal pinleri
const int trigPin = 10;
const int echoPin = 11;

long duration;
int distance;

Servo myServo; 

void setup() {
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  Serial.begin(9600);
  myServo.attach(12); // Servo motor sinyal pini
}
void loop() {
  // 15 derece ile 165 derece arasında dön
  for(int i=15;i<=165;i++){ myServo.write(i); delay(30); distance = calculateDistance(); Serial.print(i); Serial.print(","); Serial.print(distance); Serial.print("."); } for(int i=165;i>15;i--){  
  myServo.write(i);
  delay(30);
  distance = calculateDistance();
  Serial.print(i);
  Serial.print(",");
  Serial.print(distance);
  Serial.print(".");
  }
}

int calculateDistance(){ 
  
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);

  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH); 
  distance= duration*0.034/2;
  return distance;
} 

Projenin prosesing kodları , burada 23. satırda com portunu kendinize göre ayarlayın,Arduino kartınız hangi porttan haberleşiyorsa onu yazın.

radarprojehocam

// Proje Hocam - Radar Projesi
// Murat DURAN - V2
import processing.serial.*; // kütüphane entegresi
import java.awt.event.KeyEvent; 
import java.io.IOException;

Serial myPort; 

String angle="";
String distance="";
String data="";
String noObject;
float pixsDistance;
int iAngle, iDistance;
int index1=0;
int index2=0;
PFont orcFont;

void setup() {
  
 size (1366, 700);
 smooth();
 myPort = new Serial(this,"COM3", 9600); // Com portunu seçin
 myPort.bufferUntil('.'); 

}

void draw() {
  
  fill(98,245,31);

  noStroke();
  fill(0,4); 
  rect(0, 0, width, 1010); 
  
  fill(98,245,31); // yeşil renk

  drawRadar(); 
  drawLine();
  drawObject();
  drawText();
}

void serialEvent (Serial myPort) { 

  data = myPort.readStringUntil('.');
  data = data.substring(0,data.length()-1);
  
  index1 = data.indexOf(","); 
  angle= data.substring(0, index1); 
  distance= data.substring(index1+1, data.length()); 
  

  iAngle = int(angle);
  iDistance = int(distance);
}

void drawRadar() {
  pushMatrix();
  translate(683,700); 
  noFill();
  strokeWeight(2);
  stroke(98,245,31);
  // draws the arc lines
  arc(0,0,1300,1300,PI,TWO_PI);
  arc(0,0,1000,1000,PI,TWO_PI);
  arc(0,0,700,700,PI,TWO_PI);
  arc(0,0,400,400,PI,TWO_PI);
  // draws the angle lines
  line(-700,0,700,0);
  line(0,0,-700*cos(radians(30)),-700*sin(radians(30)));
  line(0,0,-700*cos(radians(60)),-700*sin(radians(60)));
  line(0,0,-700*cos(radians(90)),-700*sin(radians(90)));
  line(0,0,-700*cos(radians(120)),-700*sin(radians(120)));
  line(0,0,-700*cos(radians(150)),-700*sin(radians(150)));
  line(-700*cos(radians(30)),0,700,0);
  popMatrix();
}

void drawObject() {
  pushMatrix();
  translate(683,700); 
  strokeWeight(9);
  stroke(255,10,10); // kırmızı renk
  pixsDistance = iDistance*22.5; 
  // 40 cm ye kadar ölçer
  if(iDistance<40){ line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),700*cos(radians(iAngle)),-700*sin(radians(iAngle))); } popMatrix(); } void drawLine() { pushMatrix(); strokeWeight(9); stroke(30,250,60); translate(683,700); line(0,0,700*cos(radians(iAngle)),-700*sin(radians(iAngle))); popMatrix(); } void drawText() { pushMatrix(); if(iDistance>40) {
  noObject = "Out of Range";
  }
  else {
  noObject = "In Range";
  }
  fill(0,0,0);
  noStroke();
  rect(0, 1010, width, 1080);
  fill(98,245,31);
  textSize(25);
  text("10cm",800,690);
  text("20cm",950,690);
  text("30cm",1100,690);
  text("40cm",1250,690);
  textSize(40);
  text("Object: " + noObject, 240, 1050);
  text("Angle: " + iAngle +" °", 1050, 1050);
  text("Distance: ", 1380, 1050);
  if(iDistance<40) {
  text("        " + iDistance +" cm", 1400, 1050);
  }
  textSize(25);
  fill(98,245,60);
  translate(390+960*cos(radians(30)),780-960*sin(radians(30)));
  rotate(-radians(-60));
  text("30°",0,0);
  resetMatrix();
  translate(490+960*cos(radians(60)),920-960*sin(radians(60)));
  rotate(-radians(-30));
  text("60°",0,0);
  resetMatrix();
  translate(630+960*cos(radians(90)),990-960*sin(radians(90)));
  rotate(radians(0));
  text("90°",0,0);
  resetMatrix();
  translate(760+960*cos(radians(120)),1000-960*sin(radians(120)));
  rotate(radians(-38));
  text("120°",0,0);
  resetMatrix();
  translate(840+900*cos(radians(150)),920-960*sin(radians(150)));
  rotate(radians(-60));
  text("150°",0,0);
  popMatrix(); 
} 

Proje Dosyasını İndir

SİZCE NASIL OLMUŞ?
Beğendim
73%
İlginç
6%
Eh İşte
5%
Anlamadım
6%
Kötü
2%
Berbat
8%
YAZAR HAKKINDA
Murat Duran
Murat Duran
Açık kaynak donanım ve yazılım geliştiricisiyim , mekanik ve robotik sistemler üzerinde çalışmalar yapmaktayım.Ayrıca bir start-up firması olan Proje Hocam 'ın kurucuyum.
115 YORUMLAR
1 2
  • 25 Ekim 2015 at 21:20

    Merhaba Murat BEy
    Projeniz arduino radar çok başarılı teşekkür ederim iki konuda sorum olacaktı
    1- 40 cm e kadar ölçüm yapılıyor daha uzak mesafe mesela (100 metre 200 metre) için ne yapmamız gerekiyor
    2- bu radarı wifi veya blutood ile usb bağlantısı olmadan çalışanı varmı böyle bir proje yayınlamayı düşünüyormusunuz
    teşekkür ederim

    • Murat Duran
      25 Ekim 2015 at 22:23

      100 – 200 metre mesafeli sensör varmı bilgim yok.Bizim kullandığımız sensörler maksimum 3-5 metre mesafeli.Ultrasonik sensör de 2-3 metreye kadar ölçüm yapabiliyor ama net sonuçları genelde 40 cm den düşükken veriyor o yüzden 40 cm olarak ayarlandı.Wifi veya Bluetooth ile başka biryerden veri alınıp bilgisayara yazdırılabilir ilerleyen günlerde bununla ilgili bir uygulama yapıp paylaşırız

      • 13 Kasım 2015 at 22:53

        Wifi veya Bluetooth uygulamasını sabırsızlıkla bekliyoruz
        teşekkürler

      • godzi
        12 Mart 2016 at 00:46

        hocam kodu yukledım arduıno ya dıgerıde tamam. çalıştı ama cubuk hızı çok yavaş ve izi siyah. bunun sebebi arduıno da sensor baglı degıl bu olabilirmi ?

  • ahmed cezeri
    2 Kasım 2015 at 20:02

    çok güzel bir proje elinize sağlık, ben bu projeyi proje ödevinde yapacağım ama biraz farklılık katmalıyım mevcut projeye ne gibi bi değişiklik uygulayabilirim
    teşekkür ederim

    • Murat Duran
      2 Kasım 2015 at 21:53

      Alarm ekleyebilirsiniz, menzilde bir hedef gördüğünde buzzer çalar.Sensörden gelen verileri kablosuz olarak uzaktaki bilgisayara akrarabilirsiniz.

  • ahmed cezeri
    2 Kasım 2015 at 20:33

    ben birşey daha sormak istiyorum elimdeki arduino mega değil onun bi küçüğü acaba olurmu..

  • serhad kaya
    2 Kasım 2015 at 23:27

    hocam ekrandaki goruntuyu alabilmek olusturabilmek icin hangi programi kullanmak lazim
    saygilarimla

  • 18 Kasım 2015 at 13:31

    Çok güzel ve faydalı bir paylaşım olmuş. Teşekkürler

  • Yorumcu
    20 Kasım 2015 at 14:08

    İyi güzelde bu radar değil sonar.

  • pusat
    28 Kasım 2015 at 21:00

    Bu uygulamada port okuma kullandınız anladığım kadarıyla,peki port okuyarak gelen bilgilere göre istediğimiz görsel üzerinde (prosesing kodlarıyla) değişiklik yapabilir miyiz? Hazır nesneler yerine prosesingde bizim programladığımız nesneleri kullanarak ?Bir uygulamamam var buna benzer 3Dmax programı kullanmam gerekiyor ama bu program daha kolaymış.
    Sitenizi keşfettiğim için mutluyum.Yazarınız olmak isterim ama biraz yoğunum bu aralar,kontrol kaleminde yazıyorum .

  • Şinasi KÖSTEKLİ
    25 Aralık 2015 at 23:49

    Murat Bey ben devreyi yazdığınız kodlar aracılığıyla yaptım öncelikle teşekkür ederim fakat ben diğer arkadaşlar gibi devreyi biraz daha geliştirmek istiyorum bu yüzden radar bir cismi görünce bu şekilde tüm ekranı kaplama yerine yuvarlak halka gibi kalsın ve radar döndükçe o nokta cisim orada ise o noktada orada kalsın daha sonra if komutu ile yapmaya çalıştım ama yapamadım yazılım konusunda iyi değilim maalesef ben arduino lazer modülü aldım farklı bir servo ile şunu yapmak istiyorum benim radarım bir cismi alğıladıgında diger servom o bölgeye dönsün ve lazerim ışık yaksın ve hedef görüldüğünde buzzerdan ses almak istiyorum bunların kodlaması nasıl yapılacak ve bir sorum daha var ben bunu kamera görüntüsü ile de pc ye aktarmak istiyorum bunları nasıl sağlarım kodları benimle paylaşabilirseniz çok memnun kalırım teşekkürler iyi çalışmalar

  • rejva
    5 Ocak 2016 at 22:31

    merhabalar benim sorularım olacakta acaba uzaklıgı nasıl değiştirebilirim programda bide radar nesne yakaladgında nokta koymasını istiyorum ordan engel gidene kadar o nokta kalsın nasıl yapılabılır yardımcı olurmusunuz

  • burak aslan
    9 Şubat 2016 at 11:38

    murat hocam bnm prosesing de basta yeşil sonra kırmızı ençubuk işaretler olarak çıkıo yardımcı olur musunuz lütfen

  • ahmet aktaş
    4 Mart 2016 at 22:10

    Hocam iyi günler Bluetooth üzerinden veriyi pc’ye nasıl aktarabiliriz.

  • EEMK
    13 Mart 2016 at 03:36

    Emeğinize sağlık çok güzel bir uygulama olmuş.
    Bu devreyi CCS C de PIC18F4550 kullanarak yapmaya çalışıyorum ama processing programında bir türlü haberleşme sağlayamadım. Aygıt yöneticisinde mikrodenetleyici sorunsuz çalışıyor ancak yapamadım bir türlü. CCS C ile CDC haberleşme yaptım. Ardiuno HID olarak mı tanımlı? İlk denemem diyebiliriz USB portunu ama o da hüsran oldu.

  • Mag
    25 Mart 2016 at 02:59

    Merhaba murat hocam bu projenin kütüphanelerini nereden bulabilirim.

  • Mustafa Demirci
    1 Nisan 2016 at 18:56

    murat hocam jumper kabloların türü nedir =?

  • yılmaz
    2 Nisan 2016 at 23:28

    hocam bu ultrasonik radarda usb kablosunu nasıl kablosuz yapalirim

  • Emirhan
    7 Nisan 2016 at 16:50

    hocam micro servoyu arduino nun hangi pinine bağlıyoruz bide nasıl kablosuz yapabiliriz *?

  • mustafa
    7 Nisan 2016 at 19:37

    HCSR-04 Ultrasonik Sensörü 400 cm e kadar ölçüm yaptığı yazıyor datasheetde ama videoda 40 cm e kadar demişsiniz ölçümü 400 cm e çıkaramazmıyız

  • tugay karaca
    14 Nisan 2016 at 23:57

    hocam illede arduino mega şartmı normal bir arduino uno r3 lede yapılamazmı acaba en kısa zamanda sorumu cevaplarsanız çok memnun olurum benim için çok önemli bir soru cevabınıda acele almam lazım

    • Murat Duran
      15 Nisan 2016 at 00:12

      Hayır mega şart değil uno ile yapabilirsiniz hatta nano ile bile yapabilirsiniz

      • tugay karaca
        15 Nisan 2016 at 00:45

        C:\Users\tugay\Desktop\sketch_apr15a\sketch_apr15a.ino:3:19: warning: extra tokens at end of #include directive [enabled by default]

        #include .

        ^

        Çalışmanız programın 5.172 bayt (16 %) saklama alanını kullandı. Maksimum 32.256 bayt.
        Global değişkenler belleğin 237 byte kadarını (11%) kullanıyor. Yerel değişkenler için 1.811 byte yer kalıyor. En fazla 2.048 byte kullanılabilir.

        lakin bir kaç denemem rağmen bana bu hatayı verdi ne yapmalıyım ve alt kısımda proje dosyasını indir var o dosyayıda indirdim lakin ne yapılıcaını bilmiyorum o dosyalarıda ne yapmalıyım

        • Murat Duran
          15 Nisan 2016 at 00:50

          Programda #include . ilk satırlardaki bu kodda nokta var onu silin yanlışlıkla eklenmiş bende hata vermiyor ama ondan olma ihtimali yüksek

  • tugay karaca
    15 Nisan 2016 at 21:24

    evet hocam çok haklısınız noktayı sildikten sonra hata vermedi

  • tugay karaca
    15 Nisan 2016 at 21:26

    lakin bendeki programda mı sorun var yoksa devre şemasındamı anlamış deilim çünki ben herşeyiyaptım hiç bir hata yoktum com portuna kadar ayarını yatpım tek tek seçtim ama yinede ne servo motor döndü nede sensörde bişeyler oldu yani java uygulamasında java ekranda taradı yanlız önüne bişey ler koyduum halde görmedi ne yapmalıyım

  • tugay karaca
    15 Nisan 2016 at 23:10

    hocam kısa zamanda geri dönerseniz sevinirim çünkü benim için çok önemli bir şey bu bunun üzerine ödev tasarımı yapıyorum bilgisayar öğrencisiyim bende

  • tugay karaca
    16 Nisan 2016 at 12:48

    bağlantılar tamamiyen doğru arduno programı htalıdır diye baştan siteden programı bile inddirdim lakin çalışmıyor tektek yaptım bağlantılarını

    indirmek için proje dosyaları bırakmıssınız aşada ben onları indirmedim ne yapıcamı bilemedim lütfen yardım edin

  • tugay karaca
    18 Nisan 2016 at 17:23

    hocam en altta bırakmış olduunuz prje dosyaları ne işe yarıyorne yapıcazonlarla

  • tugay karaca
    21 Nisan 2016 at 08:46

    hocam lütfen ilgilenirmisiniz

  • Emirhan
    22 Nisan 2016 at 15:40

    Hocam pinlerin bağlantılarını yazabilirmisiniz Mobile kullandığım için göremiyorum

    • Orhan
      22 Nisan 2016 at 16:17

      Hocam bağlantı şemalarını yazabilirmisiniz birkaç arkadaş gibi malesef bende mobilden yazabiliyorum.

  • Orhan
    25 Nisan 2016 at 16:32

    Hocam nano veya pro miniye olurmu

  • ALİ KEMAL AYDIN
    28 Nisan 2016 at 10:12

    projeyi processing’den çalıştırırken size() cannot be used hatası veriyor. devreyi doğru bağlayıp, arduino’ya yükledikten sonra processingde portu doğru olarak değiştirdim ve çalıştırdım fakat bu hatayı alıyorum.

  • murat
    28 Nisan 2016 at 17:19

    menzilde cisim olunca uyarı vermek için ne yapmalıyız?

  • fatih
    4 Mayıs 2016 at 17:59

    bu radarın menzili ne kadar?

  • Bülent A.
    19 Mayıs 2016 at 16:47

    Hocam towerpro nun 3 pinin de arduino nun hangi pinlerine bağlandığını yazarmısınız

  • fatih çakır
    19 Haziran 2016 at 17:43

    su altında da calışırmı

  • burakonrn22
    3 Ekim 2016 at 20:55

    Hocam arduino mega r3 yerine arduino uno kulansak çalışır mı??

  • cosinus
    10 Ekim 2016 at 01:23

    hocam bu projeyi satın alma imkanı sağlamışsınız tamamen bağlantıları yapılmış halde mi gönderiyorsunuz yoksa parçalarını mı gönderiyorsunuz? bir de ben mekatronik 2. sınıf öğrencisiyim elektronik ve yazılım düzeyim en alt seviyede bu projeyi yapabilir miyim? veya siz gönderseniz de olur. bir de processing programı ile çalıştırmam kolay olur mu ?

    • Murat Duran
      10 Ekim 2016 at 16:05

      Merhaba projeyi satın aldığınız size kurulu halde gönderiliyoruz.Size gönderdiğimiz CD deki prosesing programını çalıştırıp radarı kullanmaya başlayabilirsiniz.

      • cosinus
        11 Ekim 2016 at 01:35

        yani devre kurulmuş arduino programlanmış halde geliyor öyle mi? hocam şahanesiniz benim yapmam gereken tek şey sanırım programı kurup radarı çalıştırmak kalıyor öyle mi? bir problem olursa yardımcı olursanız sevinirim yaklaşık olarak 1 ay içerisinde sipariş edeceğim. umarım ki bir problem olmaz ve bundan sonra tüm projelerde çevremdekileri size yönlendireceğim.

        • Murat Duran
          11 Ekim 2016 at 01:42

          evet devre kurulmuş halde gönderiyoruz.bir problemle karşılaşırsanız müşteri hizmetleri numaramızdan ulaşabilirsiniz.

  • muhammet
    13 Ekim 2016 at 21:24

    hocam bu projeyi wifi üzerinden verileri atmasını istiyorum acaba yardımcı olabilirmisiniz

  • SAMET
    25 Ekim 2016 at 18:12

    PROJE İÇİN TEŞŞEKKURLER ELİME ULAŞTI GAYET BAŞARILI :))

YORUM YAP