Industrial manufacturing
Industrial Internet of Things | Industrial materials | Equipment Maintenance and Repair | Industrial programming |
home  MfgRobots >> Industrial manufacturing >  >> Manufacturing Technology >> Manufacturing process

Real-Time Distance Measurement with Arduino Sonar & Processing Visualization

Components and supplies

Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
Arduino UNO
×1
Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
SG90 Micro-servo motor
×1
Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
Ultrasonic Sensor - HC-SR04 (Generic)
×1
Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
Jumper wires (generic)
×1
Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
Solderless Breadboard Full Size
×1

Necessary tools and machines

Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
Hot glue gun (generic)
Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
Soldering Iron Kit, SolderPro 150

Apps and online services

Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
Arduino IDE
Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
The Processing Foundation Processing

About this project

Hello everyone, I was suggested to make a obstacle avoidance car but I thought it to be too common and impractical to make one..., so I thought to make a sonar using the concept of obstacle avoidance car's servo and HC-SR04 sensor.

I didn't had a tft lcd screen due to which I didn't know how to display the sonar's output.Then I thought to use processing IDE as it enabled to display the sonar's output on my pc that too with nice resolution ! but as I was new to processing IDE I didn't know to use it so for practice I used p5 web editor (just for practice) than I used processing Ide and some libraries to read output of sonar and display on pc !

Real-Time Distance Measurement with Arduino Sonar & Processing Visualization

I have attached ultrasonic sensor on servo motor using hot glue gun so that the ultrasonic sensor rotates with servo and covers a range of 180 degrees and then the output whether a object is detected or not is shown on processing IDE and I wrote some more code which accurately displays the distance and angle !

Real-Time Distance Measurement with Arduino Sonar & Processing Visualization

Friends I have also shared how the output on processing IDE looks like you can use the image as reference with your project :)

As we know how the assembly and output looks like the only thing remaining is the video of output watch the video till end to understand the output much more properly.

Code

  • Sonar code for arduino IDE
  • Sonar code for processing IDE
Sonar code for arduino IDEC/C++
#include <Servo.h>
const int trigPin=12;
const int echoPin=11;
long duration;
int distance;
Servo s1;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);
  s1.attach(9);
}

void loop(){
    for(int i=0;i<180;i=i+1){            
        s1.write(i);
        delay(30);
        distance = calDist();
        Serial.print(i);                      
        Serial.print(",");                   
        Serial.print(distance);              
        Serial.print(".");                   
     }
    for(int i=180;i>0;i=i-1){  
        s1.write(i);
        delay(30);
        distance = calDist();
        Serial.print(i);
        Serial.print(",");
        Serial.print(distance);
        Serial.print(".");
    }
}

    int calDist(){
       digitalWrite(trigPin, LOW);
       delayMicroseconds(2);
       digitalWrite(trigPin, HIGH);
       delayMicroseconds(10);
       digitalWrite(trigPin, LOW);                                                     
       duration = pulseIn(echoPin, HIGH);                            
       distance= duration*0.034/2;                  
       return distance;
}
Sonar code for processing IDEJava
import processing.serial.*;               
Serial myPort;                         

String ang="";
String distance="";
String data="";

int angle, dist;

void setup() {
   size (2000,800);   
   myPort = new Serial(this,"COM3", 9600);                     
   myPort.bufferUntil('.');  
   background(0);
}

void draw() {
      fill(0,5);              
      noStroke();
      rect(0, 0, width, height*0.93); 
      noStroke();
      fill(0,255);
      rect(0,height*0.93,width,height);                   
      drawRadar(); 
      drawLine();
      drawObject();
      drawText();
}


void serialEvent (Serial myPort) {                                                     
      data = myPort.readStringUntil('.');
      data = data.substring(0,data.length()-1);
      int index1 = data.indexOf(",");                                                    
      ang= data.substring(0, index1);                                                 
      distance= data.substring(index1+1, data.length());                            
      angle = int(ang);
      dist = int(distance);
      System.out.println(angle);
}

