Radar Arduino Project
Radar Arduino Project
FEATURES
Use for motion or distance sensing
Frequency: 40kHz ±1.0kHz
Aluminum case
Capacitance: 2000Pf ±20%
Transmitter: bandwidth 5.0kHz/100Db, sound pressure level
112Db/40 ±1.0kHz
4] SERVO MOTOR
A servomotor is a rotary actuator that allows for precise control of angular
position, velocity and acceleration. It consists of a suitable motor coupled to a
sensor for position feedback. It also requires a relatively sophisticated
controller, often a dedicated module designed specifically for use with
servomotors. Servomotors are not a different class of motor, on the basis of
fundamental operating principle, but uses servomechanism to achieve closed
loop control with a generic open loop motor. Servomotors are used in
applications such as robotics, CNC machinery or automated manufacturing.
5] GSM MODEM
A GSM modem is a specialized type of modem which accepts a SIM card,
and operates over a subscription to a mobile operator, just like a mobile
phone
From the mobile operator perspective, a GSM modem looks just like a
mobile phone.
When a GSM modem is connected to a computer, this allows the computer
to use the GSM modem to communicate over the mobile network.
6] LCD
Most common LCDs connected to the microcontrollers are 16x2 and 20x2
displays.
This means 16 characters per line by 2 lines and 20 characters per line by
2 lines, respectively.
The standard is referred to as HD44780U, which refers to the controller
chip which receives data from an external source (and communicates directly
with the LCD.
Building the device
First I made a cardboard stand for connecting the Ultrasonic sensor to the Servo motor. I folded
it like it’s shown on the picture below, glued it and secured to the servo motor using a screw like
this.
Also I attached a pin header on which I soldered 4 jumper wires for connecting the sensor.
Finally I secured the servo motor to the Arduino Board using an elastic band.
I connected the Ultrasonic Sensor HC-SR04 to the pins number 10 and 11 and the servo
motor to the pin number 12 on the Arduino Board.
WORKING :
Arduino program controls the all interfaced devices. For moving the
radar we have robotics setup. WI-FI is connected to arduino serially.
Arduino controls the motors clockwise and anti-clockwise by giving
signal to the motor driver IC (L293D IC). User sends the command
by mobile to the WI-FI and gives this command to the arduino.
Arduino program compaire this code with the predefined code. If it
is match then program gives digital signal to motor driver IC and
perform the required operation like left, right, forward and
backward.
#include <Servo.h>.
long duration;
int distance;
Servo myServo; // Creates a servo object for controlling the servo motor
void setup() {
Serial.begin(9600);
void loop() {
myServo.write(i);
delay(30);
Serial.print(","); // Sends addition character right next to the previous value needed
later in the Processing IDE for indexing
Serial.print("."); // Sends addition character right next to the previous value needed
later in the Processing IDE for indexing
for(int i=165;i>15;i--){
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); // Reads the echoPin, returns the sound wave
travel time in microseconds
distance= duration*0.034/2;
return distance;
void drawRadar() {
pushMatrix();
noFill();
strokeWeight(2);
stroke(98,245,31);
arc(0,0,1800,1800,PI,TWO_PI);
arc(0,0,1400,1400,PI,TWO_PI);
arc(0,0,1000,1000,PI,TWO_PI);
arc(0,0,600,600,PI,TWO_PI);
line(-960,0,960,0);
line(0,0,-960*cos(radians(30)),-960*sin(radians(30)));
line(0,0,-960*cos(radians(60)),-960*sin(radians(60)));
line(0,0,-960*cos(radians(90)),-960*sin(radians(90)));
line(0,0,-960*cos(radians(120)),-960*sin(radians(120)));
line(0,0,-960*cos(radians(150)),-960*sin(radians(150)));
line(-960*cos(radians(30)),0,960,0);
popMatrix();
void drawLine() {
pushMatrix();
strokeWeight(9);
stroke(30,250,60);
popMatrix();
void drawObject() {
pushMatrix();
strokeWeight(9);
pixsDistance = iDistance*22.5; // covers the distance from the sensor from cm to pixels
if(iDistance<40){
popMatrix();
void draw() {
fill(98,245,31);
textFont(orcFont);
noStroke();
fill(0,4);
drawRadar();
drawLine();
drawObject();
drawText();
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 index1=0;
int index2=0;
PFont orcFont;
void setup() {
smooth();
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);
noStroke();
fill(0,4);
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
iAngle = int(angle);
iDistance = int(distance);
}
void drawRadar() {
pushMatrix();
noFill();
strokeWeight(2);
stroke(98,245,31);
arc(0,0,1800,1800,PI,TWO_PI);
arc(0,0,1400,1400,PI,TWO_PI);
arc(0,0,1000,1000,PI,TWO_PI);
arc(0,0,600,600,PI,TWO_PI);
line(-960,0,960,0);
line(0,0,-960*cos(radians(30)),-960*sin(radians(30)));
line(0,0,-960*cos(radians(60)),-960*sin(radians(60)));
line(0,0,-960*cos(radians(90)),-960*sin(radians(90)));
line(0,0,-960*cos(radians(120)),-960*sin(radians(120)));
line(0,0,-960*cos(radians(150)),-960*sin(radians(150)));
line(-960*cos(radians(30)),0,960,0);
popMatrix();
void drawObject() {
pushMatrix();
strokeWeight(9);
stroke(255,10,10); // red color
pixsDistance = iDistance*22.5; // covers the distance from the sensor from cm to pixels
if(iDistance<40){
line(pixsDistance*cos(radians(iAngle)),-
pixsDistance*sin(radians(iAngle)),950*cos(radians(iAngle)),-950*sin(radians(iAngle)));
popMatrix();
void drawLine() {
pushMatrix();
strokeWeight(9);
stroke(30,250,60);
popMatrix();
pushMatrix();
if(iDistance>40) {
else {
noObject = "In Range";
fill(0,0,0);
noStroke();
fill(98,245,31);
textSize(25);
text("10cm",1180,990);
text("20cm",1380,990);
text("30cm",1580,990);
text("40cm",1780,990);
textSize(40);
if(iDistance<40) {
textSize(25);
fill(98,245,60);
translate(961+960*cos(radians(30)),982-960*sin(radians(30)));
rotate(-radians(-60));
text("30°",0,0);
resetMatrix();
translate(954+960*cos(radians(60)),984-960*sin(radians(60)));
rotate(-radians(-30));
text("60°",0,0);
resetMatrix();
translate(945+960*cos(radians(90)),990-960*sin(radians(90)));
rotate(radians(0));
text("90°",0,0);
resetMatrix();
translate(935+960*cos(radians(120)),1003-960*sin(radians(120)));
rotate(radians(-30));
text("120°",0,0);
resetMatrix();
translate(940+960*cos(radians(150)),1018-960*sin(radians(150)));
rotate(radians(-60));
text("150°",0,0);
popMatrix();
APPLICATION
1.Air Force
2.Naval Application
3.Applications in Army
REFERANCES
[1] www.arduinoproducts.com
[2] www.atmel.com/atmega328
[3] www.wikipedia.org
[4] Book of Alan G.Smith-Introduction to Arduino
[5] Reference book of Getting Started WithArduino By
Massimo Banzi
[6] www.realworldsensor.com
[7] Fundamentals of Radar signal processing-M.A.