• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь DHT22 float_0.9.6-dev_20150704

brutevinch

New member
Не могу найти рабочий пример либы для DHT22 под билд nodemcu_float_0.9.6-dev_20150704.bin
Ткните носом пожалуйста. Все варианты либо не работают либо выдают неадекват типа:
Humidity: -0.1.9%
Temperature: -3276.7.2.9999999999272 deg C
Temperature: -5866.06.9.3999999998705 deg F

Буду очень спасибо всем кто поможет.
 

smartynov

New member
Не могу найти рабочий пример либы для DHT22 под билд nodemcu_float_0.9.6-dev_20150704.bin
Ткните носом пожалуйста. Все варианты либо не работают либо выдают неадекват типа:
Humidity: -0.1.9%
Temperature: -3276.7.2.9999999999272 deg C
Temperature: -5866.06.9.3999999998705 deg F

Буду очень спасибо всем кто поможет.
Если еще актуально – я работаю с DHT22 с либой dht, встроенной в прошивку NodeMCU. Все нормально считывает. Вот пример кода из документации:

Код:
pin = 5
status,temp,humi = dht.readxx(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 Time out." );
end
Если у Вас не работает, проверьте подключение и проверьте, соответствует ли либа датчику – у DHT11 и DHT22 разные протоколы взаимодействия.
 

Nurmukhamed

New member
Добрый день.

у меня есть esp-12e, припаял ее на адаптер, все gpio посадил через резистор 10к на 3.3в
подключил по схеме dht22, посадил ее на gpio5/pin1.

использовал скрипт

Код:
PIN = 1 --  data pin, GPIO2

dht22 = require("dht22")
dht22.read(PIN)
t = dht22.getTemperature()
h = dht22.getHumidity()

if h == nil then
  print("Error reading from DHT22")
else
  -- temperature in degrees Celsius  and Farenheit
  -- floating point and integer version:
  print("Temperature: "..((t-(t % 10)) / 10).."."..(t % 10).." deg C")
  -- only float point version:
  print("Temperature: "..(9 * t / 50 + 32).." deg F")

  -- humidity
  -- floating point and integer version
  print("Humidity: "..((h - (h % 10)) / 10).."."..(h % 10).."%")
end

-- release module
dht22 = nil
package.loaded["dht22"]=nil
получаю следующие данные.

Код:
> dofile("monDHT22.lua");
Temperature: 384.9.0000000000032 deg C
Temperature: 724.82 deg F
Humidity: -1.9%
> dofile("monDHT22.lua");
Temperature: 429.8.0000000000036 deg C
Temperature: 805.64 deg F
Humidity: -1.9%
> dofile("monDHT22.lua");
Temperature: 463.5.0000000000036 deg C
Temperature: 866.3 deg F
Humidity: -1.9%
>
 

smartynov

New member
у меня есть esp-12e, припаял ее на адаптер, все gpio посадил через резистор 10к на 3.3в
подключил по схеме dht22, посадил ее на gpio5/pin1.
Код:
dht22 = require("dht22")
Что именно Вы подключаете как require("dht22") – что это за либа, откуда Вы ее взяли? Думаю, что проблема в ней.

Как я писал, в последних прошивках NodeMCU встроенная поддержка протокола датчиков DHT – не надо ничего require(), просто сразу dht.readxx(pin).

Документация вот: https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en#dht-module-1
 
Сверху Снизу