Arduino
OKUDUĞUNUZ KONU
Arduino Ultrasonik Radar Projesi
135

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
68%
İlginç
9%
Eh İşte
5%
Anlamadım
7%
Kötü
3%
Berbat
9%
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.
135 YORUMLAR
1 2 3
  • sdn
    6 Mart 2018 at 18:46

    arduino kodunu girip yükle kısmına basıyorum ama hata veriyor acil yardım edebilir misiniz

  • sdn
    9 Mart 2018 at 22:08

    abi yaptm ama dönmüyor sensör

  • Mert
    16 Mart 2018 at 22:24

    Hocam distance hesaplarken neden duration*0.034/2 yaptık bazı siteler duration/2/29. 1 yapıyor arada ki fark ne ?

  • Yasemin UZUN
    30 Mart 2018 at 00:49

    Arkadaslar Merhaba
    Ben bu projeyi yapacağım ama benden veri aktarım işlemini Wi-fi Üzerinden de yapmam istendi.
    Bu konuda pek bilgiye sahip değilim, bilgisi olan arkadaslar yardım edebilrmi acaba?
    Şimdiden çok teşekkürler

  • MEHMET ÖZLÜ
    3 Nisan 2018 at 12:49

    hocam arduino çalışıyor lakin bilgisayar üzerinden radar sistemini çalıştıramadım. ne yapmam gerekiyor yapdımcı olurmusunuz.

  • 24 Nisan 2018 at 20:37

    kablo bağlantılarını bence yanlış yapmışsın yada pine yanlış takmışsın

  • GHOSTALPHA1
    26 Nisan 2018 at 13:19

    0 180 derece döndürmek için ne yapacağız

  • By_ Researcher
    2 Mayıs 2018 at 01:08

    Emeğinize sağlık. Sensör mesafesini arttırmak için biraz araştırma yaptım 50-80m gibirakamlara çıkmam lazım. Bunun için sensör araştırması yaptım ancak ya mesafe ölçer yada kızılötesi sensörü bulabildim. Du devrede cisim algılanması için 50-80m aralıklarında nasıl bi sensör kullabilirim bilgi sahibi olan varsa bilgi verebilirse çok memnun olurum…

  • MAHMUT K.
    15 Mayıs 2018 at 17:06

    COM PORTUNU SECERKEN SIKINTI YASIYORUM YARDIM EDEBILECEK VAR MI ACIL OLARAK MIKRODENETLEYICI DERSINDEN PROJEM AMA MALESEF CALISMADI ACIL OLARAK YARDIM EDIN LUTFEN …

  • fama
    20 Mayıs 2018 at 11:27

    elinize sağlık çok güzel proje olmuş. projeyi denedim ancak aşağıdaki kütüphane hatasını veriyor nasıl halledebilirim. acil yardım istiyorum. şimdiden teşekkürler
    import processing.serial.*; // kütüphane entegresi
    import java.awt.event.KeyEvent;
    import java.io.IOException;

  • altan aka
    28 Mayıs 2018 at 13:22

    Emeğiniz ve ilginiz için teşekkürler. Çok güzel bir çalışması olmuş.

  • alihan şimşek
    18 Haziran 2018 at 22:51

    gösteren uygulamanın adı ve linkini atarmısınız

  • özgür çiçek
    16 Ağustos 2018 at 21:33

    ben buna buzzer ekleyeceğim hangi pini kullanacağım bir de Ardunonun hangi kısmına kod eklemem lazım

  • orhan nalbant
    4 Ekim 2018 at 22:51

    import java.io İOException; hata veriyor niye yardımçı olurmusunuz

  • mahmut
    17 Ekim 2018 at 09:36

    Radara bir nesne girdiğinde bip sesi çıkarması için hangi kodları yazmam gerekiyor acaba biraz acemiyim yardımcı olur musunuz?

YORUM YAP