树莓派与超声波测距

本次采用的是 HC-sr04 超声波测距模块



这个针脚,比较重要的是 trig(控制端)、  echo(接收端)
原理是控制端 给一个高电压,持续 0.01秒,然后读取接收端,计算接收的时间,然后按照声速来计算距离。
这个声速的距离一般按照 340米每秒来计算,这个是一个标准值,这个感应器,没有温度补偿,也就是里面会有误差,这个误差,要根据大家的实际情况来区分了。
import RPi.GPIO as GPIO
import time

SEND_PIN = 37
ECHO_PIN = 38
GPIO.setmode(GPIO.BOARD)
GPIO.setup(SEND_PIN,GPIO.OUT)
GPIO.setup(ECHO_PIN,GPIO.IN)
GPIO.output(SEND_PIN, GPIO.LOW)
time.sleep(1)
try:
        GPIO.output(SEND_PIN, GPIO.HIGH)
        time.sleep(0.001)
        GPIO.output(SEND_PIN, GPIO.LOW)
        
#接收返回电波
        while GPIO.input(ECHO_PIN)==False:
                pass
#这里记录时间,也就是echo pin 有数据来了<span style="white-space:pre">	</span><pre name="code" class="python"><span style="white-space:pre">	</span>t1=time.time()
while GPIO.input(ECHO_PIN): pass t2=time.time() t3 = t2-t1 print(t3) dis = t3*34000/2 print(dis)finally: GPIO.cleanup()


我测试的结果是,3cm以内,基本就测试部出来,但是这个感应器说是 2cm以内测试不出来,现在没找到原因,另外,大家可以找找高级一些的超声波模块,我发现过一个带温度补偿的,这样准备度会更好一些。

参考过 http://www.shumeipai.net/thread-20219-1-1.html?_dsign=f5542c7d


### 树莓派超声波测距传感器使用教程 #### 连接硬件 为了使树莓派能够利用超声波传感器完成距离测量的任务,需先连接好相应的硬件线路。超声波传感器模块配备有四个引脚:VCC(电源正极)、Trig(触发端口)、Echo(回响端口)以及GND(接地)。这些引脚应分别对应接到树莓派上的相应GPIO接口上[^1]。 #### 编写Python代码实现测距功能 编写一段简单的Python程序可以轻松地让树莓派读取来自超声波传感器的数据并计算目标物体到传感器之间的实际距离: ```python import RPi.GPIO as GPIO import time # 设置使用的BCM编号模式 GPIO.setmode(GPIO.BCM) TRIG_PIN = 23 # Trig引脚对应的BCM编号 ECHO_PIN = 24 # Echo引脚对应的BCM编号 def measure_distance(): GPIO.setup(TRIG_PIN, GPIO.OUT) GPIO.setup(ECHO_PIN, GPIO.IN) GPIO.output(TRIG_PIN, False) print("Waiting For Sensor To Settle") time.sleep(2) GPIO.output(TRIG_PIN, True) time.sleep(0.00001) # 发射超声波脉冲 GPIO.output(TRIG_PIN, False) while GPIO.input(ECHO_PIN)==0: pulse_start = time.time() while GPIO.input(ECHO_PIN)==1: pulse_end = time.time() pulse_duration = pulse_end - pulse_start distance = pulse_duration * 17150 # 计算距离 (cm),即高电平时间乘以声速的一半转换成厘米单位 distance = round(distance, 2) return distance if __name__ == &#39;__main__&#39;: try: while True: dist = measure_distance() print(f"Distance: {dist} cm") time.sleep(1) # 测量周期设置为至少60ms以上,这里设为1秒以便观察输出效果 except KeyboardInterrupt: pass finally: GPIO.cleanup() # 清理释放资源 ``` 此段代码实现了向指定方向发出短暂的超声波脉冲,并通过检测反射回来所需的时间差来确定前方障碍物的位置远近关系。每秒钟重复执行上述过程一次并将结果打印至终端显示[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值