制作Arduino 超声波雷达

Posted by 橙叶 on Fri, Jul 27, 2018

关于这个用Arduino做超声波雷达的项目,我在Create Arduino上见过很多次,这里就自己做出来试试。 主要原理是利用超声波测距,然后使用Processing在屏幕上绘制出雷达图,总体比较简单。

成品

准备

硬件

[ssbluelist]

  • 舵机
  • 超声波模块 HC-SR04
  • Arduino
  • 杜邦线若干
  • 其它材料

[/ssbluelist]

软件

接线和安装

接线主要分两大部分:超声波模块和舵机。 超声波模块的针脚旁的标注很清晰,小心不要把GND和Vcc接反,否则可能会烧坏模块。 舵机有的没有标注接线方式,一般来说是:橙色-信号,红色-正极,棕色-接地。

接线很简单,有一点是Arduino上只有一个5v供电的插脚,可以借助面包板扩展。舵机有可能会因为电压不足转动比较吃力,可以考虑给Arduino接9v电源货给舵机单独供电。 最终要实现扫描功能,所以需要把超声波模块固定在舵机上,具体的实现就见仁见智了,这是我自己用木条+胶枪做的效果:

安装软件

先安装好前面提到的两款软件。 所有代码已经打包到网盘:百度网盘(代码来自:https://www.instructables.com/id/Arduino-RadarUltrasonic-Detector/) 解压后分别找到Arduino_Radar.ino和Arduino_Radar_Processing.pde。 在Arduino_Radar.ino里前一部分定义针脚等信息,里面的针脚是和前面的接线图对应的,如果你连到其它针脚上,需要在这里改一下。

#include<Servo.h>
const int soundTriggerPin = 2;   //Trig
const int soundEchoPin = 3;      //Echo
const int motorSignalPin = 12;   //舵机信号线
const int startingAngle = 15;    //初始角度
const int minimumAngle = 15;     //最小角度
const int maximumAngle = 165;    //最大角度
const int rotationSpeed = 1;     //旋转速度
…………

编译刷写到Arduino中,然后打开端口监视器,如果看到以下输出且舵机转动,说明代码工作正常:

接下来打开Arduino_Radar_Processing.pde,在Arduino_Radar_Processing.pde里需要修改一下串口的端口号,修改为Arduino正在使用的串口。

import processing.serial.*;
import java.awt.event.KeyEvent;
import java.io.IOException;

Serial myPort;
PFont orcFont;
int iAngle;
int iDistance;
void setup() {
size(1350, 760);
    smooth();

    myPort = new Serial(this, "COM5", 9600); //修改此处
    myPort.clear();
    myPort.bufferUntil('\n');
      orcFont = loadFont("OCRAExtended-30.vlw");
}
void draw() 
…………

修改完后点击左上方的开始键,启动程序,如果一切没有错误,可以看到: 如果白屏的话,需要切到编辑器,点击左上角的终止键,此时一般会在下方的红条上给出错误信息,按照错误信息修改(一般是串口错误导致)。

最终效果



comments powered by Disqus