天天看点

超声波测距实验​

1.模块基本介绍​

1.1硬件准备​

(1)烧录好的树莓派4B开发板​

超声波测距实验​

图1 树莓派4B及其GPIO

(2)树莓派智能机器人拓展板和7.4V供电电池各一块(非必需)​

超声波测距实验​

图2 树莓派智能机器人拓展板、7.4V供电电池实物图

(3)SR超声波测距模块一个,杜邦线4根​

超声波测距实验​

图3 SR超声波测距模块、杜邦线实物图​

(4)10cm直尺一个(测距测试辅助工具,非必需)​

1.2 超声波测距模块及其与树莓派的连接​

需参考图1 树莓派4B及其GPIO​

超声波测距实验​

图4 SR超声波测距模块简介(来源:众灵科技)

超声波测距实验​

图5 超声波测距模块与树莓派接线示意图(来源:CSDN 素锦流年つ)

1.3 整体连接架构​

超声波测距实验​

图6 整体连接架构图​

超声波测距实验​

图7 整体连接实物图​

2. 实验原理和代码​

2.1 超声波测距原理​

超声波测距的基本原理是根据发射器发送超声波和接收器接收超声波的时间差计算距离的。超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。​

超声波在空气中的传播速度为340m/s,根据计时器记录的时间t(秒),可以计算出发射点距障碍物的距离s=340t/2。​

2.1 实验源码(python)​

import RPi.GPIO as GPIO    #引入RPi.GPIO库函数命名为GPIO,操作树莓派GPIO
import time

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)         #将GPIO编程方式设置为BCM模式,基于GPIO引脚编号

#接口定义
TRIG = 5               #GPIO5, 超声波模块TRIG口连接树莓派Pin29
ECHO = 6                    #GPIO6, 超声波模块ECHO口连接树莓派Pin31
# 输出模式
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)

# 超声波测距函数
def Distance_Ultrasound():
    GPIO.output(TRIG,GPIO.LOW)    # 输出口初始化置LOW(不发射)
    time.sleep(0.000002)
    GPIO.output(TRIG,GPIO.HIGH)       # 发射超声波
    time.sleep(0.00001)
    GPIO.output(TRIG,GPIO.LOW)    # 停止发射超声波
    while GPIO.input(ECHO) == 0:
        emitTime = time.time()    # 记录发射时间
    while GPIO.input(ECHO) == 1:
        acceptTime = time.time()   # 记录接收时间
    totalTime = acceptTime - emitTime     #计算总时间
    distanceReturn = totalTime * 340 / 2 * 100     #计算距离(单位:cm)
    return  distanceReturn       # 返回距离

#测距测试函数
def test():
    print("超声波测距系统运行中,按Ctrl+C退出...")
    while True:
        try:
            dis = Distance_Ultrasound()
            print("距离 ", dis, "cm")
            time.sleep(0.5)
        except KeyboardInterrupt:
            print('stop')
            break


if __name__ == '__main__':
    test()      

3. 实验过程及结果​

启动树莓派,使用VNC连接树莓派桌面,运行编写好的代码,查看测距效果

超声波测距实验​

图8 实验演示图

超声波测距实验​

图9 10cm直尺实物图