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 :
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 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
Keren
https://macantua.com/2016/11/24/deviasi-speedometer-new-cbr250rr-hanya-648-kecil-sob/
Mantab om …
Subhanallah.. sangat bermanfaat..
semoga dipakai banyak orang buat hal yang bermanfaat..
dan pahala mengalir pada creator tentunya..
btw, izin buat belajar y bang..
Hehe Aamiin … Aamiin … Monggo monggo 😀 .
nice project
Thank you 😀
mantab ni,,radius berapa om?
Hahaha hanya skitar 40cm saja.
kalo di spec HC SC04 kn bisa sampe 4 meteran…. tapi pas ane coba gk bisa smpe sgtu….. 1 meter aja udh angot2an
saran sensor yg mampu 4 meter apa ya
Harus ngoding Processingnya lagi gan kalau jarak 4 Meter.
Ada sensor yang agak mahalan gan, skitar 200rb ke atas.
Sama-sama ultrasonic juga.
sangat membantu, ulas juga dong yang pake camera hehehe
Wah saya masih belajar soal itu sob hehehe… Doakan segera bisa 😀 .
software processing itu apa gan, bisa lebih detail lagi? apa pke vbnet, delphi, java, atau yg lain
Processing itu software open source mas, mirip-mirip memprogram Arduino. Tapi ini untuk interface.
klo diatas kliatannya Java…
Memang pakai program java bro.
Ping balik: Berbagai Komponen Untuk Project Robotika dan Otomasi | Nofgi Piston
java.lang.RuntimeException: Error opening serial port COM3: Port not found, ini gimana ya gan?
Cek COM Arduino nya di COM berapa.
Cara memberi tulisan “terdeteksi” di tulisan objek itu ngubahnya di program bagian mananya mas?
Sudah ada keterangannya
Ini kenapa mas di interface processingnya ada tulisan “error disabling serialEvent for com 3 null” . Interfacenya gak mau jalann.. Minta solusinya
Silahkan cek lagi programnya
Apakah bisa dihubungkan dengan aplikasi Web atau Android ?
software procesingnya itu pakai apa ya mas.?
sangat membantu gan
boleh juga ni
sekedar informasi bagi yang bingung ingin mengucapkan kata kata selamat ulang tahun buat pacar, teman,sahabat,orangtua,dll silahkan sms no. hp saya 085752800302
koneksi kabelnya tolong dong min gangerti ..
gan, boss gimana cara nya agar radarnya tembus 100 meter,?. apa yang harus di ganti gan.
Untuk yang melihat jika ada benda itu menggunakan software apa? Demo radarnya di laptop gan