使用NodeMCU读取DHT22传感器

我正在尝试使用NodeMCU读取DHT22的温度数据。 这是我的脚本:

function GetSensorData()
    print("尝试获取温度数据...")
    pin = 4
    status, temp, humi, temp_dec, humi_dec = dht.read(pin)
    if status == dht.OK then
        print("DHT 温度:"..temp..";".."湿度:"..humi)
    elseif status == dht.ERROR_CHECKSUM then
        print("DHT 校验错误。")
    elseif status == dht.ERROR_TIMEOUT then
        print("DHT 超时。")
    end
end

-- MAIN
tmr.alarm(1, 1000, 1, function() GetSensorData() end)

这给我带来了以下输出(一遍又一遍):

尝试获取温度数据...DHT 超时. ....

我尝试了“pin”的每个可能值,并将DHT22数据输出连接到了我的NodeMCU的所有GPIO。

引脚连接如下:

  • DHT22-VCC -> NodeMCU-3.3V
  • DHT22-GND -> NodeMCU-GND
  • DHT22-DATA -> NodeMCU-D0,D1,D2,D3,D4(都试过了)

我已经没有任何想法了。问题可能出在哪里?

点赞
用户131929
用户131929

将模块上的引脚号映射到 Lua 代码中使用的索引值

无线模组上的引脚号必须从模组自带的引脚号映射到你在Lua 代码中使用的索引值。具体参见https://nodemcu.readthedocs.org/en/dev/en/modules/gpio。例如,当pin = 4时, 你需要使用模块上的GPIO2。

2016-02-15 08:24:19