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, bisa diperoleh Di Sini)
  • 1 buah motor servo
  • 1 buah sensor ultrasonic HC-SR04 (bisa diperoleh Di Sini)
  • 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 : 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, 
  * 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

Menerima Order Project Elektronika & Robotika. WA/SMS : 088217082017 Youtube : Nofgi Piston IG : nofgi_piston
Pos ini dipublikasikan di Edukasi, Elektronika, Mekatronika, Robotika, Teknologi dan tag , , , , , , , . Tandai permalink.

31 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

  5. Ping balik: Berbagai Komponen Untuk Project Robotika dan Otomasi | Nofgi Piston

  6. Aris Kurniawan berkata:

    java.lang.RuntimeException: Error opening serial port COM3: Port not found, ini gimana ya gan?

  7. Anonim berkata:

    Cara memberi tulisan “terdeteksi” di tulisan objek itu ngubahnya di program bagian mananya mas?

  8. Dooo sem berkata:

    Ini kenapa mas di interface processingnya ada tulisan “error disabling serialEvent for com 3 null” . Interfacenya gak mau jalann.. Minta solusinya

  9. Muslim Sambas berkata:

    Apakah bisa dihubungkan dengan aplikasi Web atau Android ?

  10. Mr Adins berkata:

    software procesingnya itu pakai apa ya mas.?

  11. Anonim berkata:

    sangat membantu gan

  12. Annas berkata:

    boleh juga ni

  13. irul berkata:

    sekedar informasi bagi yang bingung ingin mengucapkan kata kata selamat ulang tahun buat pacar, teman,sahabat,orangtua,dll silahkan sms no. hp saya 085752800302

  14. abyakta berkata:

    koneksi kabelnya tolong dong min gangerti ..

  15. purjumatin berkata:

    gan, boss gimana cara nya agar radarnya tembus 100 meter,?. apa yang harus di ganti gan.

  16. Bagos berkata:

    Untuk yang melihat jika ada benda itu menggunakan software apa? Demo radarnya di laptop gan

Komentar Anda Membuat Semangat Saya Membara ... :D