0°

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

image https://bbs.qutaojiao.com/assets/images/1-9NTJMCtUzdzlv9QW.jpeg

image https://bbs.qutaojiao.com/assets/images/1-BGLTiXV99tFVX6A2.jpeg

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

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

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

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

步骤1:材料准备

image https://bbs.qutaojiao.com/assets/images/1-Sl6v0Jbqgyzb9uLt.jpeg

需要准备的元器件清单:

硬件要求

NodeMCU开发板

HC-SR04(超声波传感器)

面包板

跳线

*USB连接线

软件要求

*Arduino IDE

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

步骤2:原理说明

image https://bbs.qutaojiao.com/assets/images/1-sS5WDANNdZwlM9fb.jpeg

image https://bbs.qutaojiao.com/assets/images/1-EkIZWsk87kCcdZ0v.jpegimage https://bbs.qutaojiao.com/assets/images/1-R5nX2ZkNDbsDNGTq.jpeg

image https://bbs.qutaojiao.com/assets/images/1-U4gheutBLcGPfW20.jpeg

HC-SR04规格

电源:5v DC

测距距离:2cm至500cm

超声频率:40k Hz

步骤3:使用HC-SR04

image https://bbs.qutaojiao.com/assets/images/1-rSPuuQIh8K94x2lD.jpeg

image https://bbs.qutaojiao.com/assets/images/1-au6dhN1eEm4ZCdO3.jpeg

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

在使用之前我们必须弄清楚这个传感器的运行方法,因为传感器本身只是把它的“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

image https://bbs.qutaojiao.com/assets/images/1-8EsNR1b2TvhRuGeO.jpeg

image https://bbs.qutaojiao.com/assets/images/1-NrTUyYpTnEbxdfRZ.jpeg

电路连接的方法如下:

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:开始编程

image https://bbs.qutaojiao.com/assets/images/1-CZfUetWfTMxohHUz.jpeg

image https://bbs.qutaojiao.com/assets/images/1-AdtN5zdFSAjK4K82.jpegimage https://bbs.qutaojiao.com/assets/images/1-UHfxEfOhgJuojwIZ.jpeg

本节课程序:

// 定义引脚编号
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);
}

步骤6:输出演示

image https://bbs.qutaojiao.com/assets/images/1-aUO7mE6KTla9doSn.jpeg

image https://bbs.qutaojiao.com/assets/images/1-BaNXeAYpcp7gmJy6.jpeg

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

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

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

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

步骤7:距离测量

image https://bbs.qutaojiao.com/assets/images/1-p6wEXd4KzJShTs6W.jpeg

image https://bbs.qutaojiao.com/assets/images/1-I3VFTdLZ5YkU8kH2.jpeg

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

本节课程序:

点击下载

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
5 条回复 A 作者 M 管理员
  1. //读取echoPin,返回声波行进时间(以微秒为单位)
    duration = pulseIn(echoPin,HIGH);
    这一行应该是
    time = pulseIn(echoPin,HIGH);

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

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

    • 谢谢楼主

欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论