Cara membuat
Radar Arduino
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 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 membuat radar dengan Processing
Bagi teman-teman yang
belum ada aplikasi prosesing bisa download disini.
Sekarang kita akan
menerima nilai untuk sudut dan jarak yang diukur oleh sensor dari Arduino menggunakan
fungsi SerialEvent() yang membaca data dari Port Serial dan kita akan
meletakkan nilai sudut dan jarak ke dalam variabel iAngle dan iDistance.
Variabel ini akan digunakan untuk menggambar radar, garis, objek yang
terdeteksi, dan beberapa teks.
Untuk menggambar radar saya membuat fungsi drawRadar
() yang terdiri dari fungsi arc () dan line ().
void drawObject() {
pushMatrix();
translate(960,1000); // memindahkan
koordinat awal ke lokasi baru
strokeWeight(9);
stroke(255,10,10); // warna merah
pixsDistance = iDistance*22.5; //
mencakup jarak dari sensor dari cm ke piksel
// membatasi jarak hingga 40 cm
if(iDistance<40 o:p="">40>
// menggambar objek sesuai dengan
sudut dan jarak
line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),950*cos(radians(iAngle)),-950*sin(radians(iAngle)));
}
popMatrix();
}
Untuk teks di layar
kita membuat fungsi drawText () yang menggambar teks di lokasi tertentu.
Semua fungsi ini
disebut dalam fungsi draw () yang berulang-ulang dan menggambar layar. Juga di
sini kita menggunakan fungsi fill () ini dengan 2 parameter untuk mensimulasikan
gerakan kabur dan memudar lambat pada garis bergerak.
void draw() {
fill(98,245,31);
textFont(orcFont);
// mensimulasikan gerakan kabur dan
memudar lambat dari garis yang bergerak
noStroke();
fill(0,4);
rect(0, 0, width, 1010);
fill(98,245,31); // warna hijau
// memanggil fungsi untuk menggambar
radar
drawRadar();
drawLine();
drawObject();
drawText();
}
|
Setelah semua kode
diatas selesai di copy maka radar akan terbentuk seperti pada gambar di bawah
ini.
Kode lengkap radar
Arduino :
import processing.serial.*; //
mengimpor perpustakaan untuk komunikasi serial
import java.awt.event.KeyEvent; //
mengimpor perpustakaan untuk membaca data dari port serial
import java.io.IOException;
Serial myPort; // mendefinisikan
Object Serial
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);
smooth();
myPort = new Serial(this,"COM6",
9600); // memulai komunikasi serial
myPort.bufferUntil('.'); // membaca
data dari port serial hingga karakter '.'.sudut, jarak.
orcFont =
loadFont("OCRAExtended-30.vlw");
}
void draw() {
fill(98,245,31);
textFont(orcFont);
// mensimulasikan gerakan kabur dan
memudar lambat dari garis yang bergerak
noStroke();
fill(0,4);
rect(0, 0, width, 1010);
fill(98,245,31); // warna hijau
// memanggil fungsi untuk menggambar
radar
drawRadar();
drawLine();
drawObject();
drawText();
}
void serialEvent (Serial myPort) { //
mulai membaca data dari Port Serial
// membaca data dari Port Serial
hingga karakter '.' dan memasukkannya ke dalam variabel String
"data".
data = myPort.readStringUntil('.');
data =
data.substring(0,data.length()-1);
index1 = data.indexOf(",");
// temukan karakter ',' dan masukkan ke dalam variabel "index1"
angle= data.substring(0, index1); //
baca data dari posisi "0" ke posisi variabel index1 distance=
data.substring(index1+1, data.length()); // baca data dari posisi
"index1" hingga akhir data, itulah nilai jaraknya
// mengubah variabel String menjadi
Integer
iAngle = int(angle);
iDistance = int(distance);
}
void drawRadar() {
pushMatrix();
translate(960,1000); // memindahkan
koordinat awal ke lokasi baru
noFill();
strokeWeight(2);
stroke(98,245,31);
// menggambar garis lengkung
arc(0,0,1800,1800,PI,TWO_PI);
arc(0,0,1400,1400,PI,TWO_PI);
arc(0,0,1000,1000,PI,TWO_PI);
arc(0,0,600,600,PI,TWO_PI);
// menggambar garis sudut
line(-960,0,960,0);
line(0,0,-960*cos(radians(30)),-960*sin(radians(30)));
line(0,0,-960*cos(radians(60)),-960*sin(radians(60)));
line(0,0,-960*cos(radians(90)),-960*sin(radians(90)));
line(0,0,-960*cos(radians(120)),-960*sin(radians(120)));
line(0,0,-960*cos(radians(150)),-960*sin(radians(150)));
line(-960*cos(radians(30)),0,960,0);
popMatrix();
}
void drawObject() {
pushMatrix();
translate(960,1000); // memindahkan
koordinat awal ke lokasi baru
strokeWeight(9);
stroke(255,10,10); // warna merah
pixsDistance = iDistance*22.5; // mengubah
jarak dari sensor cm ke piksel
// membatasi jarak hingga 40 cm
if(iDistance<40 o:p="">40>
line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),950*cos(radians(iAngle)),-950*sin(radians(iAngle)));
}
popMatrix();
}
void drawLine() {
pushMatrix();
strokeWeight(9);
stroke(30,250,60);
translate(960,1000); // memindahkan
koordinat awal ke lokasi baru
line(0,0,950*cos(radians(iAngle)),-950*sin(radians(iAngle)));
// menggambar garis sesuai dengan sudutnya
popMatrix();
}
void drawText() { // menggambar teks
di layar
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",1180,990);
text("20cm",1380,990);
text("30cm",1580,990);
text("40cm",1780,990);
textSize(40);
text("Object: " + noObject,
240, 1050);
text("Angle: " + iAngle
+" °", 1050, 1050);
text("Distance: ", 1380,
1050);
if(iDistance<40 o:p="">40>
text(" " + iDistance +"
cm", 1400, 1050);
}
textSize(25);
fill(98,245,60);
translate(961+960*cos(radians(30)),982-960*sin(radians(30)));
rotate(-radians(-60));
text("30°",0,0);
resetMatrix();
translate(954+960*cos(radians(60)),984-960*sin(radians(60)));
rotate(-radians(-30));
text("60°",0,0);
resetMatrix();
translate(945+960*cos(radians(90)),990-960*sin(radians(90)));
rotate(radians(0));
text("90°",0,0);
resetMatrix();
translate(935+960*cos(radians(120)),1003-960*sin(radians(120)));
rotate(radians(-30));
text("120°",0,0);
resetMatrix();
translate(940+960*cos(radians(150)),1018-960*sin(radians(150)));
rotate(radians(-60));
text("150°",0,0);
popMatrix();
}
Nah itulah cara membuat
radar dengan menggunakan sensor ultrasonik. ingat disini kita menggunakan 2
aplikasi yaitu aplikasi arduino IDE dan aplikasi Processing IDE, pasti
ada di antara kita yang baru mengenal aplikasi Processing IDE ini termasuk saya
sendiri juga baru mengenali aplikasi ini ketika membuat proyek ini hehehehehe.
Mungkin artikel
berikutnya kita akan membahas tentang apa kegunaan alikasi Processing IDE ini dan
apa hubungan nya dengan arduino IDE mungkin sekian dulu untuk artikel kali ini,
seperti biasa saya akhri 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