实验五 超声波传感器应用

实验五 超声波传感器应用


一、实验目的

通过本实验,熟悉供电模块提供不同电压电源的方法,熟悉超声波传感器的安装使用过程,掌握在Arduino项目中读取并在串口监视器中输出距障碍物距离的方法,并掌握通过蜂鸣器表现不同距离的实现过程。


二、实验要求

 1、使用供电模块(如图所示)、LED灯和导线搭建实验电路,测试不同输出电压点亮LED的不同亮度效果。

5-1供电模块

 2、使用ESP 8266电路板、超声波传感器(如图所示)、供电模块及导线搭建实验电路,编写Arduino程序代码,实现通过串口监视器显示障碍物离传感器的距离值。

5-2超声波传感器

 3、在第2步的实验中添加1个无源蜂鸣器(如图所示),修改实验代码,实现通过传感器获取到的距离值控制蜂鸣节奏的效果,模拟汽车倒车雷达。

5-3无源蜂鸣器


三、实验过程

 1、不同电压值对LED亮度的影响

1)将1个供电模块放置在面包板上,注意正负极必须与面包板电源总线的正负极一致,通过跳线将两侧输出电压分别设置为3.3V5V,使用9V电池供电(也可使用变压器将交流电源变为9V后供电)。分别放置2LED(为了实现对比效果,建议选用相同颜色)在面包板的两个区域,分别使用1K的电阻将面包板电源总线正极与LED正极相连,使用导线将面包板电源总线负极与LED负极相连。电路连接如图所示。

5-4实验电路连接图

2)打开供电模块的开关,观察2LED灯的亮度,发现输出电压为5VLED灯的亮度要大于输出电压为3.3VLED灯。

 2、通过串口监视器输出障碍物距离数值

1)拆除第1步中的LED、电阻及导线,将1个超声波传感器放置在面包板上,注意4个针脚必须位于不同的行,分别使用导线将传感器的VCC连接到面包板5V电源总线正极,将GND连接到5V电源总线负极,将Trig连接到电路板的D6GPIO12)接口,将Echo连接到电路板的D5GPIO14)接口。电路连接如图所示。

5-5实验电路连接图

2)在新建的Arduino程序窗口中输入如下代码:

//定义传感器针脚连接的电路板接口

#define TRIGGER 12

#define ECHO 14

void setup() {

  Serial.begin (115200);

  pinMode(TRIGGER, OUTPUT);

  pinMode(ECHO, INPUT);

}

void loop() {

  long duration, cm, inches;

  //先发送一个短的低脉冲,以保证数据准确性,再发送一个10微秒的高脉冲

  digitalWrite(TRIGGER, LOW);   

  delayMicroseconds(2);  

  digitalWrite(TRIGGER, HIGH);

  delayMicroseconds(10);  

  digitalWrite(TRIGGER, LOW);

  //从传感器获取从发送脉冲到遇到障碍物返回接收到的时间差

  duration = pulseIn(ECHO, HIGH);

  //将时间分别转换成厘米和英寸

  cm = (duration/2) / 29.1;

  inches = (duration/2) / 74;

  //输出结果

  Serial.print("The distance is: ");

  Serial.print(cm);

  Serial.println("cm");

  Serial.println(" OR ");

  Serial.print(inches);

  Serial.println("inches");

  delay(1000);

}

3)将USB线缆插入计算机,程序上传成功后打开供电模块开关,在Arduino的串口监视器窗口(修改波特率为115200)查看障碍物距传感器的距离值,通过改变障碍物的距离(在传感器前方移动手掌)观察数值的变化。结果如图所示。

5-6串口监视器输出实验结果

 3、通过障碍物距离控制蜂鸣器节奏

1)在第2步实验的基础上放置1个无源蜂鸣器在面包板上,注意3个针脚必须位于不同的行,分别使用导线将蜂鸣器的中间引脚连接到面包板的5V电源总线正极,将负极连接到面包板的5V电源总线负极,将标注了S的引脚连接到电路板的D3GPIO0)接口。电路连接如图所示。

5-7实验电路连接图

2)在新建的Arduino程序窗口中输入如下代码:

#define TRIGGER 12

#define ECHO 14

void setup() {

  Serial.begin (115200);

  pinMode(TRIGGER, OUTPUT);

  pinMode(ECHO, INPUT);

  pinMode(0,OUTPUT);

}

void loop() {

  long duration, cm;

  digitalWrite(TRIGGER, LOW);   

  delayMicroseconds(2);  

  digitalWrite(TRIGGER, HIGH);

  delayMicroseconds(10);  

  digitalWrite(TRIGGER, LOW);

  duration = pulseIn(ECHO, HIGH);

  cm = (duration/2) / 29.1;

  int pinBuzzer = 0; //定义蜂鸣器S针脚连接的电路板接口

  long frequency = 300; //频率,单位Hz

  //如果距离大于15cm,蜂鸣器不叫

  if(cm>15)  

    noTone(pinBuzzer); //停止发声

  //如果距离大于10厘米小于等于15厘米,蜂鸣器缓叫

  if(cm<=15 && cm>10){

    //tone()函数发出频率为frequency的波形

    tone(pinBuzzer, frequency);

    delay(500); //等待0.5

    noTone(pinBuzzer); //停止发声

    delay(500); //等待0.5

  }

  //如果距离大于5厘米小于等于10厘米,蜂鸣器急叫

  if(cm<=10&&cm>5){

    tone(pinBuzzer, frequency);

    delay(300);

    noTone(pinBuzzer);

    delay(300);

  }

  //如果距离小于等于5厘米,蜂鸣器长叫

  if(cm<=5){

    tone(pinBuzzer, frequency);

    delay(100);  

  }

}

3)将USB线缆插入计算机,程序上传成功后打开供电模块开关,通过改变障碍物的距离(在传感器前方移动手掌)控制蜂鸣器的节奏。

该实验的结果是:当障碍物距超声波传感器较远时(本例设置为15厘米以上),蜂鸣器不响,当缓慢移动靠近传感器时,蜂鸣器开始缓慢间断响起,距离越近,响起的节奏越快,直到长响,模拟汽车倒车雷达的效果。