翼度科技»论坛 编程开发 python 查看内容

树莓派使用HC-SR04超声波测距

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
超声波模块介绍

  超声波测距原理很简单:
  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 即可得到距离
  1. Trig_Pin = 14
  2. Echo_Pin = 4
  3. GPIO.setmode(GPIO.BCM)
  4. #设备GPIO工作方式IN/OUT
  5. GPIO.setup(Trig_Pin,GPIO.OUT,initial = GPIO.LOW)
  6. GPIO.setup(Echo_Pin,GPIO.IN)
  7. def ultrasonic():
  8.     #发送高电平到Trig引脚
  9.     GPIO.output(Trig_Pin,GPIO.HIGH)
  10.     #持续10us 微秒
  11.     time.sleep(0.00001)
  12.     GPIO.output(Trig_Pin,GPIO.LOW)
  13.     #记录发送超声波时刻,发送前Echo_Pin为低电平,当变为高电平是说明超声波已发送
  14.     while GPIO.input(Echo_Pin) == GPIO.LOW:
  15.         pass
  16.     t1 = time.time()
  17.     #记录收到返回超声波时刻,当Echo_变为低电平时说明超声波已经返回
  18.     while GPIO.input(Echo_Pin) == GPIO.HIGH:
  19.         pass
  20.     t2 = time.time()
  21.     #超声波往返时间:t2-t1
  22.     #声波在空气中传播速度340m/s 记录时间 t 来回 2
  23.     #高电平时刻时间减去低电平时刻时间,得到超声波传播时间,单位转换为厘米乘以100
  24.     distance = (t2-t1) * 340 *100 /2
  25. return distance
复制代码


来源:https://www.cnblogs.com/softlin/p/17437150.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具