How to Make Radar Using Arduiino, Servo + Ultrasonic | Mudah Sekali, Sudah Pakai Bahasa Indonnesia, Bisa Desain Sendiri
Asalamualaikum, selamat datang di blog ini.
Mungkin kalian ingin membuat radar sendiri dirumah, ini langkah-langkahnya:
Saya mau berbagi cara termudah untuk membuat radar pakai arduino uno, servo dan ultrasonic sebagai sensornya, sebenarnya semua arduino bisa digunakan, tidak hanya arduino uno saja, kebetulan saja saya pakai arduino uno.
rangkai dulu arduinonya seperti gambar dibawah:
Noted:
- Pin triger pada sensor ultrasonic pada pin 10 arduino board.
- Pin Echo pada sensor ultrasonic pada pin 11 di arduino board.
- wire merah Positif.
- Wire hitam negatif Gnd.
Langkah berikutnya bukan arduino softwere dan sambungkan arduino ke usb di laptop serta pastikan com pada arduino sesuai. setelah selesei itu semua, masukan program dibawah pada arduino kalian, inget ada coment pada program yang bisa kalian utak atik untuk custom sesuai dengan yang kalian inginkan.
#include <Servo.h>
const int trigPin = 10; // Custom pin triger ke arduino board pin 10 di digital PWM pin dan bisa diganti pinnya
const int echoPin = 11; // Custom pin echo ke arduino board pin 11 di digital PWM pin dan bisa diganti pinnya
long duration;
int distance;
Servo myServo;
void setup()
{
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
myServo.attach(12); // Pin Sinyal warna orange di kabel servo di pin 12 digital PWM dan bisa di custom pinnya
}
void loop()
{
// pergerakan servo dari 0 hingga 180 derajat
for(int i=0;i<=180;i++){ // Custom putaran servo dari 0 hingga 180 derajat, bisa di ganti sudutnya sesuai selera, maximal sudut servo 180 derajat
myServo.write(i);
delay(30);
distance = calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
// pergerakan servo dari 180 hingga 0 derajat
for(int i=180;i>0;i--){ // Custom putaran servo dari 180 hingga 0 derajat, bisa di ganti sudutnya sesuai selera, maximal sudut servo 180 derajat
myServo.write(i);
delay(30);
distance = calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
}
int calculateDistance(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance= duration*0.034/2;
return distance;
}
Setelah itu buka softwere procecing dan masukan program dibawah ke prosecing softwere tersebut, inget! pastikan anda membaca coment yang sudah saya buat di bahasa program.
import processing.serial.*;
import java.awt.event.KeyEvent;
import java.io.IOException;
Serial myPort;
// 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 (1300, 750);
smooth();
myPort = new Serial(this,"COM3", 9600); // ganti com tersebut dan pastikan sama dengan com yang kalian gunakan di arduino board
myPort.bufferUntil('.');
}
void draw() {
fill(255,255,255);
noStroke();
fill(0,4);
rect(0, 0, width, height-height*0.065);
fill(255,255,255); //warna putih, untuk warna lingkaran pada tampilan monitor radar
drawRadar();
drawLine();
drawObject();
drawText();
}
void serialEvent (Serial myPort) {
data = myPort.readStringUntil('.');
data = data.substring(0,data.length()-1);
index1 = data.indexOf(",");
angle= data.substring(0, index1);
distance= data.substring(index1+1, data.length());
// converts the String variables into Integer
iAngle = int(angle);
iDistance = int(distance);
}
void drawRadar() {
pushMatrix();
translate(width/2,height-height*0.074);
noFill();
strokeWeight(2);
stroke(255,255,255);// warna putih, kalian bisa custom warna ini sesuai dengan yang kalian inginkan
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);
line(-width/2,0,width/2,0);
line(0,0,(-width/2)*cos(radians(0)),(-width/2)*sin(radians(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(0,0,(-width/2)*cos(radians(180)),(-width/2)*sin(radians(180)));
line((-width/2)*cos(radians(30)),0,width/2,0);
popMatrix();
}
void drawObject() {
pushMatrix();
translate(width/2,height-height*0.074);
strokeWeight(9);
stroke(255,10,10); //warna merah untuk objek yang di deteksi, kalian bisa custom warna yang kalian inginkan
pixsDistance = iDistance*((height-height*0.1666)*0.025);
// jarak maksimal hanya 40cm
if(iDistance<40){
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(0,255,240);// ini warna biru tosca yang digunakan untuk swing pada radar monitor
translate(width/2,height-height*0.074);
line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle)));
popMatrix();
}
void drawText() {
pushMatrix();
if(iDistance>40) {
noObject = "Out of Range";
}
else {
noObject = "In Range";
}
fill(0,0,0);// warna hitam
noStroke();
rect(0, height-height*0.0648, width, height);
fill(98,245,31);// warna hijau untuk text
textSize(25);//ukuran text
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);
text("10cm",width-width*0.650,height-height*0.0833);
text("20cm",width-width*0.750,height-height*0.0833);
text("30cm",width-width*0.850,height-height*0.0833);
text("40cm",width-width*0.950,height-height*0.0833);
textSize(25);
text("Subscribe Vanza Maylonda thanks :) ", width-width*0.875, height-height*0.0277); //bisa custom tulisan yang kalian inginkan
text("Angle: " + iAngle +" °", width-width*0.48, height-height*0.0277);
text("Distance: ", width-width*0.29, height-height*0.0277);
if(iDistance<40) {
text(" " + iDistance +" cm", width-width*0.225, height-height*0.0277);
}
textSize(25);
fill(245,239,62); // warna kuning untuk sudut dialnya
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();
}
Setelah itu langsung raunnig program tersebut dan kalian akan melihat tambilannya seperti dibawah ini:
Selain saya berbagi pemikiran melalui tulisan di blog ini, saya juga berbagi pemikiran pada platform youtube pribadi saya Klick Here! tentu di platform youtube saya tidak hanya berbagi pemikiran saja, tetapi berbagi apa saja yang pantas dan layak untuk saya bagikan, jangan lupa di support yaa teman-teman, dan di follow sosial mediaku juga linknya Klick Here! mari kita berteman di sosial media dan silaturahim disana.
Terimakasih. Ini tutorialnya:
Komentar
Posting Komentar