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.
Malzemeler
- Arduino Uno
- Ping Ultrasonik Sensör
- Servo Motor
Ping Sensor Elektronik Devre Şeması
Ping Sensör: 5v – 5v, Gnd – Gnd, Sinyal – Dijital 8. pin
Servo Motor: Kırmızı – 5v, Kahverengi- Gnd, Dijital 9. pin
#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>300)
{
cm = 300;
}
}
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
Güncelleme: 23.12.2016
Ultrasonic.h kütüphanesini buradan indirebilirsiniz > Ultrasonic.rar
HC-SR04 Ultrasonik Sensörü 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>300)
{
cm = 300;
}
}
Matlab Yazılımı
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.
NOT: Projede ping sensör kullanılmıştır. Bu sensör en iyisidir hatasız ölçüm yapar ve hızlıdır. HC-SR04 daha yavaş ve hatalı ölçüm yapma olasılığı fazladır eğer bunu kullanırsanız kodu da değiştirmeniz gerekir.