Membuat Radar Pendeteksi Objek dengan Visual 2D Menggunakan Arduino dan Processing

img_20161123_225315

Assalamualaikum.
Salam Sejahtera Untuk Kita Semua Sobat …

Sampean semua pada tahu kan apa itu Radar ? Yups Radar yakni semacam alat pendeteksi objek. Biasanya sering terdapat pada kendaraan-kendaraan perang semacam jet tempur, tank, kapal selam, dan lain sebagainya. Nah pada tutorial kali ini, kita akan mencoba membuat sebuah radar sederhana dengan bantuan Arduino sebagai pengcontrol hardwarenya, dan Processing sebagai antarmuka atau interface-nya.

Nah setelah kita kemarin membuat pengontrol 3 step kecepatan motor DC menggunakan Arduino, sekarang saatnya kiat mencoba mengintegrasikan Arduino dengan software interface atau antarmuka yakni Processing.

Yups, Processing adalah sebuah software open source yang memungkinkan kita untuk mengolah berbagai karya visual seperti gambar, tulisan, grafik, dan lain sebagainya. Processing ini juga bisa kita hubungkan dengan perangkat keras lain seperti halnya Arduino. Nah kali ini kita akan menugaskan Processing untuk membaca data serial dari arduino yang berupa jarak objek di depan sensor serta derajat putaran servo yang dipadukan dalam bentuk interface berupa radar.

Project ini bersumber pada website : http://howtomechatronics.com/projects/arduino-radar-project/ dengan beberapa pengeditan pada program Arduinonya. Sedangkan program pada Processing saya copy paste dari website tersebut dengan sedikit penyesuaian karena saya sendiri masih dalam proses belajar untuk software Processing ini hehehe😀 .

Berikut adalah komponen yang perlu sampean siapkan :

  • Arduino (bisa UNO, MEGA, NANO, dll)
  • 1 buah motor servo
  • 1 buah sensor ultrasonic HC-SR04
  • Software Processing

Dan berikut ini skema rangkaiannya :

radar-1_bb

Jangan lupa taruh sensor ultrasonicnya di atas servo, karena sensor ultrasonic akan mengikuti pergerakan dari servo.

Berikut adalah program Arduinonya : 

//———PROGRAM RADAR PROJECT USING ARDUINO————//
//——AND INTERFACE 2D USING PROCESSING SOFTWARE——–//
//—Original Project From : http://www.howtomechatronics.com—-//
//———–Editing by : M. Nofgi Y.P.U.—————-//
//———-www.nofgipiston.wordpress.com—————-//

//Menambah library servo
#include .

//Deklarasi pin sensor ultrasonic
const int pinTrigger = 36;
const int pinEcho = 37;

//Deklarasi variabel durasi
long durasi;

//Deklarasi variabel jarak
int jarak;

//Deklarasi variabel servo1
Servo servo1;

void setup()
{
//Deklarasi status pin I/O
pinMode(pinTrigger, OUTPUT);
pinMode(pinEcho, INPUT);

//Deklarasi baud rate serial monitor
Serial.begin(9600);

//Deklarasi pin servo1
servo1.attach(A3);
}

void loop()
{
//Derajat servo1 bertambah satu derajat terus-menerus dari 15 derajat
//sampai 165 derajat
for (int i = 15; i <= 165; i++)
{
servo1.write(i);
delay(50);
jarak = hitungJarak();

//Menulis pada serial monitor derajat servo1 dan nilai jarak
Serial.print(i);
Serial.print(“,”);
Serial.print(jarak);
Serial.print(“.”);
}

//Derajat servo1 berkurang satu derajat terus-menerus dari 165 derajat
//sampai 15 derajat
for (int i = 165; i > 15; i–)
{
servo1.write(i);
delay(50);
jarak = hitungJarak();
//Menulis pada serial monitor derajat servo1 dan nilai jarak
Serial.print(i);
Serial.print(“,”);
Serial.print(jarak);
Serial.print(“.”);
}
}
int hitungJarak()
{
//Pengaktifan Trigger pada sensor ultrasonic
digitalWrite(pinTrigger, LOW);
delayMicroseconds(2);
digitalWrite(pinTrigger, HIGH);
delayMicroseconds(10);
digitalWrite(pinTrigger, LOW);

//Pembacaan pulsa pada Echo sensor ultrasonic
//dan konversi dari durasi ke jarak
durasi = pulseIn(pinEcho, HIGH);
jarak = (durasi * 0.034) / 2;
return jarak;
}

 

 

 

