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

Нужна помощь Некорректные значения с DHT11 (NodeMCU V3 Lua + DHT11)

DeksMaster

New member
Имеется: NODEMCU V3, датчик температуры и влажности DHT11
Прошивка:
Код:
NodeMCU custom build by frightanic.com
    branch: master
    commit: 11592951b90707cdcb6d751876170bf4da82850d
    SSL: false
    modules: dht,file,gpio,http,i2c,mqtt,net,node,sjson,tmr,uart,websocket,wifi
build created on 2018-12-30 19:20
powered by Lua 5.1.4 on SDK 2.2.1(6ab97e9)
Скетч самый простой отсюда:
Код:
pin = 5
status, temp, humi, temp_dec, humi_dec = dht.read(pin)
if status == dht.OK then
    -- Integer firmware using this example
    print(string.format("DHT Temperature:%d.%03d;Humidity:%d.%03d\r\n",
          math.floor(temp),
          temp_dec,
          math.floor(humi),
          humi_dec
    ))

    -- Float firmware using this example
    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
Вот такие значения приходят с датчика:

DHT Temperature:665.900;Humidity:947.200

Значения увеличиваются/уменьшаются в соответствии с изменениями окруж. среды. Вот только приходят в неверном формате. Может кто сталкивался?
 
Последнее редактирование:

DeksMaster

New member
Перепрошил на AT v0.23 SDK 1.0.1. С бибилиотекой DHT-sensor-library для Arduino IDE все работает нормально. Показатели с датчика приходят корректные. А вот с LUA прошивкой успехов так и не добился...
 
Последнее редактирование:

tretyakov_sa

Moderator
Команда форума
Попробуйте время опроса датчика сделать не чаще чем две секунды.
 

DeksMaster

New member
Попробуйте время опроса датчика сделать не чаще чем две секунды.
Сначала тоже так подумал. Так вот мой скрипт не выполняется циклично, а только один раз, если отправить команду dofile("script1.lua"). Соответственно датчик опрашивается единожды. Наверно дело не в частоте опроса датчика..
 

tretyakov_sa

Moderator
Команда форума
Сначала тоже так подумал. Так вот мой скрипт не выполняется циклично, а только один раз, если отправить команду dofile("script1.lua"). Соответственно датчик опрашивается единожды. Наверно дело не в частоте опроса датчика..
Считайте два раза. Посмотрите результат второго считывания. Конечно с промежутком в 2 секунды.
 

DeksMaster

New member
Считайте два раза. Посмотрите результат второго считывания. Конечно с промежутком в 2 секунды.
Изменил скрипт, как вы сказали: опрашиваю теперь дважды с паузой в 2 сек. Паузу вызываю следующим методом:
Код:
socket = require("socket")

function sleep(sec)
    socket.sleep(sec)
end

sleep(2)
Ответ приходит все такой же:

DHT Temperature:665.900;Humidity:947.200
DHT Temperature:671.000;Humidity:1150.300


Подышал на датчик в промежутке между двумя запросами показаний - видно, что показания меняются

Пробовал использовать функцию dht.read11() вместо dht.read() для считывания показаний - приходит ошибка dht.ERROR_CHECKSUM
 
Последнее редактирование:

pdfsen

New member
Интересует такая же проблема.
Прошивку NodeMCU Lua SDK 2.2.1 брал отсюда NodeMCU custom builds
Я еще кроме этого подцепил резистор 10 кОм на +3,3В на Дата выход датчика DHT11.
Всё равно не помогло, датчик возвращает левые цифры.
Иногда (может раз в 10 минут) появляются корректная Температура и Влажность.
 
Последнее редактирование:

Anton Shevtsov

New member
у меня тоже с dht11какието левые значения.. лежит на окне, показывает 8-10-15 влажность.. если подышать влажность растет..
 

Вложения

nikolz

Well-known member
Сверху Снизу