Radar usando Arduino e sensor ultrassônico

Tempo de leitura: 5 minutes

Radar usando Arduino e sensor ultrassônico

Radar usando Arduino e sensor ultrassônico é um projeto muito bom no ramo eletrônico. Ele pode detectar qualquer objeto no caminho com a ajuda de um sensor ultrassônico. Sensores ultrassônicos giram sobre o servo motor e cobrem quase todas as direções em movimento rotatório. Existe um software de processamento que torna isso possível. O sensor ultrassônico é muito útil em muitos projetos eletrônicos. ele usa em medição de distância e detecção de objetos. Sistema de radar usando o sensor ultrassônico para detectar o objeto na frente do sensor. e o servo motor ajuda a cobrir a distância girando lentamente.

Neste projeto do Arduino Radar, vamos compartilhar todas as instruções e código, um circuito pelo qual você pode fazer o projeto sozinho. O radar Arduino é um projeto muito atraente e famoso em eletrônica e pode ser feito em grandes projetos. embora seja apenas para fins de aprendizagem, não podemos usar este projeto no produto também.

 

O que é isso?

Como mencionei no parágrafo acima, o projeto do detector de radar Arduino é popular hoje em dia e agora vamos entender o que realmente é. É como um mini-radar que reconhece o objeto no caminho e cria uma área afetada vermelha perto do objeto. então, isso é chamado de radar e funciona na frequência ultrassônica. consiste em sensor ultrassônico montado sobre o servo motor e conectado a um software que mostra o resultado na tela do computador. a interface deste software é praticamente a mesma da interface do Radar.

 

Como funciona o Radar usando o Arduino?

O sensor ultrassônico gira com o servo motor e transmitiu as ondas ultrassônicas durante esse tempo. e o tempo todo uma interface gráfica feita no software de simulação. e se algum objeto ficar sob o alcance do sensor ultrassônico, ele começará a detectar o objeto. nesse momento, a interface do gráfico dentro do software torna-se vermelha na área do objeto. O sensor ultrassônico funciona como um detector de objetos neste projeto. Radar com sensor ultrassônico funciona em software e faz a reação de acordo com as ondas recebidas.

Sensores ultrassônicos têm dois terminais, um é um transmissor e outro é o receptor. o terminal do transmissor é conhecido como Trigger e o terminal do receptor é conhecido como eco. O Arduino continuamente dá um comando para o servo motor girar. e o transmissor transmite o sinal paralelamente da mesma forma que o software também faz o gráfico. O sensor ultrassônico deu um sinal diferente para o Arduino se alguma coisa aparecer no caminho. então, o Arduino notifica o software da região afetada. o projeto depende do funcionamento do sensor ultrassônico. Radar usando Arduino, sensor ultrassônico e conteúdo do servo motor sem outros componentes principais. também forneceremos o link do processing software abaixo.

Componentes necessários:

  • Arduino Uno
  • Servo motor
  • Processing Software
  • ProtoBoard
  • Fios de Jumper
  • Cabo de Arduino

 

Diagrama de circuito do Arduino Radar

 

Código Arduino para radar ultrassônico

//Inclui a biblioteca Servo
#include <Servo.h>.   
//Define os pinos Tirg e Eco do sensor ultrassônico
const int trigPin = 10;  
const int echoPin = 9;  
//Variáveis de duração e distância
long duration;  
int distance;  
Servo myServo; //Cria um objeto servo para controlar o servo motor

void setup() {  
 pinMode(trigPin, OUTPUT); //Define o trigPin como uma saída
 pinMode(echoPin, INPUT); //Define o echoPin como uma entrada
 Serial.begin(9600);  
 myServo.attach(3); //Define em qual pino está o servo motor conectado
}  

void loop() {  
 // gira o servo motor de 15 a 165 graus
 for(int i=15;i<=165;i++){   
   myServo.write(i);  
   delay(30);  
   distance = calculateDistance();//Chama uma função para calcular a distância medida pelo sensor ultrassônico para cada grau
   Serial.print(i); //Envia o grau atual para a porta serial 
   Serial.print(","); //Envia o caractere de adição próximo ao valor anterior necessário posteriormente no IDE de processamento para indexação 
   Serial.print(distance); //Envia o valor da distância para a porta serial
   Serial.print("."); //Envia o caractere de adição próximo ao valor anterior necessário posteriormente no IDE de processamento para indexação
 }  
 //Repete as linhas anteriores de 165 a 15 graus
 for(int i=165;i>15;i--){   
   myServo.write(i);  
   delay(30);  
   distance = calculateDistance();  
   Serial.print(i);  
   Serial.print(",");  
   Serial.print(distance);  
   Serial.print(".");  
 }  
}  

