使用 NodeMCU 读取 DHT22 传感器
Reading DHT22 sensor with NodeMCU
我正在尝试使用 NodeMCU 从 DHT22 读取温度数据。
这是我的脚本:
function GetSensorData()
print( "Trying to get temperature..." )
pin = 4
status, temp, humi, temp_dec, humi_dec = dht.read(pin)
if status == dht.OK then
print("DHT Temperature:"..temp..";".."Humidity:"..humi)
elseif status == dht.ERROR_CHECKSUM then
print( "DHT Checksum error." )
elseif status == dht.ERROR_TIMEOUT then
print( "DHT timed out." )
end
end
-- MAIN
tmr.alarm(1, 1000, 1, function() GetSensorData() end)
这给了我以下输出(一遍又一遍):
Trying to get temperature... DHT timed out. ....
我尝试了 "pin" 的所有可能值,并将 DHT22 数据输出附加到我的 NodeMCU 的所有 GPIO。
引脚连接如下:
- DHT22-VCC -> NodeMCU-3.3V
- DHT22-GND -> NodeMCU-GND
- DHT22-DATA -> NodeMCU-D0、D1、D2、D3、D4(都试过了)
我 运行 没主意了。这可能是什么问题?
好的,我们开始...
Pin 号码必须从模块上的内容映射到您在 Lua 代码中使用的索引。参见 https://nodemcu.readthedocs.org/en/dev/en/modules/gpio。例如,对于 pin = 4
,您必须在模块上使用 GPIO2。
我正在尝试使用 NodeMCU 从 DHT22 读取温度数据。 这是我的脚本:
function GetSensorData()
print( "Trying to get temperature..." )
pin = 4
status, temp, humi, temp_dec, humi_dec = dht.read(pin)
if status == dht.OK then
print("DHT Temperature:"..temp..";".."Humidity:"..humi)
elseif status == dht.ERROR_CHECKSUM then
print( "DHT Checksum error." )
elseif status == dht.ERROR_TIMEOUT then
print( "DHT timed out." )
end
end
-- MAIN
tmr.alarm(1, 1000, 1, function() GetSensorData() end)
这给了我以下输出(一遍又一遍):
Trying to get temperature... DHT timed out. ....
我尝试了 "pin" 的所有可能值,并将 DHT22 数据输出附加到我的 NodeMCU 的所有 GPIO。
引脚连接如下:
- DHT22-VCC -> NodeMCU-3.3V
- DHT22-GND -> NodeMCU-GND
- DHT22-DATA -> NodeMCU-D0、D1、D2、D3、D4(都试过了)
我 运行 没主意了。这可能是什么问题?
好的,我们开始...
Pin 号码必须从模块上的内容映射到您在 Lua 代码中使用的索引。参见 https://nodemcu.readthedocs.org/en/dev/en/modules/gpio。例如,对于 pin = 4
,您必须在模块上使用 GPIO2。