用arduino制做超声波雷达
布布卡2013/08/22电子技术 IP:河北
先看这贴
[创新资料]自制USB雷达 ------------ 架设你自己的导弹防御系统
XXXXXXXXXXXXXXXXXXXXXXXX/t/54197
之后查找了资料 发现有processing编写的上位机






于是:
所需材料:arduino控制板(mini版需要转usb)、步进电机及驱动板 、SR04之类的超声波测距模块、电脑一台。
130822-130548.jpg 130822-130703.jpg 130822-130638.jpg








  arduino说明:
vcc 接D2           TRIG接 D3         ECHO接 D4            GND接D5
捕获5.png
程序不带步进电机部分(我手头的电机很奇怪 五根线 测量其电阻关系很奇葩。。你要按情况加上)












上位机程序用的processing(你可以不下载processing,我编译出来windows 32的可执行程序)
串口发来一个信号扫描一帧 所以最好用步进电机
串口要是用我编译好的需要改成最靠前的串口。图上的com4是对于我机子而言的
















捕获3.png
捕获7.png







固定模块手渐渐远离






捕获.png




文件   捕获6.png
捕获2.png
+400  科创币    game00over    2013/08/22 好帖!!
+25  科创币    badboy-fly    2013/08/22
+200  科创币    ms1175555    2013/08/22 高质量发帖
+25  科创币    delete    2013/08/22 不懂编程,但看起来十分实用。
+25  科创币    yurifreeman    2013/08/22 好东西!!
来自:电子信息 / 电子技术
37
1
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
badboy-fly
11年5个月前 IP:未同步
562681
我觉得导弹防御就免了。。。。。做一个雷达防半夜查房的老妈和老师最好是可以连接手机用。。不用电脑
+10
科创币
奇侠
2013-08-22
好主意~
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
562684
arduino






串口发数据要用 Serial.write!!








processing






下载 5.44 MB 百度网盘 :
在等几分钟
还是算了 论坛上传 百度网盘 115网盘都不能上传。。。
需要java支持
processing下载
  XXXXXXXXXXXXXXXXXXXX/share/link?shareid=1480590828&uk=3608661149
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
562690
回 1楼(badboy-fly) 的帖子
红外热式传感器 +315收发(接口需要用俩三极管转换电平)+你想要的[s:274]
成本低
或者直接红外激光来回反射 再返回来(隐蔽)
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
badboy-fly
11年5个月前 IP:未同步
562743
回 3楼(布布卡) 的帖子
问题是手机的软件。。。是个难题啊!我不会说我现在还不会编程。。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
xldfs
11年5个月前 IP:未同步
562744
arduino——这个翻译成中文是不是  安卓 的意思啊?
+1
科创币
布布卡
2013-08-22
Android=Arduino??安卓=阿杜伊诺??
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
562756
回 4楼(badboy-fly) 的帖子
用手机不一定是最好的方案 1传输问题(距离 成本等等)2体积安装隐蔽性 3待机时间 4丢失成本5手机系统。。。。。。
如果用红外热释传感器+315遥控(不对码 发射端用一个较高频率的音频振荡器调制)   感应到后接收端收到震荡信号 放大后给喇叭(音量 频率调好后穿透力极弱 可以达到门外听不见。。年龄大对高频不感冒)             成本低      可多间宿舍“共享”[s:274]


processing 可以编译出安卓程序
XXXXXXXXXXXXXXXXXXXXXXXXXX/w/Android(研究了一段时间也没研究明白[s:275]) 以processing android可以搜出一大些相关资料
具体安卓上只干过用蓝牙串口通信( 这个十分简单 就是 arduino上接上蓝牙模块 安卓上打开蓝牙串口软件 选好端口。。之后发送接收数据。。[s:275] )可以到安卓开发论坛问问 XXXXXXXXXXXXXX
另外编程还是简单学学 很有意思 比如上面这个程序 其实就是画直线和红点 。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
badboy-fly
11年5个月前 IP:未同步
562757
回 6楼(布布卡) 的帖子
我的想法是不是这样啊……我是想以那个火箭弹为基础将电脑监控移到手机上……然后去掉发射台用来做雷达监控周围移动的物体……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
562767
回 7楼(badboy-fly) 的帖子
这个东西现在只是玩具级。。超声测距没精度没速度的 上午买了片线性ccd 尝试做激光测距 (同样做好后一改就成二维激光雷达)
移到手机上  应该是可以的 不过我没成功(需要下的软件挺多)现在在安卓模式出错。
捕获.png
+1
科创币
yurifreeman
2013-08-23
android的要有SDK才行。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
badboy-fly
11年5个月前 IP:未同步
562773
回 8楼(布布卡) 的帖子
哇!感觉好复杂啊!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yurifreeman
11年5个月前 IP:未同步
562849
话说我的步进电机也是5根线的..........
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563294
回 10楼(yurifreeman) 的帖子
驱动成功了  随便接上就转了。。
安卓上也尝试了一下 编了个小程序运行了(按照XXXXXXXXXXXXXXXXXXXXXXXXXX/w/Android一步步操作) 但是不能用串口。。。晕死 晕死。。。
+40
科创币
badboy-fly
2013-08-24
加油啊!
+10
科创币
yurifreeman
2013-08-24
加油
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yurifreeman
11年5个月前 IP:未同步
563332
我也做了个试了一下,但是不知为什么processing运行时没有出现图上的那个绿圈..........
代码完全是复制粘贴过去的,应该没问题,但是为什么会出现这种情况?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563334
回 12楼(yurifreeman) 的帖子
截图   processing下方 选对com口了吗?
捕获.png
将com口对应编号写在代码里
另外arduino串口发送数据时才能不断绘图
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563338
现在尝试激光雷达 先要完成激光测距模块 先要完成线阵ccd模块 先要完成ccd的电路
搭好了电路 下一步尝试用一片51单片机产生时钟信号并完成信号二值化   130824-181931.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yurifreeman
11年5个月前 IP:未同步
563345
回 13楼(布布卡) 的帖子
额................确实搞错了.............
又试了一下,不知为何达不到图上的效果,distance的那个地方一直是0
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563349
回 15楼(yurifreeman) 的帖子
arduino部分咋么布置的?安装测距模块了吗?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563351
回 15楼(yurifreeman) 的帖子
要不然现将arduino中最后面的 Serial.write(echocm);  改为 XXXXXXXXXintln(echocm);    先用自带的串口查看是否返回正确的距离值(单位厘米)
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yurifreeman
11年5个月前 IP:未同步
563358
回 16楼(布布卡) 的帖子
照着图上装的。后来想测试一下模块是不是坏了,但是以前编的程序找不着了........... [s:275]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yurifreeman
11年5个月前 IP:未同步
563362
回 17楼(布布卡) 的帖子
用此方法试过了,distance卡在48就不动了.........
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563372
回 19楼(yurifreeman) 的帖子
刚才出去了趟
卡在48就不动了,1你是用的什么程序看的  2你的源代码发上来我看一看
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yurifreeman
11年5个月前 IP:未同步
563375
回 20楼(布布卡) 的帖子
1:processing
2:arduino代码,自己稍改了一下
const int TrigPin = 3;
const int EchoPin = 4;

float SR04cm;
float m;
float dis=0;
float dis2=0;
float SR04()
{
      digitalWrite
      (TrigPin, LOW);
      delayMicroseconds(2);  
      digitalWrite(TrigPin, HIGH);
      delayMicroseconds(12);
      digitalWrite(TrigPin, LOW);  
      SR04cm = pulseIn(EchoPin, HIGH) / 58.00; //算成厘米 //
      SR04cm = (int(m * 100.0)) / 100.0; //保留两位小数
      delayMicroseconds(2);return SR04cm;}
void setup()
{
      XXXXXXXXXgin(9600);  
      pinMode(TrigPin, OUTPUT);
      pinMode(EchoPin, INPUT);
}
void loop()
{
      int echocm=SR04();
      XXXXXXXXXintln(echocm);
      delay(10);
}

processing代码,没改过

import XXXXXXXXXXXXXrial.*;
Serial myPort=new Serial(this, XXXXXXXXXst()[1], 9600);

