树莓派基础实验24:超声波测距传感器实验
一、介绍
超声波传感器使用超声波来准确检测物体并测量距离。他发出超声波并将它们转换成电信号,主要应用于汽车的倒车雷达、机器人自动避障行走、建筑施工工地以及一些工业现场。
二、组件
★Raspberry Pi 3主板*1
★树莓派电源*1
★40P软排线*1
★超声波传感器模块*1
★面包板*1
★跳线若干
三、实验原理
该传感器有4个引脚:
VCC,超声波模块电源脚,接5V电源即可
Trig,超声波发送脚,高电平时发送出40KHZ出超声波
Echo,超声波接收检测脚,当接收到返回的超声波时,输出高电平5V
GND,超声波模块GND
注意: Echo 返回的是 5v信号,而树莓派的 GPIO 接收超过 3.3v 的信号可能会被烧毁,因此需要加一个分压电路,这里由于返回的脉冲时间非常短,我没有加,能正常运行,但还是冒险了!
超声波是指频率大于20 kHz的在弹性介质中产生的机械震荡波,其具有指向性强、能量消耗缓慢、传播距离相对较远等特点,因此常被用于非接触测距。声音是由振动产生的,能够产生超声波的装置就是超声波传感器,习惯上称为超声换能器,或者超声探头。超声波探头主要由压电晶片组成,既可以发射超声波,也可以接收超声波。
常用的是压电式超声波发生器,是利用压电晶体的谐振来工作的。超声波传感器探头内部有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。 超声波传感器就是利用压电效应的原理将电能和超声波相互转化,即在发射超声波的时候,将电能转换成超声波发射出去;而在接收时,则将超声振动转换成电信号。
超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。由于超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中,因此超声波测距对环境有较好的适应能力,此外超声波测量在实时、精度、价格也能得到很好的折衷。
本实验中,HC-SR04超声波传感器通过发送声波,并计算声波返回超声传感器所需的时间来工作。通过往返时间检测法,它可以告诉我们物体相对于超声波传感器有多远。
HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能, 测距精度可达高到3mm;模块包括超声波发射器、接收器与控制电路。基本工作原理:
(1)采用IO口TRIG触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。
(4)测试距离=(高电平时间*声速(340M/S))/2;
初始化时将trig和echo端口都置低,给Trig一个10US以上的高电平,模块开始工作,模块内自动发送八个40khz方波,并自主检测是否有电波返回。这时我们需要检测Echo处的电平,当为高电平的时候记一个时间;当Echo出为低电平的时候在记一个时间,这两个时间的差就是高电平持续的时间,然后用测距公式进行计算。
四、实验步骤
第1步: 连接电路。
树莓派 | T型转接板 | 超声波测距模块 |
---|---|---|
GPIO0 | G17 | Trig |
GPIO1 | G18 | Echo |
5V | 5V | VCC |
GND | GND | GND |
第2步: 编写控制程序。将手放在超声波测距模块上,观察屏幕上打印的距离数值。
#!/usr/bin/env pythonimport RPi.GPIO as GPIO
import timeTRIG = 11 #send-pin
ECHO = 12 #receive-pindef setup():GPIO.setmode(GPIO.BOARD)GPIO.setup(TRIG, GPIO.OUT, initial = GPIO.LOW)GPIO.setup(ECHO, GPIO.IN)def distance():GPIO.output(TRIG, 1) #给Trig一个10US以上的高电平time.sleep(0.00001)GPIO.output(TRIG, 0)#等待低电平结束,然后记录时间while GPIO.input(ECHO) == 0: #捕捉 echo 端输出上升沿passtime1 = time.time() #等待高电平结束,然后记录时间while GPIO.input(ECHO) == 1: #捕捉 echo 端输出下降沿passtime2 = time.time() during = time2 - time1
#ECHO高电平时刻时间减去低电平时刻时间,所得时间为超声波传播时间return during * 340 / 2 * 100
#超声波传播速度为340m/s,最后单位米换算为厘米,所以乘以100
def loop():while True:dis = distance()print dis, 'cm'print ''time.sleep(0.3)def destroy():GPIO.cleanup()if __name__ == "__main__":setup()try:loop()except KeyboardInterrupt:destroy()
树莓派基础实验24:超声波测距传感器实验相关推荐
- 【 FPGA 】超声波测距小实验(一)
超声波测距原理: 超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似. 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播 ...
- 【STM32】标准库与HAL库对照学习教程外设篇--超声波测距传感器
[STM32]标准库与HAL库对照学习教程外设篇--超声波测距传感器 一.前言 二.准备工作 三.超声波测距传感器 1.原理说明 2.使用说明 四.标准库使用传感器 1.实验程序 2.实验效果 五.H ...
- [博创智联]创新创客智能硬件平台——超声波测距传感器
[博创智联]创新创客智能硬件平台--超声波测距传感器 准备工作 测试环节 编译驱动和测试代码 加载驱动并执行代码 准备工作 烧录原版系统,供电.连接串口线,配置网络,挂载NFS共享,拷贝超声波测距传感 ...
- Arduino的光敏传感器和超声波测距传感器测试代码
光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...
- 超声波测距传感器认知
目录 一.超声波测距传感器认知 二.从零编程实现超声波测距 三.项目--感应开关盖垃圾桶 1.开发步骤 2.感应开关盖垃圾桶代码测试 一.超声波测距传感器认知 超声波测距模块是用来测量距离的一种产品, ...
- 超声波测距传感器模块在畜牧业的应用
我国现代养殖是一种"高投入.高产出.高效益"的产业.资本密集型和劳动集约化是其基本特征.这种集约化的产业耗费了大量的人力和自然资源,并在某种程度上对环境造成负面影响.如今物联网应用 ...
- 【HaaS Python硬件积木】HCSR04超声波测距传感器
来这里发现更多拿来即用的传感器 HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件.https://haas.iot.aliyun.co ...
- 基于STM32和超声波测距传感器的测距功能设计
基于STM32和超声波测距传感器的测距功能设计(使用陌生传感器的流程介绍) 引言 项目设计 项目简介 开发工具 硬件设计 软件设计 开发流程 阅读手册 配置并测试传感器相关设置 软件开发 总结 后续 ...
- Arduino与Processing交互-超声波测距传感器的读取与显示
公众号:STCode 1-超声波测距传感器简介 超声波测距传感器是利用频率高于20kHz的声波在空气中传播,遇到障碍物反射回来,通过计算发射和接收时间差,可以计算出发射点与障碍物间的距离. 超声波测距 ...
最新文章
- Spring AOP的一个具体例子
- cocos2d-x的Android工程开启c++0x特性
- jsp 嵌入java_关于JSP里的Java语句嵌入问题
- PAT乙级(1025 反转链表)
- 单实例数据库迁移到rac环境(四)上
- java处理pdf文件——iText的使用
- 开课吧python小课学了有用吗-未来2年,会计发展新趋势,你有必要了解一下......
- [运维笔记] - (命令).Windows server常用网络相关命令
- 泛微OA漏洞(综合)
- apk提取加密素材_高效IO之Dex加密(三)
- 使用XTU降低CPU功耗,自动执行不失效
- 玩转CODESYS 入门篇(一)-- 认识CODESYS
- Android MTK CAMERA DRIVER 摄像头驱动
- 这些年,这些ACM大佬-吴作凡访谈
- LLVM项目的目录布局介绍
- 什么是逻辑结构以及物理结构
- 键盘输入平方(m²)或立方(m³)等特殊字符
- 漫画 | Java语言是如何诞生的?
- anaconda and jupyterhub 配置部署
- Flutter——路由和导航