Arduino Arduino Projeleri Gömülü Sistemler Proje

Arduino İle Sonar Radar Sistemi Yapımı

Bugün bir çoğumuzun okul projelerinde kullandığı radar sistemini detaylı bir şekilde anlatıcaz arkadaşlar. let’s begin !

Radar sistemler, havada denizde ve karada ulaşım uydu ve siber araçların kullandığı kapsamlı bir tehlike tespit sistemidir. Bizler arduino ile bu sistemin bir prototipini basit bir şekilde oluşturacağız.

İhtiyaçlarımız şöyle:

1 adet HCSR 04 Mesafe Sensörü
1 adet Micro Servo Motor
Arduino ve kablo bağlantılarımız,

Bu kadar basit ancak bir not, uygulama olarak Arduino’ya ek olarak, tıpkı arduino’ya benzeyen bir IDE kullanıcaz. “Processing

Processing Nedir ?

Processing, dijital sanat ve görsel tasarım toplulukları tarafından programlamanın temellerini görsel bir yaklaşımla öğretmek için kullanılan veya elektronik bir eskiz defteri görevi de görebilen açık kaynaklı bir programlama dili ve tümleşik geliştirme ortamıdır. 

Gürkan Yarar: Processing Nedir

Yani burada processing, bizim projemizde radar görüntümüzü ekrana yansıtmak için kullanacağımz yazılımdır. Bunun için C# da kullanabilirdik, ancak şuan için işimizi basitçe göreceği ve c# konusu bir derya deniz olduğu için Processing ile yapmayı uygun gördük. Evet lafı çok uzatmadan bağlantılarımız geçelim

Bağlantı şemamız şöyle

Ultrasonic Ranging Using Arduino and Processing (Radar) - Arduino ...
Açıkçası, breadboard kullanmanıza gerek yok, Resmi internetten aldım basite kaçtık:)

Evet program kodlarımız ise şu şekilde olucak.

Arduino programının kodları:

#include <Servo.h>. 
const int trigPin = 2;
const int echoPin = 3;
long duration;
int distance;
Servo myServo;
double toplamYol;
void setup() 
 {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT); 
  Serial.begin(9600);
  myServo.attach(9); 
  }
  
void loop() {
  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, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW); 
 
  duration = pulseIn(echoPin, HIGH); 
  toplamYol= (double)duration*0.034;
  distance= toplamYol/2;
  return distance;
}

Processing programının kodları ise şöyle

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,"COM7", 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(); 
}

Processing programında önemli bir değişiklik yapıcaz.

myPort = new Serial(this,"COM7", 9600); // Com portunu seçin

27. satırdaki bu kodda, arduino’nuz hangi porta bağlıysa onu buraya yazıyoruz.

Ardından ilk olarak Arduino’ya kodlarımızı derleyip atıyoruz, ardından processing programını çalıştırıyoruz. Projemiz hazır. 40 cm’e kadar algılama yapabilmekte.

Bu projeyi yapanlar, geliştirmek için ridar sitemlere göz atabilirler.

Kolay gelsin

Similar Posts

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir