在本次课程中中,我们将了解如何使用超声波传感器HC-SR04,了解它的工作原理以及学会如何与NodeMCU进行连接。当然了还能学会如何使用HC-SR04进行距离的测量。
在搭建电路之前,先来了解一下什么是HC-SR04传感器?
由名称可以知道,超声波传感器可以通过使用超声波来测量距离。传感器头发射超声波并接收从目标反射回来的波。超声波传感器通过测量发射和接收之间的时间来测量到目标的距离。当然,简单来说,超声波传感器是通过使用声波来测量物体的距离的装置。它通过发出特定频率的声波来测量距离,并等待该声波反弹。通过记录在产生的声波和声波反弹之间所花费的时间,可以计算传感器和物体之间的距离。
接下来我们开始来搭建硬件。
目录
步骤1:材料准备
需要准备的元器件清单:
硬件要求
NodeMCU开发板
HC-SR04(超声波传感器)
面包板
跳线
*USB连接线
软件要求
*Arduino IDE
接下来我们开始搭建电路。
步骤2:原理说明
HC-SR04规格
电源:5v DC
测距距离:2cm至500cm
超声频率:40k Hz
步骤3:使用HC-SR04
超声波模块到底是怎么运行的呢?
在使用之前我们必须弄清楚这个传感器的运行方法,因为传感器本身只是把它的“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
电路连接的方法如下:
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:开始编程
本节课程序:
[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:输出演示
程序下载进开发板之后就可以开始测试了
您可以在串行监视器中看到超声波传感器的读数。
后面,也可以测量物体的距离,大家自己尝试一下。
提示:您还可以将LED和蜂鸣器连接起来,当超声波测到的距离在什么范围时就LED亮起,蜂鸣器响。
步骤7:距离测量
距离测量的时候,哪一个卡片啥的在前面挡住就可以测出距离,可以使用钢尺量一下是否精确,不精确的话在程序上可进行相应的调整,想知道调整方法,可以在下面留言。
本节课程序:
//读取echoPin,返回声波行进时间(以微秒为单位)
duration = pulseIn(echoPin,HIGH);
这一行应该是
time = pulseIn(echoPin,HIGH);
感谢反馈! ✗咧嘴笑✗
楼主,为什么我的输出一直是0咧
HC-SR04 需要 5v电压
HC-SR04P 需要 3.3V – 5V电压
我们平时用的HC-SR04,把VCC连接到Nodemcu的vin口就可以工作啦
谢谢楼主
楼主,想问一下为什么我的上传后运行不了,需要拔了USB重新插入再看串口才行,而且上传后NODEMCU是不亮灯的,拔了USB重插后会亮一个灯
正常不会这样的,你的arduinoIDE版本会不会太低了,或者nodemcu是老款的还是cp2102新款的?