2

我正在尝试让 NodeMCU ESP8266 开发板与 HC SR04 超声波传感器一起使用。我不断得到“0”的读数,这不是现实。

我将传感器的接地和 5v 引脚连接到 5v 电源,以及 GPIO 引脚 4 和 5 上的 Echo 和 Trigger 引脚。理论上,一切都应该正常工作,但我只是一直得到“0”。也许我的代码有问题?见下文:

import machine
import sys
import time
time.sleep(1) #Just for everything to settle down

while 1:

    pinTrigger = machine.Pin(5, machine.Pin.OUT) #defining the pins
    pinEcho = machine.Pin(4, machine.Pin.IN) #defining the pins

    pinTrigger.high()
    time.sleep(0.00001)
    pinTrigger.low()

    time.sleep(0.5)

    start = time.time()
    stop = time.time()

    while pinEcho ==0:
        start = time.time() #Starting the time when sending out the signal

    while pinTrigger ==1:
        stop = time.time() #Stopping the time when the signal comes back

    elapsed = stop-start #working out the time.

    distance = elapsed * 34000 #multiply by speed of sound to get distance

    distance = distance / 2 #divide by 2 becuase it was there and back

    print ("Distance : %.1f" % distance) 

    sys.exit()

请帮忙。

4

2 回答 2

1

这是解决问题的方法:

import machine
import utime


while True:
  trig=machine.Pin(5, machine.Pin.OUT)
  trig.off()//stop reading
  utime.sleep_us(2)
  trig.on()
  utime.sleep_us(10)
  trig.off()
  echo=machine.Pin(4, machine.Pin.IN)
  while echo.value() == 0:
    pass
  t1 = utime.ticks_us()
  while echo.value() == 1:
    pass
  t2 = utime.ticks_us()
  cm = (t2 - t1) / 58.0
  print(cm)
  utime.sleep(2)

在互联网的其他地方,他们建议您在 NodeMCU 板 (ESP8266) 上的回波和引脚之间放置一个电阻器,这使得测量结果非常糟糕。所以现在我让它 100% 工作,5v 和接地(到 HC-SR04)连接到我的 RPi GPIO,触发器和回波连接到 NodeMCU 板引脚。

需要注意的另一件事是,我在 1 秒(代码的最后一行)进行读数,将其更改为 2 秒使代码更加准确。

希望这可以帮助某人。

这是图表:

工作图

于 2017-03-03T11:11:12.360 回答
0

查看这个库,以便更轻松地在 micropython 中使用 HC-SR04 传感器驱动程序。

于 2019-08-09T10:48:18.603 回答