Arduino Radar Sensor

Arduino Radar Sensor

Arduino Radar Sensor

Melihat radar yang sering digunakan pada di bandara dan militer. Cara menerapkan gelombang radio menemukan objek, dan mengetahui jarak yang tepat, selalu menjadi misteri bagaimana cara bekerja alat tersebut, miniradar ini dapat dibuat dengan keterampilan elektronik standar.

 

Mini RADAR dapat dirakit untuk :

1. Untuk membantu orang-orang tunanetra mengamati lingkungan mereka

2. Untuk Eksplorasi Bawah Air

3.Untuk Pembersihan Plastik Bawah Air

 

Perancangan membuat mini Arduino Radar, memerlukan bahan-bahan berikut:

1. Arduino Mini atau Uno x1

2. Micro Servo x1

3. Sensor Ultrasonic HC-SR04 x1

4. Kabel USB A to USB B             x1

5. Kabel Jumper Female To Male x4

6. Kabel Jumper Male to Male x3

7. Software Arduino IDE

 

Bahan tambahan:

1. Double Sided foam tape

2. Arduino Prototype Shield

3. Electrical Tape

 

A. Prototype Shield

Ketika menggunakan shield untuk arduino akan mempermudah pemasangan dan perancangan, selain itu ketika dibutuhkan penggunaan solder maka tidak perlu menggunakan solder langsung pada arduino, dalam project ini jumper akan di solder ke shield arduino untuk sambungan motor servo.

16463583421.jpg16463583424.jpg

B. Servo ke Arduino

16463583423.png16463583422.jpg

Tahap pertama menyambungkan motor servo ke arduino. Pada model ini motor servo digunakan untuk mengarahkan sensor ultrasonic yang akan dipasan pada servo. Servo yang digunakan dapat berotasi 180 derajat untuk melihat angel pada radar. Sebelum menghubungkan servo dengan arduino pastikan menggunakan tiga jumper male to male pada servo.

1. Hubungkan ground servo pin ke ground arduino

2. Hubungkan VCC servo ke 5 volt arduino

3. Hubungkan Signal servo ke pin 12 pada arduino.

Skematik dari Servo dan Arduino:

16463583435.png

 

C. Sensor Ultrasonik ke Arduino

16463583436.png16463583437.jpg

Selanjutnya dalam membuat mini arduino radar system untuk menghubungkan modul sensor ultrasonik ke arduino. Dalam model ini modul sensor ultrasonik akan menjadi radar pada produk radar ini. Alat ini akan merasakan objek disekitarnya. Sebelum mencoba modul sensor ultrasonik pastikan untuk menghubungkan empat kabel jumper male to female pada pin modul sensor ultrasonik ke arduino.

1. Hubungkan kabel ground dengan ground dengan Arduino.

2. Hubungkan kabel VCC ke 5V pin Arduino. (Jika tidak ada pin 5V tersisa pada arduino maka gunakan lah porjectboard agar memperbanyak pin 5V).

3. Hubungkan kabel Echo ke Pin 11 Arduino.

4. Hubungkan kabel Trigger ke Pin 10 Arduino.

Skematik dari Ultrasonik dan Arduino:

16463583438.png

 

D. Ultrasonik dan Servo

16463583449.jpg

Selanjutnya membuat system mini radar arduino tempelkan dengan lem modul sensor ultrasonik ke motor servo. Modul sensor ultrasonik dapat berputar 180 drajat.

 

E. Menggabungkan semua bagian

164635834410.jpg

Pada gambar-gambar yang terlihat gunakan double tape untuk menempelkan setiap bagian komponen dan modul.

 

F. Memperogram modul dengan Arduino IDE

164635834511.jpg

Selanjutnya menambahkan program pada mini arduino radar system menggunakan software arduino IDE.

Kode Program

// Includes the Servo library
#include <Servo.h>.
// Defines Tirg and Echo pins of the Ultrasonic Sensor
const int trigPin = 10;
const int echoPin = 11;// Variables for the duration and the distance
long duration;
int distance;
Servo myServo; // Creates a servo object for controlling the servo motor
void setup() { 
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output 
pinMode(echoPin, INPUT);// Sets the echoPin as an Input 
Serial.begin(9600); 
myServo.attach(12); // Defines on which pin is the servo motor attached}
void loop() { 
// rotates the servo motor from 15 to 165 degrees 
for(int i=15;i<=165;i++){
myServo.write(i); 
delay(30); 
distance = calculateDistance(); // Calls a function for calculating the distance measured by the Ultrasonic sensor for each degree    
Serial.print(i); // Sends the current degree into the Serial Port 
Serial.print(","); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing 
Serial.print(distance); // Sends the distance value into the Serial Port 
Serial.print("."); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing  }
// Repeats the previous lines from 165 to 15 degrees 
for(int i=165;i>15;i--) {
myServo.write(i); 
delay(30); 
distance = calculateDistance(); 
Serial.print(i); 
Serial.print(","); 
Serial.print(distance); 
Serial.print(".");  }}// Function for calculating the distance measured by the Ultrasonic
sensorint 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);//Reads the echoPin, returns the sound wave travel time in microseconds 
distance= duration*0.034/2;  return distance;}

 

G. Mambahkan program ke proses 4

Selanjutnya untuk menjalankan program pastikan mengubah COM pin pada arduino IDE yang telah menyala.

Periksa pada Tools à Port pada arduino IDE

Kode program:

import processing.serial.*; // imports library for serial communication

importjava.awt.event.KeyEvent; // imports library for reading the data from the serial port

importjava.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 (1200, 700); // ***CHANGE THIS TO YOUR SCREEN RESOLUTION***

smooth();

myPort = new Serial(this,"COM3", 9600); // ****CHANGE THE COM3 To the PORT YOUR ARDUINO IS ON!!!!****

myPort.bufferUntil('.'); // reads the data from the serial port up to the character '.'. So actually it reads this: angle,distance.

}

void draw() {   

fill(98,245,31);  // 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("Arduino Radar", width-width*0.975, height-height*0.0277); 

text("Angle: " + iAngle +" °", width-width*0.68, height-height*0.0277); 

text("Distance: ", width-width*0.36, height-height*0.0277);  i

f(iDistance<40) {  text("        " + iDistance +" cm", width-width*0.26, 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();

}

source: https://www.instructables.com/Arduino-RADAR-Sensor/

H. Menajalankan program

About us

1626145570header-bg.jpg
 
Selamat datang di INSTIPER Robotics Academy (IRA), INSTIPER Robotics Academy merupakan salah satu fasilitas yang disediakan oleh INSTIPER untuk mendukung perkembangan civitas akademika dalam mengembangkan robot pada bidang pertanian. IRA dibentuk dengan tujuan untuk menghadapi salah satu tuntutan dari pendidikan 4.0, sekaligus mewujudkan New INSTIPER with Advanced Technology (NIwAT).

 

1626144074logo-in-section.png

Are you looking for