树莓派4B-Python-控制超声波模块

树莓派4B-Python-控制超声波模块

  • 超声波模块
  • 参数介绍
  • 工作原理
  • 与树莓派4B的连接
  • 代码

超声波模块

超声波模块为常用的HC-SR04型号,有四个引脚,分别为Vcc、Trig(控制端)、Echo(接收端)、GND,使用起来也比较简单。在树莓派最新官方系统Raspbian中都安装有一个比较好使用的GPIO库,名为“gpiozero”,它包含了许多模块的使用函数,直接调用就好,在许多情况下(仅本人觉得哈)比“RPi.GPIO”库好用且更简洁。
超声波

参数介绍

工作电压:5V
静态电流:<2ma
感应角度:<15°
检测距离:2-450cm
精度:3mm

工作原理

1.采用IO触发测距,通电后会保持低电平,当检测到障碍物后会变为高电平,高电平信号的时间至少要10us。
2.模块自动发送8个40Khz的方波,自动检测是否有信号返回。
3.检测障碍物距离的公式:高电平触发的时间 X 声音传播的速度340m/s / 2
(高电平持续的时间就是超声波从发射到返回的时间)

另外,理论上给超声波连接的线可以比较长的,但本人在==使用超过20cm的连接线后,发现超声波失灵了,检测不到障碍物,有时甚至是障碍物“无中生有”。==所以本人猜测是连接线过长时,电信号被其他连接线发出的电磁场所干扰,因此使Trig(控制端)和Echo(接收端)接收不到信号或被干扰。

然后呢,按理论(本人自己猜测的瞎想理论)来说,解决此现象的方法为:1.不适用常规的连接线,使用那种带有屏蔽保护的导线;2.使用常规连接线时,长度最好是20cm内,若还是有干扰就再缩短长度。

与树莓派4B的连接

树莓派4B-Python-控制超声波模块_第1张图片
红色:5V----Vcc
蓝色:GND----GND
黄色:GPIO14----Echo(接收端)
绿色:GPIO15----Trig(控制端)

代码

以下代码为超声波最简单的使用——测距。
由于使用gpiozero库的缘故,检测的默认最大距离为1m

from time import sleep
from gpiozero import DistanceSensor

dis = DistanceSensor(14, 15)    #定义超声波的引脚
while True:
    print('', dis.distance, 'm')
    sleep(0.01)

以下代码为检测到障碍物后点亮LED。

from gpiozero import DistanceSensor , LED
from signal import pause

sensor = DistanceSensor(14, 15, max_distance=1, threshold_distance=0.1)  # 设置超声波引脚和检测最大距离、最小距离
led = LED(13)  # 设置LED引脚

sensor.when_in_range = led.on  # 当障碍物进入检测范围时,LED点亮
sensor.when_out_of_range = led.off  # 当障碍物不在检测范围时,LED熄灭
pause()  # 暂停状态,状态发生变化时才会动作,并一直维持着

##2020.8.20
写在最后——若有不足之处还请各位大佬提出,谢谢!

你可能感兴趣的:(树莓派4B,python)