float r=250;
float a=0;
float x, y;
void setup()
{  
     size(600, 600);  
     background(0);  
     smooth();  
     stroke(255);  
     frameRate(100);  
     println(XXXXXXXXXst());
}
void draw()
{  
     displayX();  
     displayY();  
     fill(0,3);  
     noStroke();  
     rect(0, 0, width, height);  
     x=r*cos(a);  
     y=r*sin(a);  
     if (myPort.available()>0)
     {    
         int data;    
         data=XXXXXXXXXad();      
         fill(255);    
         text("DISTANCE:", 30, 50);    
         text(data, 100, 50);    
         stroke(0, 200, 0);    
         strokeWeight(4);    
         line(width/2, height/2, width/2+x, height/2+y);//步进电机转一下,扫描线转一下    
         a=a+0.0124;//弧度增加    
         if (data<=50)
         {      
            stroke(255, 0, 0);      
            strokeWeight(10);      
            float locx, locy;      
            locx=5*(data-1)*cos(a);      
            locy=5*(data-1)*sin(a);      
            point(width/2+locx, height/2+locy);    
          }  
      }
}
void displayX()
{  
     for (int i=-250;i<300;i+=50)
     {    
         fill(255);    
         if (i<=0)      
           text(i, i+300, 300);    
         else      
           text(i, i+285, 300);  
      }
}
void displayY()
{  
      for (int i=250;i>=-250;i-=50)
      {    
          if (i!=0)
          {      
              fill(255);      
              text(i, 300, 300-i);    
           }  
       }
}
截图:
QQ图片20130824204751.jpg



引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563381
回 21楼(yurifreeman) 的帖子
arduino 的源代码有问题复制时估计 “//”错位了。。

之后有个变量m 在SR04中重写了上一句的数值(保留两位小数那句)
用这个(直接在processing用)
attachment icon SR04.zip 0.41KB ZIP 66次下载
+5
科创币
yurifreeman
2013-08-24
ok了。多谢。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
yurifreeman
11年5个月前 IP:未同步
563392
ok了。多谢。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563401
回 23楼(yurifreeman) 的帖子
其实是我粘代码时格式出了点问题 粘乱了  现在编辑了。删了些调试时留下的无用语句
ps 论坛上传好慢。。。5mb文件传不上来 我用的无线网络 难道无线网络上传很慢?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563403
关于步进电机(用6 7 8 9口) 要在setup()中加入

for(int i=6;i<=9;i++)
   {
     pinMode(i,OUTPUT);
   }
  
      for(int i=6;i<=9;i++)
   {
      digitalWrite(i,1);
   }
}
再在 loop() 中加入步进一步的代码
for(int i=6;i<=9;i++)
    {
       digitalWrite(i,0);
       delay(5);  //改小了电机快 但太小了就成震动了。。
       digitalWrite(i,1);
      
     }
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563430
电机接线图
235029zpovx7f1b4rsw7yb.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
gurite
11年5个月前 IP:未同步
563478
[s:313]是不是只有3米的范围
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563501
回 27楼(gurite) 的帖子
这个看测距模块 并且要在程序中改数值
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
奇侠
11年5个月前 IP:未同步
563509
Re:回 28楼(布布卡) 的帖子
引用第28楼布布卡于2013-08-25 11:26发表的 回 27楼(gurite) 的帖子 :
这个看测距模块 并且要在程序中改数值  

考虑试试这个
XXXXXXXXXXXXXXXXXXXXXX/XXXXXXXm?spm=XXXXXXXXXXXXXXXXdF6B&id=13735440810&initiative_new=1
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年5个月前 IP:未同步
563512
回 29楼(奇侠) 的帖子
要精度和距离就用激光测距 2000左右  这种看过 学校里机器车使得就是这种( 不过是模拟输出0-5v 稳定性好200一个[s:275])
sr04 才六元。价格差16倍
注SR04参数:
探测距离:2cm-450cm    
精度:0.3cm
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
10班陈大葱22号
11年5个月前 IP:未同步
563520
超声波测距模块做不了雷达啊.. 那玩意测到是扇面内距离最近的物体的距离
除非用基恩士的300kHz频率超声波的那种,声波扩散角只有1度左右,不过测的距离就近很多,量程只有1m
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
布布卡作者
11年4个月前 IP:未同步
563995
回 31楼(10班陈大葱22号) 的帖子
大体玩玩可以的 的确有时还发生声波反射不回来的问题          
另外lcd现在还没驱动 arduino太慢。。4017分频波形也有问题
想用stm32(放学校了[s:275])jlink之前还烧了[s:273]。。后天开学[s:225]。。。作业没写[s:226]。。。
+25
科创币
wenrui
2013-08-27
真悲剧。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
茫羽
11年4个月前 IP:未同步
564369
回 5楼(xldfs) 的帖子
应该是安德鲁,前一阵子在学的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
boget8181
10年1个月前 IP:台湾
734560
可再给Processing的载点吗?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
3.14
10年1个月前 IP:四川
735295
好旧的贴。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
飞天狂想
10年0个月前 IP:广东
736402
引用 yurifreeman:
话说我的步进电机也是5根线的..........
5线 4相的···步进·
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
学员
8年7个月前 修改于 8年7个月前 IP:福建
819728
手机超声波processing代码
<code class="lang-text">// Proje Hocam - Radar Projesi
// Murat DURAN - V2
import processing.serial.*; // kütüphane entegresi
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 (1166, 500);
 smooth();
 myPort = new Serial(this,"COM3", 9600); // Com portunu se?in
 myPort.bufferUntil('.'); 
    
}
    