//Função para calcular a distância medida pelo sensor ultrassônico
int calculateDistance() {   
  digitalWrite(trigPin, LOW);   
  delayMicroseconds(2);  
  //Define o trigPin no estado HIGH por 10 micro segundos
  digitalWrite(trigPin, HIGH);   
  delayMicroseconds(10);  
  digitalWrite(trigPin, LOW);  
  duration = pulseIn(echoPin, HIGH); //Lê o echoPin, retorna o tempo de viagem da onda sonora em microssegundos
  distance= duration*0.034/2;  
  return distance;  
}

Agora você tem que baixar um software de processamento do link fornecido (baixar software)

Aqui, estamos compartilhando o código de processamento que você deve enviar para o software.

nota:  Você precisa mencionar a porta no código do software de processamento fornecido a seguir. em qual porta seu Arduino se conectou, você precisa mencionar a mesma porta.

Código Processing software

import processing.serial.*; // importa biblioteca para comunicação serial
import java.awt.event.KeyEvent; // importa biblioteca para ler os dados da porta serial
import java.io.IOException;  
Serial myPort; // define o Serial do Objeto  

// define variáveis
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); // ***ALTERE ISSO PARA SUA RESOLUÇÃO DE TELA***  
  smooth();  
  myPort = new Serial(this,"COM11", 9600); // inicia a comunicação serial
  myPort.bufferUntil('.'); // lê os dados da porta serial até o caractere '.'. Na verdade, lê-se assim: ângulo, distância.
}  

void draw() {  
  fill(98,245,31);  
  // simulando borrão de movimento e desvanecimento lento da linha em movimento
  noStroke();  
  fill(0,4);   
  rect(0, 0, width, height-height*0.065);   
  fill(98,245,31); // color verde
  // chama as funções para desenhar o radar
  drawRadar();   
  drawLine();  
  drawObject();  
  drawText();  
}  

void serialEvent (Serial myPort) { // começa a ler os dados da porta serial
  // lê os dados da porta serial até o caractere '.' e o coloca na variável String "data".
  data = myPort.readStringUntil('.');  
  data = data.substring(0,data.length()-1);  
  index1 = data.indexOf(","); // encontre o caractere ',' e o coloque na variável "índice1"
  angle= data.substring(0, index1); // leia os dados da posição "0" para a posição da variável index1 ou esse é o valor do ângulo que a placa Arduino enviou para a porta serial
  distance= data.substring(index1+1, data.length()); // leia os dados da posição "índice1" até o final dos dados por esse valor da distância
  // converte as variáveis String em Inteiro
  iAngle = int(angle);  
  iDistance = int(distance);  
}  

void drawRadar() {  
  pushMatrix();  
  translate(width/2,height-height*0.074); // move as coordenadas iniciais para o novo local
  noFill();  
  strokeWeight(2);  
  stroke(98,245,31);  
  // desenha as linhas do arco
  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);  
  // desenha as linhas do ângulo
  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); // move as coordenadas iniciais para o novo local
  strokeWeight(9);  
  stroke(255,10,10); // color vermelha
  pixsDistance = iDistance*((height-height*0.1666)*0.025); // cobre a distância do sensor de cm a pixels
  // limitando o intervalo a 40 cms
  if(iDistance<40){  
    // desenha o objeto de acordo com o ângulo e a distância
    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); // move as coordenadas iniciais para o novo local
  line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle)));// desenha a linha de acordo com o ângulo
  popMatrix();  
}  

void drawText() { // desenha os textos na tela
  pushMatrix();  
  if(iDistance>40) {  
    noObject = "Fora de alcance";  
  } else {  
    noObject = "Na faixa";  
  }  
  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("CapSistema ", width-width*0.875, height-height*0.0277);  
  text("Ângulo: " + iAngle +" °", width-width*0.48, height-height*0.0277);  
  text("Distância: ", 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();   
}

 

Tudo de bom para o projeto. se você ficou em algum lugar, pode perguntar em um comentário.