精帖  树莓派HC-SR04超声波传感器模块测距使用例程 python3代码超声波,GPIO编程,Python,传感器

By 超级版主

2023-05-09 20:14:10

浏览量63963

已赞11

一:超声波传感器模块介绍

传感器工作原理:

  • 采用IO触发测距,给至少10us的高电平信号;
  • 模块自动发送8个40khz的方波,自动检测是否有信号返回;
  • 有信号返回,通过IO输出一高电平,高电平持续的时间就是超声波从发射到返回的时间.
  • 测试距离=(高电平时间*声速(340M/S))/2
  • 超声波原理图及单片机示例程序(提取码:8888)
  •       树莓派超声波产品购买链接

二:树莓派主板接线方法

接线方法:(树莓派接线位置如果看不懂可以参考下面的图)

树莓派  5V  ——— 超声波VCC

树莓派GND ——— 超声波GND

树莓派GPIO7 ——— 超声波Trig

树莓派GPIO5 ——— 超声波Echo

Image

Image


用杜邦线把树莓派的针脚2(物理编号,VCC,5V),针脚6(物理编号,GND,负极),针脚7(GPIO4 ,BCM编码4,Trig),针脚18(GPIO5,BCM编码24,Echo

三:Python测距代码程序

新建一个py文件,输入命令

sudo nano sr04.py
编辑程序:
#!/usr/bin/env python3
import time
import RPi.GPIO as GPIO
 
trigger_pin =7
echo_pin =18
 
GPIO.setmode(GPIO.BOARD)
GPIO.setup(trigger_pin,GPIO.OUT)
GPIO.setup(echo_pin,GPIO.IN)
 
'''
TRIG 负责发射超声波,Echo 负责接收超声波
'''
def send_trigger_pulse():
    #发送超声波,一直发
    GPIO.output(trigger_pin,1)
    # 为了防止错误,因为紧接着就需要把发射端置为高电平
    time.sleep(0.0001)
    #发射端置为高电平
    GPIO.output(trigger_pin,0)
 
'''
ECHO 负责接收超声波
'''
def wait_for_echo(value,timeout):
    count = timeout
    #通过该代码持续获取ECHO的状态
    while GPIO.input(echo_pin)!= value and count>0:
        count = count-1
 
'''
计算距离
'''
def get_distance():
    # 发射
    send_trigger_pulse()
    # 接收高电平 1/True
    wait_for_echo(True,10000)
    # 等待
    start = time.time()
    #接收低电平
    wait_for_echo(False,10000)
    finish = time.time()
    pulse_len = finish-start
    distance_cm = pulse_len/0.000058
    return distance_cm
 
while True:
    print("cm = %f"%get_distance())
    time.sleep(1)
保存Ctrl+X按Y,然后继续执行命令查看测距数据:
sudo python3 sr04.py
Image

每隔1秒刷新一次数据,实测看成测距还算比较精准!





本文章最后由 超级版主2023-11-12 21:40 编辑
发表评论
请先 注册/登录 后参与评论

已有2 发布

默认   热门   正序   倒序
查看更多评论
(11) 分享
分享

扫二维码或复制链接分享该篇文章

取消
已有0次打赏
本站免责声明
1、本站资源,均来自网络或个人用户发布,版权归原作者,所有资源和文章仅限用于学习和研究目的 。
2、不得用于商业或非法用途,否则,一切责任由该用户承担 !

侵权删除请致信 E-Mail:cxg88@qq.com