Cara membuat
Radar Arduino kompetibel dengan semua monitor
Teknologi.
Assalamu’alaikum.
Bagaimana keadaan
teman-teman semua muda-mudahan selalu dalam keadaan sehat dan selalu diberi
keselamatan oleh yang mahakuasa, bagi teman-teman yang kurang sehat semoga
cepat sembuh supaya bisa mengerjakan pekerjaan sehari-hari seperti sedia kala
amin.
Pada Artikel kali ini
kita akan membahas sebuah proyek sederhana dari sensor ultrasonik yaitu “RADAR”. Menurut wikipedia radar adalah
suatu sistem gelombang elektromagnetik yang berguna untuk mendeteksi,
mengukur jarak dan membuat map benda-benda seperti pesawat terbang, berbagai
kendaraan bermotor dan informasi cuaca (hujan).
Panjang gelombang yang
dipancarkan radar bervariasi mulai dari milimeter hingga meter. Gelombang
radio/sinyal yang dipancarkan dan dipantulkan dari suatu benda tertentu akan
ditangkap oleh radar. Dengan menganalisis sinyal yang dipantulkan tersebut,
pemantul sinyal dapat ditentukan lokasinya dan melalui analisis lebih lanjut
dari sinyal yang dipantulkan dapat juga ditentukan jenisnya.
Meskipun sinyal yang diterima relatif lemah/kecil,
tetapi radio sinyal tersebut dapat dideteksi dan diperkuat oleh
penerima radar.
Untuk proyek ini, kita
hanya perlu dua komponen bersama dengan papan Arduino, dan itu adalah sensor ultrasonik
dan motor servo. Rentang radar dapat disesuaikan hingga 4 meter dengan rotasi
180 derajat. untuk lebih jelas mari kita ikuti sampai tuntas dan pas.
Baca
Juga
Bagian
pertama alat dan bahan
1.
Arduino bisa semua jenis (Beli disini)
2.
motor servo (Beli disini)
3.
sensor ultrasonik (Beli disini)
4.
papan percoabaa bila perlu (Beli disini)
5.
Jumper secukupnya (Beli disini)
6.
Glue Gun (Beli disini)
*
Ini adalah tautan afiliasi. mohon dukung kami dengan cara belanja dengan tautan
yang tertera di atas, setiap kalai teman-teman belanja dengan tautan diatas itu
sangat berarti bagi kami dan kami sangat menghargai setiap dukungan yang
teman-teman berikan*
Bagian
kedua gambar rangkaian alat
Bagian
ketiga cara perakitan
1.
Rangkai setiap komponen seperti gambar
diatas.
2.
Untuk posisi ultrasonik berada tepat di
atas motor servo.
3.
Untuk dudukan sensor ultrasonik bisa
menggunakan gabus.
Bagian
keempat kode program Arduino
Sekarang kita perlu
membuat kode dan mengunggahnya ke Arduino yang akan memungkinkan interaksi
antara Arduino dan IDE. Sebelum masuk ke kode program kita harus mendownload
terlebih dahulu sebuah librarry untuk mendownload librarry bisa di sini.
#include
// Menentukan pin Tirg dan Echo dari
Sensor Ultrasonik
const int trigPin = 10;
const int echoPin = 11;
// Variabel untuk durasi dan jarak
long duration;
int distance;
Servo myServo; // Membuat objek servo
untuk mengendalikan motor servo
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
myServo.attach(12);
}
void loop() {
// memutar motor servo dari 15 hingga
165 derajat
for(int i=15;i<=165;i++){
myServo.write(i);
delay(30);
distance =
calculateDistance();//Memanggil fungsi untuk menghitung jarak yang diukur
oleh sensor Ultrasonik untuk setiap derajat
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
// Mengulangi baris sebelumnya dari
165 hingga 15 derajat
for(int i=165;i>15;i--){
myServo.write(i);
delay(30);
distance = calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
}
// Berfungsi untuk menghitung jarak
yang diukur oleh sensor Ultrasonic
int calculateDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin on HIGH state for
10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); //Membaca
echoPin, mengembalikan waktu tempuh gelombang suara dalam mikrodetik
distance= duration*0.034/2;
return distance;
}
|
Bagian
kelima kode program untuk processing IDE
Bagian 1 sampai 4 itu
sama dengan tutorial sebelumnya (Bisa baca disini) tetapi kaliini ada perubahan
kode program untuk processing IDE. Kode program ini berfungsi untuk supaya
tampilan radar bisa kompetibel dengan semua layar jadi kita tidak perlu lagi untuk
mengubah size kalau kita ingin pindah ke layar yang lebih besar atau lebih
kecil.
Dengan kode program ini
si dia ini bisa langsung menyesuaikan ukurannya dengan layar tampilan, sebelum
kita masuk pada kode programnya bagi teman-teman yang belum ada aplikasi
processing IDE bisa download di sini.
/* Arduino Radar Project
import processing.serial.*; // imports library for
serial communication
import java.awt.event.KeyEvent; // imports library
for reading the data from the serial port
import java.io.IOException;
Serial myPort; // defines Object Serial
// defubes variables
String angle="";
String distance="";
String data="";
String noObject;
float pixsDistance;
int iAngle, iDistance;
int index1=0;
int index2=0;
PFont orcFont;
void setup() {
size (1920, 1080); // ***CHANGE THIS TO YOUR SCREEN
RESOLUTION***
smooth();
myPort = new Serial(this,"COM4", 9600); //
starts the serial communication
myPort.bufferUntil('.'); // reads the data from the
serial port up to the character '.'. So actually it reads this: angle,distance.
orcFont = loadFont("OCRAExtended-30.vlw");
}
void draw() {
fill(98,245,31);
textFont(orcFont);
// simulating motion blur and slow fade of the
moving line
noStroke();
fill(0,4);
rect(0, 0, width, height-height*0.065);
fill(98,245,31); // green color
// calls the functions for drawing the radar
drawRadar();
drawLine();
drawObject();
drawText();
}
void serialEvent (Serial myPort) { // starts reading
data from the Serial Port
// reads the data from the Serial Port up to the
character '.' and puts it into the String variable "data".
data = myPort.readStringUntil('.');
data = data.substring(0,data.length()-1);
index1 = data.indexOf(","); // find the
character ',' and puts it into the variable "index1"
angle= data.substring(0, index1); // read the data
from position "0" to position of the variable index1 or thats the
value of the angle the Arduino Board sent into the Serial Port
distance= data.substring(index1+1, data.length());
// read the data from position "index1" to the end of the data pr
thats the value of the distance
// converts the String variables into Integer
iAngle = int(angle);
iDistance = int(distance);
}
void drawRadar() {
pushMatrix();
translate(width/2,height-height*0.074); // moves the
starting coordinats to new location
noFill();
strokeWeight(2);
stroke(98,245,31);
// draws the arc lines
arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI);
arc(0,0,(width-width*0.27),(width-width*0.27),PI,TWO_PI);
arc(0,0,(width-width*0.479),(width-width*0.479),PI,TWO_PI);
arc(0,0,(width-width*0.687),(width-width*0.687),PI,TWO_PI);
// draws the angle lines
line(-width/2,0,width/2,0);
line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));
line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));
line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90)));
line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120)));
line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150)));
line((-width/2)*cos(radians(30)),0,width/2,0);
popMatrix();
}
void drawObject() {
pushMatrix();
translate(width/2,height-height*0.074); // moves the
starting coordinats to new location
strokeWeight(9);
stroke(255,10,10); // red color
pixsDistance =
iDistance*((height-height*0.1666)*0.025); // covers the distance from the sensor
from cm to pixels
// limiting the range to 40 cms
if(iDistance<40 o:p="">40>
// draws the object according to the angle and the
distance
line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),(width-width*0.505)*cos(radians(iAngle)),-(width-width*0.505)*sin(radians(iAngle)));
}
popMatrix();
}
void drawLine() {
pushMatrix();
strokeWeight(9);
stroke(30,250,60);
translate(width/2,height-height*0.074); // moves the
starting coordinats to new location
line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle)));
// draws the line according to the angle
popMatrix();
}
void drawText() { // draws the texts on the screen
pushMatrix();
if(iDistance>40) {
noObject = "Out of Range";
}
else {
noObject = "In Range";
}
fill(0,0,0);
noStroke();
rect(0, height-height*0.0648, width, height);
fill(98,245,31);
textSize(25);
text("10cm",width-width*0.3854,height-height*0.0833);
text("20cm",width-width*0.281,height-height*0.0833);
text("30cm",width-width*0.177,height-height*0.0833);
text("40cm",width-width*0.0729,height-height*0.0833);
textSize(40);
text("Object: " + noObject,
width-width*0.875, height-height*0.0277);
text("Angle: " + iAngle +" °",
width-width*0.48, height-height*0.0277);
text("Distance: ", width-width*0.26, height-height*0.0277);
if(iDistance<40 o:p="">40>
text(" " + iDistance +" cm",
width-width*0.225, height-height*0.0277);
}
textSize(25);
fill(98,245,60);
translate((width-width*0.4994)+width/2*cos(radians(30)),(height-height*0.0907)-width/2*sin(radians(30)));
rotate(-radians(-60));
text("30°",0,0);
resetMatrix();
translate((width-width*0.503)+width/2*cos(radians(60)),(height-height*0.0888)-width/2*sin(radians(60)));
rotate(-radians(-30));
text("60°",0,0);
resetMatrix();
translate((width-width*0.507)+width/2*cos(radians(90)),(height-height*0.0833)-width/2*sin(radians(90)));
rotate(radians(0));
text("90°",0,0);
resetMatrix();
translate(width-width*0.513+width/2*cos(radians(120)),(height-height*0.07129)-width/2*sin(radians(120)));
rotate(radians(-30));
text("120°",0,0);
resetMatrix();
translate((width-width*0.5104)+width/2*cos(radians(150)),(height-height*0.0574)-width/2*sin(radians(150)));
rotate(radians(-60));
text("150°",0,0);
popMatrix();
}
Nah itulah cara membuat
radar mengguakan arduino yang bisa kometibel dengan semua layar. mungki sekian
dulu artikel untuk kali ini semoga bermanfaat untuk kita semua saya akhiri dengan
salam teknologi dan wassalam.
**Terimasih telah berkunjung semoga dapat menambah wawasan kita bersama, untuk dukungan teman-teman bisa berdonasi pada link berikut (Klik Dini) Sebanyak apapun donasi dari teman-teman itu sangat berarti bagi kami dan juga kalau ada dari teman-teman yang ingin mengajukan pertanyaan atau request tema seputar teknologi bisa langsung saja tulis pada kolom pesan di link donasi yang sudah ter sedia.**
EmoticonEmoticon