ULTRASONIC RADAR SYSTEM USING ARDUINO

0
302

Do you have any idea? In World War II, radar was developed for the first time as a method of detecting enemy aircraft. It is now used in a variety of industries , thanks to technological advancements. Radar technology has made significant advances in the last few decades.

In this project, we will create an Arduino radar project that will use an ultrasonic sensor for detection. An Arduino microcontroller improves the discipline of electronics.

This Arduino radar project aims to create a radar system prototype that detects stationary and moving objects using an Arduino board. The radar system has various performance specifications and comes in a variety of sizes.

What is the function of Radar? 

The acronym RADAR stands for Radio Detection and Ranging. Radar is a microwave-based object detection system that determines the range, altitude, direction, and speed of objects within a 100-mile radius of their location.

The radar antenna sends out radio waves or microwaves, which bounce off anything in their path. As a result, we can easily identify the object in the radar range.

The fundamental operating principle is as follows:

Radar is an electromagnetic sensor that detects and locates objects.

The radar emits radio waves or microwaves into the atmosphere. Reflecting objects intercept some of these waves. Intercepted radio waves strike the target and are reflected in a variety of directions. Some of these waves can be directed back toward the radar, which receives and amplifies them. If these waves are re-received at their source, it indicates that an object is in the propagation direction. The modern radar system is highly advanced and used in a wide range of applications, including air traffic control, air defence, radar astronomy, antimissile defence, and outer space surveillance.

 

What exactly is an ultrasonic sensor?

An ultrasonic sensor is a proximity sensor that measures the distance between a target and an object. It detects the object by sending out ultrasonic waves and receiving the reflected waves as an electrical signal. These sound waves travel faster than the speed at which humans can hear sound.

It is made up of two main parts: the transmitter and the receiver. The sound is produced by the transmitter using a piezoelectric crystal, and the sound is detected by the receiver after it has travelled to and from the target.These sensors are commonly found in self-parking technology and anti-collision safety systems in automobiles. Also used in robotic obstacle detection systems, manufacturing technology, and a variety of other applications.

What exactly is a servo motor?

The servo motor is a simple direct current motor that can be controlled for specific angular rotation using additional servomechanism. This motor will only rotate as much we want and then stop. The servo motor is a closed-loop mechanism that uses positional feedback to control the speed and position.

The servo motor is different from a regular electric motor, which starts and stops when the power comes in. The signal says that the servo motor will work, so it will.Servo motors are used a lot in industry and robotics these days. They are also often found in RC cars and planes, as well as in the CD or DVD player. A servo motor is also used for a lot of other things that we use every day.

COMPONENTS USED

  1. SERVO MOTOR- SG90
  2. ULTRASONIC HC¬SR04 DISTANCE MEASURING TRANSDUCER MODULE
  3. ARDUINO UNO
  4. FEMALE TO MALE JUMPER WIRE
  5. USB 2.0 A-B MALE CABLE 0.3METER
  6. ULTRASONIC SENSOR FIXED BRACKET

Hardware Connection

ULTRASONIC SENSOR TO ARDUINO

  • VCC     –      ARDUINO 5V
  • TRIG   –      ARDUINO PIN 5
  • ECHO  –      ARDUINO PIN 6
  • GND   –       ARDUINO GND.

SERVO MOTOR TO ARDUINO

  • VCC(RED WIRE)                 –      ARDUINO 5V
  • GND(BROWN WIRE)           –      ARDUINO GND
  • CONTROL (ORANGE WIRE)  –      ARDUINO PIN 12

Software Installation and Code

We need two software to complete this Arduino radar project. One is Arduino IDE, and the other is Processing IDE. Download both Software from the below links,

Processing application is visual arts-based software for learning to code. After downloading, extract the Zip file, and you will get the processing application (.exe file).

In this project, we are using two codes: Arduino UNO and the other for Processing.

ARDUINO CODE

#include <Servo.h>. 
// Defines Tirg and Echo pins of the Ultrasonic Sensor
const int trigPin = 5;
const int echoPin = 6;
// 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 sensor
int 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;
}

JAVA PROCESSING CODE

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 (1820, 1020); // ***CHANGE THIS TO YOUR SCREEN RESOLUTION***
smooth();
myPort = new Serial(this,"COM6", 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.
}
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("EAGLE ELECTRONICS", 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(); 
}

 

LEAVE A REPLY

Please enter your comment!
Please enter your name here