超声波模块介绍
超声波测距原理很简单:
1、通过记录发送超声波的时间、记录超声波返回的时间,返回时间与发送时间相减得到超声波的持续时间。
2、通过公式:(超声波持续时间 * 声波速度) / 2就可以得出距离;

HC-SR04参数:
工作电压: 5V
工作电流:15mA
最短测量距离:3cm
最长测量距离:4m
角度15度
Trig引脚输入信号:10us TTL 脉冲
Echo引脚输出信号:5v脉冲信号
超声波模块接线与工作过程
接线:
总共4引脚:2电源引脚(Vcc、GND)和2个控制引脚Trig、Echo;
Vcc为5v供电
Trig引脚用于接收树莓派信号,可接所有GPIO口。
Echo引脚用于发送测距结果给树莓派,可接所有GPIO口,返回5v信号。
测距工作过程:
1、树莓派向Trig引脚发送持续10us的脉冲信号;
2、HC-SR04发送超声波,将Echo置位高电平,准备接收超声波返回;
3、HC-SR04收到超声波返回把Echo置位低电平;
程序实现
通过上面HC-SR04超声波测距模块使用过程,原理的分析,使用Python很容易就写出了超声波测距的Demo程序,具体实现如下:
程序的关键点:
1、获取超声波发送时的时间
2、获取超声波返回时的时间
3、把超声波发送与返回的时间差带入公式:(超声波持续时间 * 声波速度) / 2 即可得到距离
Trig_Pin = 14
Echo_Pin = 4
GPIO.setmode(GPIO.BCM)
#设备GPIO工作方式IN/OUT
GPIO.setup(Trig_Pin,GPIO.OUT,initial = GPIO.LOW)
GPIO.setup(Echo_Pin,GPIO.IN)
def ultrasonic():
#发送高电平到Trig引脚
GPIO.output(Trig_Pin,GPIO.HIGH)
#持续10us 微秒
time.sleep(0.00001)
GPIO.output(Trig_Pin,GPIO.LOW)
#记录发送超声波时刻,发送前Echo_Pin为低电平,当变为高电平是说明超声波已发送
while GPIO.input(Echo_Pin) == GPIO.LOW:
pass
t1 = time.time()
#记录收到返回超声波时刻,当Echo_变为低电平时说明超声波已经返回
while GPIO.input(Echo_Pin) == GPIO.HIGH:
pass
t2 = time.time()
#超声波往返时间:t2-t1
#声波在空气中传播速度340m/s 记录时间 t 来回 2
#高电平时刻时间减去低电平时刻时间,得到超声波传播时间,单位转换为厘米乘以100
distance = (t2-t1) * 340 *100 /2
return distance

FEATURED TAGS
Agent
大模型
ChatGPT
HA
智能家居
LSM
Linux
Dapr
开发
插件
Linux,虚拟机,ubuntu
缓存
图片
Flink
反射
内置函数
go
限流
大数据,Spark,Kafka
面向对象
镜像
docker,hadoop,镜像
kafka,java
求导
链式法则
微积分
源码
快照
协议
ZooKeeper
ZAB
tomcat
Hadoop
Spark
python
自动微分
React Native
React
Node.js
Android
Kafka
lambda
jvm
rasp
框架
SPI
asm
maven
idea
依赖管理
module
helm
逻辑回归
S函数
IOS
Fiddler
Andriod
Protocol Buffer
kryo
车联网,大数据,神经网络
字节序
最小二乘法
线性代数
线性回归
最大似然法
网络编程
大数据
树莓派
Raspbian
redis
海南
分析
人口
函数式编程
clojure
线程
并行
actor
红黑树
数组
动态数组
tcp
编程
markdown
二叉搜索树
AVL树
数据结构
golang
梯度下降法
skaffold
k8s
机器学习
选法
一致性
算法
分布式
paxos
Raft
一致性协议
引擎
容器
通信
微服务
Kubernetes
docker
文件系统
NFS
神经网络
神经元
深度学习
poi
反向传播
java
并发模型
并发
多线程
Scala