void draw() {
      
  fill(98,245,31);
    
  noStroke();
  fill(0,4); 
  rect(0, 0, width, 1010); 
      
  fill(98,245,31); // ye?il renk
    
  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(683,700); 
  noFill();
  strokeWeight(2);
  stroke(98,245,31);
  // draws the arc lines
  arc(0,0,1300,1300,PI,TWO_PI);
  arc(0,0,1000,1000,PI,TWO_PI);
  arc(0,0,700,700,PI,TWO_PI);
  arc(0,0,400,400,PI,TWO_PI);
  // draws the angle lines
  line(-700,0,700,0);
  line(0,0,-700*cos(radians(30)),-700*sin(radians(30)));
  line(0,0,-700*cos(radians(60)),-700*sin(radians(60)));
  line(0,0,-700*cos(radians(90)),-700*sin(radians(90)));
  line(0,0,-700*cos(radians(120)),-700*sin(radians(120)));
  line(0,0,-700*cos(radians(150)),-700*sin(radians(150)));
  line(-700*cos(radians(30)),0,700,0);
  popMatrix();
}
    
void drawObject() {
  pushMatrix();
  translate(683,700); 
  strokeWeight(9);
  stroke(255,10,10); // k?rm?z? renk
  pixsDistance = iDistance*22.5; 
  // 40 cm ye kadar ?l?er
  if(iDistance<40){ line(pixsdistance*cos(radians(iangle)),-pixsdistance*sin(radians(iangle)),700*cos(radians(iangle)),-700*sin(radians(iangle))); } popmatrix(); void drawline() { pushmatrix(); strokeweight(9); stroke(30,250,60); translate(683,700); line(0,0,700*cos(radians(iangle)),-700*sin(radians(iangle))); drawtext() if(idistance>40) {
  noObject = "Out of Range";
  }
  else {
  noObject = "In Range";
  }
  fill(0,0,0);
  noStroke();
  rect(0, 1010, width, 1080);
  fill(98,245,31);
  textSize(25);
  text("10cm",800,690);
  text("20cm",950,690);
  text("30cm",1100,690);
  text("40cm",1250,690);
  textSize(40);
  text("Object: " + noObject, 240, 1050);
  text("Angle: " + iAngle +" °", 1050, 1050);
  text("Distance: ", 1380, 1050);
  if(iDistance<40) {   text("        " + idistance +" cm", 1400, 1050);   }   textsize(25);   fill(98,245,60);   translate(390+960*cos(radians(30)),780-960*sin(radians(30)));   rotate(-radians(-60));   text("30°",0,0);   resetmatrix();   translate(490+960*cos(radians(60)),920-960*sin(radians(60)));   rotate(-radians(-30));   text("60°",0,0);   translate(630+960*cos(radians(90)),990-960*sin(radians(90)));   rotate(radians(0));   text("90°",0,0);   translate(760+960*cos(radians(120)),1000-960*sin(radians(120)));   rotate(radians(-38));   text("120°",0,0);   translate(840+900*cos(radians(150)),920-960*sin(radians(150)));   rotate(radians(-60));   text("150°",0,0);   popmatrix(); }< code></40)></40){></code>

attachment icon processing.test.processing2reference.1399111264416.zip 608.61KB ZIP 78次下载
arduinoradarboardprojehocam.png
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
布布卡
学者 机友 笔友
文章
100
回复
2384
学术分
4
2010/02/21注册,6天18时前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}