-
VCC:超声波模块电源脚,接5V电源即可
-
Trig:超声波发送脚,高电平时发送出40KHZ出超声波
-
Echo:超声波接收检测脚,当接收到返回的超声波时,输出高电平
-
GND:超声波模块GND
测距原理:
-
树莓派向 Trig 脚发送一个 10us 的脉冲信号。
-
HC-SR04 接收到信号,开始发送超声波,并把 Echo置为高电平,然后准备接收返回的超声波。
-
HC-SR04 接收到返回的超声波,把 Echo 置为低电平。
-
Echo 高电平持续的时间就是超声波从发射到返回的时间间隔。
-
计算距离:
距离(单位:m) = (start - end) * 声波速度 / 2
声波速度取 343m/s 。
然后再把测得的距离转换为 cm。
距离(单位:cm) = (start - end) * 声波速度 / 2 * 100
= (start - end) * 17150
连接硬件:将HC-SR04模块连接到树莓派的GPIO引脚上。将HC-SR04的VCC引脚连接到树莓派的5V引脚,GND引脚连接到树莓派的地引脚,Trig引脚连接到树莓派的任意GPIO输出引脚(例如GPIO17),Echo引脚连接到树莓派的任意GPIO输入引脚(例如GPIO18)。
编写Python代码:创建一个新的Python脚本,例如distance_measurement.py,并输入以下代码:
import RPi.GPIO as GPIO
import timeGPIO.setmode(GPIO.BCM)GPIO_TRIG = 17
GPIO_ECHO = 18GPIO.setup(GPIO_TRIG, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)def distance():# 发送高电平信号到 Trig 引脚GPIO.output(GPIO_TRIG, True)# 持续 10 us time.sleep(0.00001)GPIO.output(GPIO_TRIG, False)# 高电平持续时间就是超声波从发射到返回的时间while GPIO.input(GPIO_ECHO) == GPIO.LOW: passstart_time = time.time()while GPIO.input(GPIO_ECHO) == GPIO.HIGH: passstop_time = time.time()# 计算距离 声波的速度为 34000cm/s。distance = ((stop_time - start_time) * 34000) / 2return distancewhile True:dist = distance()print("距离:{:.2f} cm".format(dist))time.sleep(1)