Arduino Ultrasonik Radar Projesi
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
İ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.
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.
// 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(); }
arduino kodunu girip yükle kısmına basıyorum ama hata veriyor acil yardım edebilir misiniz
abi yaptm ama dönmüyor sensör
Hocam distance hesaplarken neden duration*0.034/2 yaptık bazı siteler duration/2/29. 1 yapıyor arada ki fark ne ?
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
Bu konunun aynısı benim için de lazım, bi gelişme elde edebildin mi ?
hocam arduino çalışıyor lakin bilgisayar üzerinden radar sistemini çalıştıramadım. ne yapmam gerekiyor yapdımcı olurmusunuz.
kablo bağlantılarını bence yanlış yapmışsın yada pine yanlış takmışsın
0 180 derece döndürmek için ne yapacağız
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…
COM PORTUNU SECERKEN SIKINTI YASIYORUM YARDIM EDEBILECEK VAR MI ACIL OLARAK MIKRODENETLEYICI DERSINDEN PROJEM AMA MALESEF CALISMADI ACIL OLARAK YARDIM EDIN LUTFEN …
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;
Emeğiniz ve ilginiz için teşekkürler. Çok güzel bir çalışması olmuş.
gösteren uygulamanın adı ve linkini atarmısınız
ben buna buzzer ekleyeceğim hangi pini kullanacağım bir de Ardunonun hangi kısmına kod eklemem lazım
import java.io İOException; hata veriyor niye yardımçı olurmusunuz
Radara bir nesne girdiğinde bip sesi çıkarması için hangi kodları yazmam gerekiyor acaba biraz acemiyim yardımcı olur musunuz?
servo dönmüyor sebebi nedir acaba acil yardım edebilirmisiniz
pek biz bide buna lcd ekran eklemek istersek ne yapmamız gerekiyor
Similasyonda 180 derece tarıyor. Ama bunun 360 derece yapma durumumuz var mı similasyon hakkında bi bilgim yok. yardım eder misiniz?
void drawLine kodu eksik o yüzden yeşil tarama yapmıyor ayrıca vid drawText i de göremedim ??
hocam processin dosyası uzantısı .pde , bunu nasıl çalıştıracağız arduino yazılımı içerisinde biryermi var bunu çalıştırmak için
hocam kodu yüklerken distance calculate 25.satırda hata veriyor yardımcı olursanız sevinirim
proje dosyasını indirdim fakat hala birşey olmadı