RADAR SYSTEM USING ARDUINO

In this tutorial we'll learn about how to make a radar system using an Arduino Uno

OVERVIEW

 In this Arduino Tutorial I will show you how you can make this cool looking radar using the Arduino Board and the Processing Development Environment. You can watch the following video or read the written tutorial below for more details.

All you need for this Arduino Project is an Ultrasonic Sensor for detecting the objects, a small hobbyist Servo Motor for rotating the sensor and an Arduino Board for controlling them. You can watch the following video or read the written tutorial below.

COMPONENTS NEEDED FOR THE PROJECT

You can get these components from amazon at a very reasonable price

  • Ultrasonic sensor HC- SR04……. 
  • Servo Motor…………………………… 
  • Arduino Board……………………….. 
  • Breadboard and Jump Wires….. 

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.

CIRCUIT SCHEMATICS

  • 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.

SOURCE CODES

HERE'S THE SOURCE CODE FOR ARDUINO WITH DESCRIPTION FOR EACH LINE 

  1. // Includes the Servo library
  2. #include <Servo.h>.
  3. // Defines Tirg and Echo pins of the Ultrasonic Sensor
  4. const int trigPin = 10;
  5. const int echoPin = 11;
  6. // Variables for the duration and the distance
  7. long duration;
  8. int distance;
  9. Servo myServo; // Creates a servo object for controlling the servo motor
  10. void setup() {
  11. pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  12. pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  13. Serial.begin(9600);
  14. myServo.attach(12); // Defines on which pin is the servo motor attached
  15. }
  16. void loop() {
  17. // rotates the servo motor from 15 to 165 degrees
  18. for(int i=15;i<=165;i++){
  19. myServo.write(i);
  20. delay(30);
  21. distance = calculateDistance();// Calls a function for calculating the distance measured by the Ultrasonic sensor for each degree
  22. Serial.print(i); // Sends the current degree into the Serial Port
  23. Serial.print(","); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
  24. Serial.print(distance); // Sends the distance value into the Serial Port
  25. Serial.print("."); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing
  26. }
  27. // Repeats the previous lines from 165 to 15 degrees
  28. for(int i=165;i>15;i--){
  29. myServo.write(i);
  30. delay(30);
  31. distance = calculateDistance();
  32. Serial.print(i);
  33. Serial.print(",");
  34. Serial.print(distance);
  35. Serial.print(".");
  36. }
  37. }
  38. // Function for calculating the distance measured by the Ultrasonic sensor
  39. int calculateDistance(){
  40. digitalWrite(trigPin, LOW);
  41. delayMicroseconds(2);
  42. // Sets the trigPin on HIGH state for 10 micro seconds
  43. digitalWrite(trigPin, HIGH);
  44. delayMicroseconds(10);
  45. digitalWrite(trigPin, LOW);
  46. duration = pulseIn(echoPin, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds
  47. distance= duration*0.034/2;
  48. return distance;
  49. }

HERE's THE FINAL PROCESSING CODE OF ARDUINO RADAR

YOU CAN DOWNLOAD THE PROCESSING SOFTWARE FOR .PDE FILE AT PROCESSING.ORG 

but you need to change the resolution of your code according to your display and the communication port to your device's port i am using com4 here  for my computer

  1. /* Arduino Radar Project
  2. *
  3. * Updated version. Fits any screen resolution!
  4. * Just change the values in the size() function,
  5. * with your screen resolution.
  6. *
  7. * by Kunal Chaudhary
  8. *
  9. */
  10. import processing.serial.*; // imports library for serial communication
  11. import java.awt.event.KeyEvent; // imports library for reading the data from the serial port
  12. import java.io.IOException;
  13. Serial myPort; // defines Object Serial
  14. // defubes variables
  15. String angle="";
  16. String distance="";
  17. String data="";
  18. String noObject;
  19. float pixsDistance;
  20. int iAngle, iDistance;
  21. int index1=0;
  22. int index2=0;
  23. PFont orcFont;
  24. void setup() {
  25. size (1920, 1080); // ***CHANGE THIS TO YOUR SCREEN RESOLUTION***
  26. smooth();
  27. myPort = new Serial(this,"COM3", 9600); // starts the serial communication
  28. myPort.bufferUntil('.'); // reads the data from the serial port up to the character '.'. So actually it reads this: angle,distance.
  29. orcFont = loadFont("OCRAExtended-30.vlw");
  30. }
  31. void draw() {
  32. fill(98,245,31);
  33. textFont(orcFont);
  34. // simulating motion blur and slow fade of the moving line
  35. noStroke();
  36. fill(0,4);
  37. rect(0, 0, width, height-height*0.065);
  38. fill(98,245,31); // green color
  39. // calls the functions for drawing the radar
  40. drawRadar();
  41. drawLine();
  42. drawObject();
  43. drawText();
  44. }
  45. void serialEvent (Serial myPort) { // starts reading data from the Serial Port
  46. // reads the data from the Serial Port up to the character '.' and puts it into the String variable "data".
  47. data = myPort.readStringUntil('.');
  48. data = data.substring(0,data.length()-1);
  49. index1 = data.indexOf(","); // find the character ',' and puts it into the variable "index1"
  50. 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
  51. 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
  52. // converts the String variables into Integer
  53. iAngle = int(angle);
  54. iDistance = int(distance);
  55. }
  56. void drawRadar() {
  57. pushMatrix();
  58. translate(width/2,height-height*0.074); // moves the starting coordinats to new location
  59. noFill();
  60. strokeWeight(2);
  61. stroke(98,245,31);
  62. // draws the arc lines
  63. arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI);
  64. arc(0,0,(width-width*0.27),(width-width*0.27),PI,TWO_PI);
  65. arc(0,0,(width-width*0.479),(width-width*0.479),PI,TWO_PI);
  66. arc(0,0,(width-width*0.687),(width-width*0.687),PI,TWO_PI);
  67. // draws the angle lines
  68. line(-width/2,0,width/2,0);
  69. line(0,0,(-width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));
  70. line(0,0,(-width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));
  71. line(0,0,(-width/2)*cos(radians(90)),(-width/2)*sin(radians(90)));
  72. line(0,0,(-width/2)*cos(radians(120)),(-width/2)*sin(radians(120)));
  73. line(0,0,(-width/2)*cos(radians(150)),(-width/2)*sin(radians(150)));
  74. line((-width/2)*cos(radians(30)),0,width/2,0);
  75. popMatrix();
  76. }
  77. void drawObject() {
  78. pushMatrix();
  79. translate(width/2,height-height*0.074); // moves the starting coordinats to new location
  80. strokeWeight(9);
  81. stroke(255,10,10); // red color
  82. pixsDistance = iDistance*((height-height*0.1666)*0.025); // covers the distance from the sensor from cm to pixels
  83. // limiting the range to 40 cms
  84. if(iDistance<40){
  85. // draws the object according to the angle and the distance
  86. line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),(width-width*0.505)*cos(radians(iAngle)),-(width-width*0.505)*sin(radians(iAngle)));
  87. }
  88. popMatrix();
  89. }
  90. void drawLine() {
  91. pushMatrix();
  92. strokeWeight(9);
  93. stroke(30,250,60);
  94. translate(width/2,height-height*0.074); // moves the starting coordinats to new location
  95. line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle))); // draws the line according to the angle
  96. popMatrix();
  97. }
  98. void drawText() { // draws the texts on the screen
  99. pushMatrix();
  100. if(iDistance>40) {
  101. noObject = "Out of Range";
  102. }
  103. else {
  104. noObject = "In Range";
  105. }
  106. fill(0,0,0);
  107. noStroke();
  108. rect(0, height-height*0.0648, width, height);
  109. fill(98,245,31);
  110. textSize(25);
  111. text("10cm",width-width*0.3854,height-height*0.0833);
  112. text("20cm",width-width*0.281,height-height*0.0833);
  113. text("30cm",width-width*0.177,height-height*0.0833);
  114. text("40cm",width-width*0.0729,height-height*0.0833);
  115. textSize(40);
  116. text("Object: " + noObject, width-width*0.875, height-height*0.0277);
  117. text("Angle: " + iAngle +" °", width-width*0.48, height-height*0.0277);
  118. text("Distance: ", width-width*0.26, height-height*0.0277);
  119. if(iDistance<40) {
  120. text(" " + iDistance +" cm", width-width*0.225, height-height*0.0277);
  121. }
  122. textSize(25);
  123. fill(98,245,60);
  124. translate((width-width*0.4994)+width/2*cos(radians(30)),(height-height*0.0907)-width/2*sin(radians(30)));
  125. rotate(-radians(-60));
  126. text("30°",0,0);
  127. resetMatrix();
  128. translate((width-width*0.503)+width/2*cos(radians(60)),(height-height*0.0888)-width/2*sin(radians(60)));
  129. rotate(-radians(-30));
  130. text("60°",0,0);
  131. resetMatrix();
  132. translate((width-width*0.507)+width/2*cos(radians(90)),(height-height*0.0833)-width/2*sin(radians(90)));
  133. rotate(radians(0));
  134. text("90°",0,0);
  135. resetMatrix();
  136. translate(width-width*0.513+width/2*cos(radians(120)),(height-height*0.07129)-width/2*sin(radians(120)));
  137. rotate(radians(-30));
  138. text("120°",0,0);
  139. resetMatrix();
  140. translate((width-width*0.5104)+width/2*cos(radians(150)),(height-height*0.0574)-width/2*sin(radians(150)));
  141. rotate(radians(-60));
  142. text("150°",0,0);
  143. popMatrix();
  144. }

So ! this was the whole tutorial on RADAR SYSTEM i hope you liked it 

if any issues come up you can contact me through my email id -- kc297.0201@gmail.com or my whatsapp number -- +918107030018

Copyright ARDUINO TUTORIAL