zoukankan      html  css  js  c++  java
  • Raspberry Pi 超声波(HC-SR04)

    2019-11-26

    21:37:49

    一、所需

    1. 树莓派3B
    2. (HC-SR04)超声波测距模块
    3. 电阻1KΩ,2KΩ各一个
    4. 杜邦线,面包板

    关于HC-SR04

    HC-SR04模块的测距为3cm - 4m,精确度可达3mm。改模块包括超声波发射器、超声波接收器和控制电路三部分。

    A、引脚4个:

    • VCC
    • TRIG
    • ECHO
    • GND

    B、工作原理

    1、采用IO口TRIG触发测距,给10us的高电平信号;

    2、模块自动发送8个40khz的方波,自动检测是否有信号返回;

    3、有信号返回,通过IO口ECHO输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2;

    C、与树莓派工作过程

    1、树莓派向Trig脚发送一个持续10us的脉冲信号。

    2、HC-SR04接收到树莓派发送的脉冲信号,开始发送超声波,并把Echo置为高电平。然后准备接收返回的超声波。

    3、当HC-SR04接收到返回的超声波时,把Echo置为低电平。

    4、记录发送到接收之间的时间就可以测算距离了。

    二、连接树莓派与HC-SR04

     4个引脚:

    VCC连接5V针脚

    GND连接任意板上任意GND针脚

    Trig连接GPIO18(BCM编码对应的针脚)

    Echo连接GPIO23(BCM编码对应的针脚)

    由于Echo输出为5V信号,而树莓派的GPIO输入最高允许3.3V,所以应该接一个分压电路。

    上图为树莓派实验室的HC-SR04教程的图片,我是学习他的分压接法,只是我使用的GPIO引脚不同罢了,Echo输出降到3.3V左右。

    连接完成。

    三、编写代码(Python)

    import time
    # 导入 GPIO 库
    import RPi.GPIO as GPIO
    # 设置 GPIO 编码模式为 BCM模式
    GPIO.setmode(GPIO.BCM)
    # 定义 GPIO 引脚
    Trig = 18
    Echo = 23
    # 设置 GPIO 的工作模式(IN / OUT)
    GPIO.setup(Trig, GPIO.OUT)
    GPIO.setup(Echo, GPIO.IN)
    def distance():
    	# 发送高电平信号到 Trig 引脚
    	GPIO.output(Trig, True)
    	# 持续 10us 
    	time.sleep(0.00001)
    	GPIO.output(Trig, False)
    	start_time = time.time()
    	stop_time = time.time()
    	# 记录发送超声波的时刻1
    	while GPIO.input(Echo) == 0:
    		start_time = time.time()
    	# 记录收到超声波的时刻2
    	while GPIO.input(Echo) == 1:
    		stop_time = time.time()
    	# 记录超声波的往返时间 = 时刻1 - 时刻2
    	time_distance = start_time - stop_time
    	# 声波的速度为 343m/s, 转化为 34300cm/s
    	distance = (time_distance * 34300) / 2
    	return distance
    if __name__ == "__main__":
    	try:
    		while True:
    			dis = distance()
    			print("Measured Distance = {:.2f} cm".format(dis))
    			time.sleep(1)
    		# Reset by pressing CTRL + C
    	except KeyboardInterrupt:
    		print("Measurem stopped by User")
    		GPIO.cleanup()
    

  • 相关阅读:
    CSRF的安全问题
    preg_replace
    反汇编:虚函数表
    12.Proxy
    JS中的this
    11.Set 和 Map数据结构
    10.symbol
    9.对象的扩展
    test
    ES5支持的方法
  • 原文地址:https://www.cnblogs.com/1328497946TS/p/11938724.html
Copyright © 2011-2022 走看看