第19章 超声波测距实验
第十九章 超声波测距实验
1. HC-SR04介绍
HC-SR04 超声波传感器是一款测量距离的传感器。 其原理是利用声波在遇到障碍物反射接收结合声波在空气中传播的速度计算的得出。 在测量、 避障小车,无人驾驶等领域都有相关应用。
模块外形如下所示:
管脚功能定义: VCC: 供电电源; Trig: 触发信号; Echo: 反馈信号; GND: 电源地
模块主要参数:
-
工作电压: 3-5.5V 宽电压供电
-
工作电流: <20mA
-
测量距离: 2cm-450cm
-
测量精度: 0.5cm
-
通信接口: IO 数字接口
超声波传感器模块使用两个 IO 口分别控制超声波发送和接收, 工作原理如下:
1、 给超声波模块接入电源和地;
2、 给脉冲触发引脚(trig) 输入一个长为 10us 的高电平方波;
3、 输入方波后, 模块会自动发射 8 个 40KHz 的声波, 与此同时回波引脚(echo) 端的电平会由 0 变为 1; (此时应该启动定时器计时)
4、 当超声波返回被模块接收到时, 回波引 脚端的电平会由 1 变为 0; (此时应该停止定时器计数) , 定时器记下的这个时间即为超声波由发射到返回的总时长;
5、 根据声音在空气中的速度为 340 米/秒, 即可计算出所测的距离。
HC-SR04 超声波模块工作时序图如下:
2. 硬件设计
本实验使用到硬件资源如下:
-
HC-SR04模块
-
ESP32 GPIO
本章实验使用 ESP32 的 IO4、 27 引脚, 接线如下所示:
3. 软件设计
3.1 MicroPython函数使用
MicroPython 固件库内并没有集成 HC-SR04 模块, 因此需要我们自己实现,对于不了解超声波测距原理及时序的用户来说, 要编写出驱动是困难的。MicroPython 拥有着庞大的用户群, 自然 HC-SR04 模块也有开源的代码, 直接拿过来使用即可, 这就是使用 MicroPython 开发的高效之处, 市面上常见的模块在网上几乎都可以找到相应的模块代码
使用方法如下:
3.2 代码分析
from machine import Pin
import time
from hcsr04 import HCSR04
hcsr04 = HCSR04(trigger_pin = 4, echo_pin = 27) # 定义超声波传感器控制对象
if __name__ == '__main__':
while True:
distance = hcsr04.distance_cm() # 获取距离值
print("距离是:%.2f CM" % distance)
time.sleep(1) # 延时1秒
2024.8.23 第一次修订,后期不再维护