Dan berikut ini adalah program pada software Processingnya :

/* Arduino Radar Project
*
* Updated version. Fits any screen resolution!
* Just change the values in the size() function,
* with your screen resolution.
*
* by Dejan Nedelkovski,
* http://www.HowToMechatronics.com
*
*/
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 (1366, 768); // ***CHANGE THIS TO YOUR SCREEN RESOLUTION***
smooth();
myPort = new Serial(this,”COM3″, 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){
// 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) {
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 setelah itu silahkan hubungkan Arduino dengan kabel ke laptop/PC sampean, lalu run program pada Processing tersebut. Maka program akan berjalan. Untuk lebih jelasnya silahkan lihat video demonstrasi di channel Youtube saya ini :

Dan berikut ini tampilan screenshoot hasil sedikit editan yang saya lakukan pada program Processing :

radar-1

Radar buatan rumahan pun siap mendeteksi musuh sob hehehe😀 .

Silahkan dicoba ….. Silahkan berkomentar kalau masih kebingungan😀 .

Salam Teknologi …🙂 .

Jual Arduino, Sensor, Modul, SHIELD, dan Berbagai Komponen Elektronika/Robotika murah meriah … Best Quality Product … !!! (Klik di sini)

Wassalamualaikum.

*

*

*

*

*

********************

#Maaf jika ada kesalahan, ambil sisi positifnya saja.
#Barangkali anda mempunyai kabar/berita seputar otomotif/mekatronika/robotika/elektronika atau ingin mengiklankan suatu produk di blog ini, silahkan kontak saya.

Menerima jasa pembuatan Project atau alat berbasis Arduino, Elektronika, Robotika, Mekatronika, dan sejenisnya …

Bisa untuk keperluan hobi, tugas kuliah/sekolah, project industri/rumahan, dan sebagainya …

Silahkan kontak saya :

Facebook              : Nofgi Yugo Prasetyo
Fans Page on Facebook : Nofgi Piston Blog
E-Mail                : Nofgimotor@gmail.com
PIN BBM               : D2F100C2
Line                  : nofgi piston
Instagram             : nofgi_piston
Youtube               : NF-308
No. HP/WA             : 088217082017

Tentang Nofgi

Suka berbagai hal yang berhubungan dengan otomotif ... Penggemar Motor Sport ... Suka menulis di dunia maya ...
Pos ini dipublikasikan di Edukasi, Elektronik, Elektronika, Mekatronika, Robotika, Teknologi dan tag , , , , , , , . Tandai permalink.

14 Balasan ke Membuat Radar Pendeteksi Objek dengan Visual 2D Menggunakan Arduino dan Processing

  1. Muhammad Afi berkata:

    Subhanallah.. sangat bermanfaat..
    semoga dipakai banyak orang buat hal yang bermanfaat..
    dan pahala mengalir pada creator tentunya..

    btw, izin buat belajar y bang..

  2. Bintang Jati berkata:

    mantab ni,,radius berapa om?

  3. budi berkata:

    sangat membantu, ulas juga dong yang pake camera hehehe

  4. bayuetekno berkata:

    software processing itu apa gan, bisa lebih detail lagi? apa pke vbnet, delphi, java, atau yg lain

Komentar Anda Membuat Semangat Saya Membara ... :D

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s