(五)nodemcu初级:利用超声波传感器测距

释放双眼,带上耳机,听听看~!

(五)nodemcu初级:利用超声波传感器测距

(五)nodemcu初级:利用超声波传感器测距

在本次课程中中,我们将了解如何使用超声波传感器HC-SR04,了解它的工作原理以及学会如何与NodeMCU进行连接。当然了还能学会如何使用HC-SR04进行距离的测量。

在搭建电路之前,先来了解一下什么是HC-SR04传感器?

由名称可以知道,超声波传感器可以通过使用超声波来测量距离。传感器头发射超声波并接收从目标反射回来的波。超声波传感器通过测量发射和接收之间的时间来测量到目标的距离。当然,简单来说,超声波传感器是通过使用声波来测量物体的距离的装置。它通过发出特定频率的声波来测量距离,并等待该声波反弹。通过记录在产生的声波和声波反弹之间所花费的时间,可以计算传感器和物体之间的距离。

接下来我们开始来搭建硬件。

步骤1:材料准备

(五)nodemcu初级:利用超声波传感器测距

需要准备的元器件清单:

硬件要求

NodeMCU开发板

HC-SR04(超声波传感器)

面包板

跳线

*USB连接线

软件要求

*Arduino IDE

接下来我们开始搭建电路。

步骤2:原理说明

(五)nodemcu初级:利用超声波传感器测距

(五)nodemcu初级:利用超声波传感器测距(五)nodemcu初级:利用超声波传感器测距

(五)nodemcu初级:利用超声波传感器测距

HC-SR04规格

电源:5v DC

测距距离:2cm至500cm

超声频率:40k Hz

步骤3:使用HC-SR04

(五)nodemcu初级:利用超声波传感器测距

(五)nodemcu初级:利用超声波传感器测距

超声波模块到底是怎么运行的呢?

在使用之前我们必须弄清楚这个传感器的运行方法,因为传感器本身只是把它的“ECHO”引脚保持在高电平,使之持续一段时间,这对应于从发送的波形到接收反射(回波)所花费的这一段时间。

模块发出一阵声波,同时向回声引脚施加电压。

该模块从声波接收反射并从回波引脚消除电压。

在测距的时候,超声波传感器中产生脉冲将数据发送到NodeMCU或任何其它的微控制器。

起始脉冲约为10us,基于距离的PWM信号将为150 us-25us。如果没有障碍物,则NodeMCU生成38us脉冲,以确认没有检测到物体。

在读取HC-SR04测的距离之前,得先了解如何计算距离的,这有一个公式。

公式:

Distance = 1/2×T×C

其中Distance是距离,T是发射和接收之间的时间,C是声速。

(该值乘以1/2,因为T是返回距离的时间。)

步骤4:连接HC-SR04

(五)nodemcu初级:利用超声波传感器测距

(五)nodemcu初级:利用超声波传感器测距

电路连接的方法如下:

HC-SR04传感器插到面包板

HC-SR04传感器Vcc连接到NodeMCU + 3.3v

HC-SR04传感器GND连接到NodeMCU GND

HC-SR04传感器Trig Pin连接到NodeMCU数字I / O D4

HC-SR04传感器Echo Pin连接到NodeMCU数字I / O D3

在开始编程之前,您需要安装Arduino IDE。

要在Arduino IDE中设置好NodeMCU的相关设置,不懂的可以回去看前面的课程。

步骤5:开始编程

(五)nodemcu初级:利用超声波传感器测距

(五)nodemcu初级:利用超声波传感器测距(五)nodemcu初级:利用超声波传感器测距

本节课程序:

[scu name=”arduino-ide-post” platform=”esp32:esp32:esp32″]

// 定义引脚编号
const int trigPin = 2;  //D4
const int echoPin = 0;  //D3

// 定义变量
long duration;
int distance;

void setup() {
    pinMode(trigPin, OUTPUT); // 将trigPin设置为输出
    pinMode(echoPin, INPUT); // 将echoPin设置为输入
    Serial.begin(9600); // 启动串行通信
}

void loop() {
    // Clears the trigPin
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    
    //将trigPin设置为HIGH状态10微秒
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
    
    // 读取echoPin,以微秒为单位返回声波传播时间
    duration = pulseIn(echoPin, HIGH);
    
    // 计算距离
    distance= duration*0.034/2;
    // 打印距离在串行监视器
    Serial.print("Distance: ");
    Serial.println(distance);
    delay(2000);
}
    

[/scu]

步骤6:输出演示

(五)nodemcu初级:利用超声波传感器测距

(五)nodemcu初级:利用超声波传感器测距

程序下载进开发板之后就可以开始测试了

您可以在串行监视器中看到超声波传感器的读数。

后面,也可以测量物体的距离,大家自己尝试一下。

提示:您还可以将LED和蜂鸣器连接起来,当超声波测到的距离在什么范围时就LED亮起,蜂鸣器响。

步骤7:距离测量

(五)nodemcu初级:利用超声波传感器测距

(五)nodemcu初级:利用超声波传感器测距

距离测量的时候,哪一个卡片啥的在前面挡住就可以测出距离,可以使用钢尺量一下是否精确,不精确的话在程序上可进行相应的调整,想知道调整方法,可以在下面留言。

本节课程序:

点击下载

给TA打赏
共{{data.count}}人
人已打赏
Nodemcu/ESP8266-基础

(四)NodeMCU初级:红外传感器的应用

2018-6-14 19:55:51

Nodemcu/ESP8266-基础

(六)nodemcu初级:湿度传感器的使用

2018-6-14 20:05:11

7 条回复 A文章作者 M管理员
  1. 太阳是我捏圆的@

    //读取echoPin,返回声波行进时间(以微秒为单位)
    duration = pulseIn(echoPin,HIGH);
    这一行应该是
    time = pulseIn(echoPin,HIGH);

  2. 致静

    楼主,为什么我的输出一直是0咧

    • Luca

      HC-SR04 需要 5v电压
      HC-SR04P 需要 3.3V – 5V电压
      我们平时用的HC-SR04,把VCC连接到Nodemcu的vin口就可以工作啦

    • Phantom

      谢谢楼主

  3. Starriest

    楼主,想问一下为什么我的上传后运行不了,需要拔了USB重新插入再看串口才行,而且上传后NODEMCU是不亮灯的,拔了USB重插后会亮一个灯

    • Luca

      正常不会这样的,你的arduinoIDE版本会不会太低了,或者nodemcu是老款的还是cp2102新款的?

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
'); })();