超声波测距代码_「科技宅」教你用超声波实现毫米级的精准测距,附送程序源码...

本文介绍了如何使用HC-SR04超声波测距模块进行非接触式距离测量,详细阐述了模块工作原理、驱动程序编写、接线方法以及效果测试。通过Python实现驱动代码,测量精度可达3mm。文章提供源码获取途径。
摘要由CSDN通过智能技术生成
e4993b5098a9885bf6e9eeb83be99bf8.gif

关注《高手杰瑞》获得更多好玩资讯!


初识HC-SR04超声波测距模块

超声波测距模块其实有很多种,其中HC-SR04是我们较为常见的一种型号,在这里我们使用HC-SR04超声波测距模块来实现我们的测距功能。HC-SR04支持2cm-400cm之间的非接触式距离测量功能,测量精度可以到达3mm!该模块集成了超声波发射器、接收器和其他控制电路等。

66bcc419821bc9fe0086d47377ca76d8.png

模块驱动方法:

TRIG口输出至少持续10us的高电平信号,在这之后模块内部控制电路将自动发送8个40khz的方波,并自动检测是否有信号返回,若有信号返回,模块ECHO将会输出一个高电平,持续时间就是超声波从发射到返回的时间。

下图为HC-SR04超声波模块的时序图:

43096d9ddda4e7143790a5d62a87d728.png

编写HC-SR04的驱动程序

按照上述的驱动方式,我们可以来编写HC-SR04的驱动程序。杰瑞在这里使用Python来编写HC-SR04的驱动程序,在编写之前我们的树莓派中必须要提前安装好RPi.GPIO库

按照惯例导入我们需要用到的库:

import RPi.GPIOimport time

设置树莓派IO口的编码方式为BCM,并屏蔽警告信息

GPIO.setwarnings(False)GPIO.setmode(GPIO.BCM)

定义TRIG、ECHO引脚。

#定义 GPIO引脚GPIO_TRIGGER = 23GPIO_ECHO = 24GPIO.setup(GPIO_TRIGGER, GPIO.OUT)GPIO.setup(GPIO_ECHO, GPIO.IN)

我们的准备工作做完了,接下来就按照上面的驱动方式来编写驱动代码:

1.向TRIG引脚输出持续10us的高电平信号

    #发送高电平信号给 trig引脚    GPIO.output(GPIO_TRIGGER, True)    #持续 10 us    time.sleep(0.00001)    GPIO.output(GPIO_TRIGGER, False)
  1. 计算超声波从发射到接收的时间
    start_time = time.time()    stop_time = time.time()        #记录超声波发送时刻    while GPIO.input(GPIO_ECHO) == 0:           start_time = time.time()        while GPIO.input(GPIO_ECHO) == 1:        stop_time = time.time()
  1. 利用公式计算距离(单位cm)
    #计算超声波返回的时间    time_elapsed = stop_time - start_time    #空气中声波的速度为 343m/s ,转化为 34300cm/s    distance = (time_elapsed * 34300) / 2
  1. 循环检测并输出测试得到的距离:
if __name__ == '__main__':    try:        while True:            dist = distance()            print("检测到物体距离{:.2f} cm".format(dist))            time.sleep(1)          # Reset by pressing CTRL + C    except KeyboardInterrupt:        print("Measurement stopped by User")        GPIO.cleanup()

接线方式

HC-SR04模块的VCC接树莓派的5伏VCC上,GND与树莓派GND相连,TRIG、ECHO分别于23、24号IO口连接。

49cec2723e6d88c59132eb21f1b45cf8.png
af8f40a147e59b22947a9c77b1b6d4b8.png

效果测试

先看一下整体连接效果图:

581a460202bc228e815ffbbf59ba2460.png

以下是程序运行测试出来的数据:

33e5cc2c68f5afc2787e34c7463b67b5.png

源码获取

关注《高手杰瑞》并转发,私信关键字:“超声波模块源码”即可获取源码!

文中需要用到的硬件设备如下:

HC-SR04超声波测距模块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值