超声波传感器是一款测量距离的传感器。其原理是利用声波在遇到障碍物反射接收结合声波在空气中传播的速度计算的得出。在测量、避障小车,无人驾驶等领域都有相关应用。
通过python编程实现超声波传感器测距。
下图是一款市面上常用的HCSR04超声波模块:
模块参数 | |
---|---|
供电电压 | 3.3V~5V (核桃派需要使用支持3.3V的) |
测量距离 | 2cm~450cm |
测量精度 | 0.5cm |
引脚说明 | VCC : 接3.3VGND : 接地Trig : 发射引脚Echo : 接收引脚 |
超声波传感器模块使用两个IO口分别控制超声波发送和接收,工作原理如下:
下面是超声波传感器HCSR04的时序触发图:
我们可以任意使用2个普通GPIO口来连接超声波传感器,这里使用 PC9连接到Trig引脚, PC11连接到Echo引脚:
在CircuitPython中可以直接使用写好的Python库来获取超声波传感器测量的距离值。具体介绍如下:
sonar=adafruit_hcsr04.HCSR04(trigger_pin=board.PC9, echo_pin=board.PC11)
构建超声波模块对象,主要是初始化连接超声波传感器的2个引脚。
参数说明:
trigger_pin
开发板引脚编号。例:board.PC9;echo_pin
开发板引脚编号。例:board.PC11;value = sonar.distance
返回测量距离值,单位cm,数据类型为float
我们构建对象后就可以一直循环获取超声波距离信息了,代码编写流程如下:
'''
实验名称:HC-SR04超声波测距
实验平台:核桃派1B
'''
import time
import board
import adafruit_hcsr04
#构建超声波对象
sonar = adafruit_hcsr04.HCSR04(trigger_pin=board.PC9, echo_pin=board.PC11)
whileTrue:
try:
print('%.2f'%(sonar.distance)+' cm')#打印距离信息,单位cm,保留2位小数。
except RuntimeError:
print("Retrying!")
time.sleep(0.5)
将HC-SR04超声波传感器按下图连接到核桃派, PC9连接到Trig引脚, PC11连接到Echo引脚:
由于本例程代码依赖其它py库,所以需要将整个例程文件夹上传到核桃派:
发送成功后需要打开远程目录(核桃派)的py文件来运行,因为运行会导入文件夹里面的其它库文件,因此这类型代码在电脑本地运行是无效的。
这里使用Thonny远程核桃派运行以上Python代码,关于核桃派运行python代码方法请参考: 运行Python代码。运行成功后可以看到终端打印超声波传感器距离信息。
更多回帖