void drawRadar(){
    pushMatrix();
    noFill();
    strokeWeight(0.5);
    stroke(10,255,10);            
    translate(width/2,height-height*0.06);    
    line(-width/2,0,width/2,0);    
    arc(0,0,(width*0.5),(width*0.5),PI,TWO_PI);
    arc(0,0,(width*0.25),(width*0.25),PI,TWO_PI);
    arc(0,0,(width*0.75),(width*0.75),PI,TWO_PI);
    arc(0,0,(width*0.95),(width*0.95),PI,TWO_PI);
    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)));
    stroke(175,255,175); 
    line(0,0,(-width/2)*cos(radians(15)),(-width/2)*sin(radians(15)));
    line(0,0,(-width/2)*cos(radians(45)),(-width/2)*sin(radians(45)));
    line(0,0,(-width/2)*cos(radians(75)),(-width/2)*sin(radians(75)));
    line(0,0,(-width/2)*cos(radians(105)),(-width/2)*sin(radians(105)));
    line(0,0,(-width/2)*cos(radians(135)),(-width/2)*sin(radians(135)));
    line(0,0,(-width/2)*cos(radians(165)),(-width/2)*sin(radians(165)));
    popMatrix();
}

void drawLine() {
  pushMatrix();
  strokeWeight(9);
  stroke(0,255,0);
  translate(width/2,height-height*0.06); 
  line(0,0,(width/2)*cos(radians(angle)),(-width/2)*sin(radians(angle)));
  popMatrix();
}

void drawObject() {
    pushMatrix();    
    strokeWeight(9);
    stroke(255,0,0);
    translate(width/2,height-height*0.06);
    float pixleDist = (dist/40.0)*(width/2.0);                       
    float pd=(width/2)-pixleDist;
    float x=-pixleDist*cos(radians(angle));
    float y=-pixleDist*sin(radians(angle));
    if(dist<=40){                               
       line(-x,y,-x+(pd*cos(radians(angle))),y-(pd*sin(radians(angle))));
    }
    popMatrix();
}

void drawText(){
    pushMatrix();
    fill(100,200,255);
    textSize(25);
    text("10cm",(width/2)+(width*0.115),height*0.93);
    text("20cm",(width/2)+(width*0.24),height*0.93);
    text("30cm",(width/2)+(width*0.365),height*0.93);
    text("40cm",(width/2)+(width*0.45),height*0.93);
    if(dist<=40) {
      text("Distance :"+dist,width*0.7,height*0.99);
    }
    translate(width/2,height-height*0.06);
    textSize(25);
    text(" 30",(width/2)*cos(radians(30)),(-width/2)*sin(radians(30)));
    text(" 60",(width/2)*cos(radians(60)),(-width/2)*sin(radians(60)));
    text("90",(width/2)*cos(radians(91)),(-width/2)*sin(radians(90)));
    text("120",(width/2)*cos(radians(123)),(-width/2)*sin(radians(118)));
    text("150",(width/2)*cos(radians(160)),(-width/2)*sin(radians(150)));
    popMatrix();  
}

Schematics

Real-Time Distance Measurement with Arduino Sonar & Processing Visualization

Manufacturing process

  1. Arduino Digital Dice Project: Build Your Own LCD-based Random Number Generator
  2. Smart Parking Counter: Real‑Time Vehicle Tracking with Arduino, Processing, and PHP
  3. Seamless LED Brightness Control Using Bolt IoT and Arduino UNO
  4. Build a Compact FM Radio with Arduino Nano and RDA8057M
  5. NeoPixel Matrix Pong on Arduino Nano: Build a Neon Pong Game
  6. Smart AC Lighting with Arduino UNO and Relay – Automatic Control
  7. Building an IoT Device with ESP8266‑01 and Arduino Nano: A Complete Guide
  8. Programming the ATmega8 Microcontroller with Arduino IDE – Step‑by‑Step Guide
  9. Configure NeoPixels with Vixen Lights & Arduino: A Step‑by‑Step Guide
  10. Build a Real‑Time Digital Compass with Arduino & Processing