News新闻中心
行业资讯 公司新闻
当前位置:南宁棋牌游戏 > 新闻中心 > 行业资讯 > 浅谈基于红外传感器的雷达设计

浅谈基于红外传感器的雷达设计

TIME:2020-10-23   click: 122 次    编辑:南宁棋牌游戏    当前栏目:行业资讯

Description:░□ら‖雷达通常在军事领域运用较多,民用方面也有很多,在此就不一一举例说明了。本次设计主要ぷ是想通过红外测距づ传感器配合单片机系统实现“雷达”硬件,通过异步串口通信░,本文发布时间:2020-10-23,关于【浅谈基于红外传感器的雷达设计】的文章内容即将呈现,预计花费您596秒时间

  □浅谈基于红外传感器的雷达设计ら‖

  雷达通常在军事领域运用较多,民用方面也有很多,在此就不一一举例说明了。

  本次设计主要ぷ 是想通过红外测距づ 传感器配合单片机系统实现“雷达”硬件,通过异步串口通信,将数据传输至PC,并通过Peocessing开发上位机“雷达”界面用以显示。

  在传感器的测试文档中,小楊通过矩形数量来显示传感器输出值。

  今天既然说是“雷达”,那小楊就模拟一个“雷达”界面。

  雷达硬件组成:

  老套路,发烟测试,通过最简单的方法实现で效果。

  SHARP的GP2Y0A21YK0F传感器性能稳定,好用不贵,且不需要再设计外围电路。

  那剩下的就是具备ADC+串口通信功能的单片机系统咯,出于最简单实现的初衷,小楊就用下面这款了:

  开发板兼容ArduinoIDE编程。不在这里过多赘述,相关信息请参阅工作室的其他文档。

  整体连接如下:

  忘了说,扫描こ 需要云台,就用舵机简单模え 拟一个,关于舵机控制,请参考:

  下面直接展示代码:

  // Visual Micro is in vMicro》General》Tutorial ぅMode

  //

  // Define User Types below here or use a .h file

  //

  #include が《Servo.h》。

  // Define せFunction び Prototypes that use User Types below here or use a .h file

  //// 初始化设置

  const ?int VoPin=14;

  long duraTIon;

  int distance;

  Servo myServo; // Creates → a servo object for controlling the servo motor

  int z Range_SHARP(){

  duraTIon=analogRead(VoPin);

  distance=(1024 - duraTIon)/10 - 50;

  return distance;

  }

  // The setup() ゆ funcTIon runs once each time the micro-controller starts

  void setup(){

  pinMode(VoPin, INPUT);

  Serial.begin(9600);

  myServo.attach(10);

  }§

  // Add the main program ぁ code into the continuous loop() function★

  void loop(){

  for(int @ i=15;i《=165;i++){

  myServo.write(i);

  distance=Range_SHARP();

  Serial.print(i);

  Serial.print(“,”);

  Serial.print(distance);

  Serial.print(“。”);

  delay(50);

  }

  for(int ♀ ¥ ▆ はi=165;i》15;i--){

  myServo.write(i);

  distance=Range_SHARP();

  Serial.print(i);

  Serial.print(“,”);

  Serial.print(distance);

  Serial.print(“。”);

  delay(50);

  }

  }123456789101112Φ 1314151617181920212223242526272…829303132333435363738394041424344454647484950515253

  完成了这些准备,下面就该上位机开发了。

  雷达上位机

  开发用到的软件:Processing,一款非常好用的交互上位机设计软件。

  上位机界面如下:

  不多说,直接上代码:

  import processing.serial.*;

  import ♂♀ へす java.awt.event.KeyEvent;

  import java.io.IOException;

  Serial ぇmyPort;

  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); //这个分辨率ま 自己根据你的电脑的配置和显示屏幕配置进行更改。

  smooth();

  myPort=new ┝ Serial(this,“COM7”, 9600); //这个串口号一定要更改。

  myPort.bufferUntil(‘。’);

  }

  void draw() {

  fill(98,245,31);

  noStroke();

  fill(0,4);

  rect(0, 0, width, height-height*0.065);

  fill(98,245,31);

  安卓棋牌下载大全drawRadar();

  drawLine();

  drawObject();

  drawText();

  }

  void serialEvent (Serial myPort) ∮ ┮{

  data=myPort.readStringUntil(‘。’);

  data=data.substring(0,data.length()-1);

  index1=data.indexOf(“,”);

  angle=data.substring(0, $ index1);

  distance=data.substring(index1+1, ▅ ば data.length());

  iAngle=int(angle);囍

  iDistance=int(distance);

  }

  void drawRadar() {

  pushMatrix();

  translate(width/2,height-height*※0.074);

  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);

  strokeWeight(9);

  stroke(255,10,10); // €

£ red color

  pixsDistance=iDistance*((height-height*0.1666)*0.025);

  if(iDistance《40){

  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);

  line(0,0ぺ ,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle)));

  popMatrix();

  }◆

  void ★ drawText() {

  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(28);

  text(“Object: ” + noObject, 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();

  }

相关文章推荐: