V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GunnerX
V2EX  ›  Raspberry Pi

树莓派使用 HC-SR04 模块超声波测距,距离有问题

  •  
  •   GunnerX · 2020-05-27 00:22:09 +08:00 · 1978 次点击
    这是一个创建于 1423 天前的主题,其中的信息可能已经有所发展或是发生改变。

    树莓派连 HC-SR04 这个模块进行超声波测距,连线,py 代码应该都没问题,可是距离一直都在 5.6m 左右不变的,这啥情况?大哥们帮臭弟弟看看吧。我感觉是这个模块有问题? py 代码

    import RPi.GPIO as GPIO
    import time
    
    Trig_Pin = 23
    Echo_Pin = 24
    
    def init():
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(Trig_Pin, GPIO.OUT, initial=False)
        GPIO.setup(Echo_Pin, GPIO.IN)
        time.sleep(2)
    
    def distance():
        GPIO.output(Trig_Pin, True)
        time.sleep(0.00001)
        GPIO.output(Trig_Pin, False)
        while not GPIO.input(Echo_Pin):
            pass
        t1 = time.time()
        while GPIO.input(Echo_Pin):
            pass
        t2 = time.time()
        return (t2 - t1) * 340 * 100 / 2
    
    if __name__ == '__main__':
        init()
        try:
            while True:
                print('Distance : {:.2f} cm'.format(distance()))
                time.sleep(1)
        except KeyboardInterrupt:
            GPIO.cleanup()
    

    输出情况,不管怎么给前面放障碍物距离都是 5.6m 左右

    Distance : 560.90 cm
    Distance : 560.91 cm
    Distance : 560.90 cm
    Distance : 560.92 cm
    Distance : 560.90 cm
    Distance : 560.93 cm
    Distance : 560.90 cm
    
    4 条回复    2020-05-27 12:20:25 +08:00
    CEBBCAT
        1
    CEBBCAT  
       2020-05-27 00:40:26 +08:00 via Android
    你这测量的不就是 echo 口高电平的时间吗?高电平的时间就是你拉高 trig 的时间啊,所以是你没有理解超声波测距原理的问题。

    另外要跟你再次确认一个知识点,树莓派这种东西不如传统的 Soc 来得实时,你代码拉高 1e-5s 其实可能拉高了 1e-3s 。io 除了电平敏感度之外还有时间敏感度这种东西,必要时也是要考虑的。

    没怎么操作过树莓派的 GPIO,但你这个死循环我觉得不妥,可以查查有没有更好的解决办法,事件触发式那种,可以拿中断事件去搜。

    另外树莓派供电应该一般,要做好元件供电
    CEBBCAT
        2
    CEBBCAT  
       2020-05-27 00:41:37 +08:00 via Android
    @CEBBCAT 可以学一下 Arduino 先,那本《爱上 Arduino 》会教电路去抖之类的东西
    kokutou
        3
    kokutou  
       2020-05-27 07:46:53 +08:00 via Android
    抄的例程?
    总感觉不太对啊。。。

    先写一个触发一次然后无脑打印 echo 输出+时间戳的程序,看看这个模块返回的是啥样的呗。
    GunnerX
        4
    GunnerX  
    OP
       2020-05-27 12:20:25 +08:00
    @CEBBCAT 嗨,谢谢大哥,但是我也不搞嵌入式开发,只是学校一个课要做的设计,我就想着完成任务完事,不想花太多功夫。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   956 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:53 · PVG 04:53 · LAX 13:53 · JFK 16:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.