实现效果:
启动程序,检测当前传感器与最前方物理的距离,当距离小于1米时点亮led灯进行提示。
一 原理:
对于距离计算通常可是使用声速*时间来计算,因此X(距离)=V(速度)*T(时间)。由于声速时已经确定的常量数据34300cm/s,
因此我们只需要计算好时间即可计算出测试距离,这里时间测量是从发出声波脉冲和收到声波脉冲之间的时间间隔。例如传感器从A发出声波,经过T1时间到达目标B点,声波在B点被反射并且在T2时间返回A 点的传感器,因此传感器测量的实际时间是T=T1+T2,而我们测量A点到B点,时间只需要(T1+T2)/2.因此得出最终的计算公式:X=17150*T
二 准备:
1.HC-SR04型号超声波传感器。
2.330欧姆,1千欧和2千欧电阻各一个。
3.母对公跳线和母对母条线若干。
4.LED灯一个。
5.面包版以及树莓派主板。
三 步骤:
1.绘制简易电路图
2.准备面包版
3.将树莓派第6号针脚(GND)和面包版的接地线连接(负极线),并且传感器GND针脚连接到同一行上。
4.将出发引脚P23号针脚连接到传感器的Trig阵脚(发射脉冲开关)
5.从P24号针脚引出线连接到面包版上,传感器Echo针脚(输出)连接一个1千欧电阻(为了降压)和一个2千欧的电阻,P24号为信号
输入阵脚连接到 第一个电阻和第二个电阻之间。从Echo引出的线2千欧姆电阻另一段连接地线(GND).
6.将P17号针脚连接到面包版上,并且串联一个330欧姆电阻降压,顺序连接LED灯,led灯负极连接到GND地线。
7.将+5v电压针脚连接到面包版上,并且连接到传感器的VCC针脚上。
四 HC-SR04图:
五 简易电路图:
我们这里以p23号阵脚为信号输出,p24号为信号输入,p17为输出。
六 编码(使用python):
import RPi.GPIO as GPIO
import time
TRIG = 23
ECHO = 24
LED=17
#设置当前阵脚为bcm模式
GPIO.setmode(GPIO.BCM)
print "Measuring Distence!"
print "press ctrl+c to stop me!"
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(LED,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
time.sleep(0.02)
GPIO.output(LED,False)
GPIO.output(TRIG,False)
print "setting trigger pin to zero by default!"
time.sleep(1)
#触发超声波传感器,向传感器发出10us的脉冲
GPIO.output(TRIG,True)
time.sleep(0.00001)
GPIO.output(TRIG,False)
try:
#输出阵脚为低电平记录开始时间
while GPIO.input(ECHO) == 0:
pass
start_time = time.time()
#当输出阵脚为高电平,表示有返回,记录结束时间
while GPIO.input(ECHO) == 1:
pass
end_time = time.time()
#计算时间差以及距离
time=end_time - start_time
distance=17150*time
print "this distance:",distance,"cm"
#如果距离小于1米则点亮led灯
if distance<=1*100:
print "this distance <=100cm"
GPIO.output(LED,True)
time.sleep(0.5)
GPIO.output(LED,False)
except Exception:
print "error!"
finally:
#务必记得清理使用完以后,否则下次在使用阵脚时提示已经被占用
GPIO.cleanup()