一起玩转树莓派(14)——超声测距

简介: 一起玩转树莓派(14)——超声测距

当今,汽车行业的发展可谓是日新月异。智能汽车的概念也越来越火热。自动驾驶也将得到越来越广泛的应用。不知你有没有想过,平时我们在人工驾驶汽车时,主要使用的是视觉来感知距离,对于人工智能来说,它是如何通过感知距离来获取周围环境信息的呢?这就需要使用到相关的测距传感器。


一、超声测距传感器


我们知道,超声波频率高,相对于普通声波,其能量消耗慢,传播距离远且指向性很强。十分适合用来进行距离的测量。本次实验,我们使用HC-SR04超声测距模块来进行距离测量。元件如下图所示:

image.png



如上图所示,HC-SR04模块有一个超声发生器(T端)和一个超声收集器(R端)以及4个引脚。在网上很容易购买到此模块,其价格低廉,精准度高,使用简单,性价比非常高。HC-SR04硬件原理图如下:


image.png


模块内部电路结构虽然看上去非常复杂,但是我们使用它来测距并不需要了解其内部完整的工作原理,要进行距离的测定,离不开公式_s = v * t_。如果要计算出距离s,需要得知速度v和时间t,声波的速度v是一定的,我们可以取340m/s,时间t就是HC-SR04模块能够帮助我们得到的。


超声测距的核心原理是通过发生源发出超声波,当超声波遇到障碍时会被反射,反射的超声波可以被感知源感知到,从声波发出到被感知到这之间的时间就是超声波从模块到障碍物间传递一次来回所使用的时间。如下图所示:


image.png


对于HC-SR04模块,其Trig引脚是触发引脚,向其发10us以上的高电平即可触发发送超声波指令,HC-SR04模块会自动发送8个40kHz的方波,当发送完成后,Echo引脚会输出高电平,当收到反射回来的声波后,Echo会重新变回低电平。因此,在使用HC-SR04模块时,我们只需要通过向Trig引脚加高电平触发测量指令,之后监听Echo引脚高电平的持续时间,即可完成测距工作。


二、连线与编码


我们选择BCM编码下的GPIO17来控制超声发生Trig引脚,使用GPIO18来获取Echo引脚的电平。连线如下:


HC-SR04模块 树莓派

VCC +5V电源

GND GND

Trig GPIO17(BCM编码)

Echo CGIO18(BCM编码)

编写如下代码:


#coding:utf-8


import RPi.GPIO as GPIO

import time


# 触发声波引脚

trig = 11

# 监听信号

echo = 12


def getDistance():

# 输出高电平

GPIO.output(trig, GPIO.HIGH)

# 持续15us高电平 触发超声波

time.sleep(0.000015)

# 停止加高电平

GPIO.output(trig, GPIO.LOW)


# 开始检测信号引脚的电平为高电平时开始计时

while GPIO.input(echo) == 0:

 pass

t1 = time.time()

# 信号引脚的电平为低电平时计算时间间隔

while GPIO.input(echo) == 1:

 pass

t2 = time.time()

# 计算距离

s = (t2 - t1)*340/2

return s


GPIO.setmode(GPIO.BOARD)

GPIO.setup(trig, GPIO.OUT, initial=GPIO.LOW)

GPIO.setup(echo, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)


while True:

s = getDistance()

print("当前距离前方障碍物:%fm"%(s))

time.sleep(1)


在树莓派中运行上面代码,即可实现超声波测距,效果如下图:

image.png

目录
相关文章
|
算法 Python
LightGBM高级教程:自动调参与超参数优化
LightGBM高级教程:自动调参与超参数优化【2月更文挑战第5天】
1855 2
Vxworks 6.6系列下载地址
Vxworks 6.6系列下载地址: <br> ---------------------------------- <br><a target="_blank" href="ftp://ftp.windriver.speedera.net/ftp.windriver/internal/eval/vxworks-6.6/CDR-R133467.1-1-00.zip">ftp://ftp.
7344 0
|
11月前
|
数据挖掘 测试技术 项目管理
2025年测试用例管理看这一篇就够了 ----Codes 开源免费、全面的测试管理解决方案
Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证、本地部署、全部功能开放,并且对 30 人以下团队免费。它通过整合迭代、看板、度量和自动化等功能,简化测试协同工作,使敏捷测试更易于实施。并提供低成本的敏捷测试解决方案,如同步在线离线测试用例、流程化管理缺陷、低代码接口自动化测试和 CI/CD,以及基于迭代的测试管理和测试用时的成本计算等,践行敏捷测试。
2025年测试用例管理看这一篇就够了 ----Codes 开源免费、全面的测试管理解决方案
|
9月前
|
开发者 异构计算
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
通义万相Wan2.1开源不到一周,已登顶HuggingFace Model 和 Space 榜双榜首,在HuggingFace和ModelScope平台的累计下载量突破100万次,社区热度持续攀升!为响应小伙伴们对ComfyUI工作流运行Wan2.1的强烈需求,社区开发者整理了实战教程👇
7051 23
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
|
10月前
|
机器学习/深度学习 人工智能 云计算
2025年2月阿里云服务器价格与选购指南
随着云计算技术的普及,阿里云在2025年推出了多款高性价比的云服务器产品。本文基于《2025年阿里云服务器收费价格表》,从配置选择、适用场景到优惠活动,为您提供全面的购买参考。涵盖入门级轻量应用服务器、经济型e实例、企业级通用算力型u1实例、高性能服务器及GPU服务器等,适合个人开发者到大型企业的不同需求。详细对比各类配置的价格与性能,并提供抢购秒杀、续费优惠及代金券组合使用等省钱策略,助您降低上云成本。立即访问云小站活动页面领取最新折扣,开启高效云端之旅!
|
安全 Docker 容器
Docker中运行容器时Operation not permitted报错问题解决
【10月更文挑战第2天】Docker中运行容器时Operation not permitted报错问题解决
5457 3
|
Python
Python报错ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Python报错ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
2634 1
|
Windows
Windows批处理(BAT)文件执行时“一闪而过或闪退”问题及解决方法
Windows批处理(BAT)文件执行时“一闪而过或闪退”问题及解决方法
7930 1
|
传感器 数据格式
【STM32】DHT11温湿度模块传感器详解&代码
【STM32】DHT11温湿度模块传感器详解&代码
|
Linux 芯片
嵌入式Linux系列第10篇:使用CAN
嵌入式Linux系列第10篇:使用CAN