как увеличить коэффициент задержки DHT11?

Ошибки компилятора нет, но в выводе отображается ошибка тайм-аута. согласно инструкции, приведенной в https://github.com/RobTillaart/Arduino/issues/61

говорится увеличить коэффициент тайм-аута, но я не нашел ограничений, которые просили изменить.вот это снимок последовательного монитора

, 👍1

Обсуждение

Я думаю вам нужно изменить сами файлы библиотеки., @Gerben

У него пять библиотек DHT. Знаете ли вы, какой из них вы используете? Проблема может быть в nodemcu в сочетании с библиотекой и датчиком. Dht11 и dht22 могут вести себя иначе, чем несколько лет назад. Некоторые библиотеки вызывают сокращение сигнала данных, что является серьезной проблемой для nodemcu. «DHTLIB_TIMEOUT» объявлен в файле .h. Чтобы обеспечить совместимость со всеми платами Arduino, время ожидания должно быть в миллисекундах., @Jot

Я не нашел никакого ограничения с именем DHTLIB_TIMEOUT, которое должно быть в файле .h. Я использую плату NodeMCU и пробовал три разные библиотеки DHT11, но ни одна из них не работает. можете ли вы дать мне ссылки, откуда я могу скачать необходимую библиотеку, @Kaiser

Не знаю, библиотек гораздо больше, чем 3. Библиотеки dht11 для esp8266 — это большой беспорядок. Даже код nodemcu имеет проблемы с (более новыми) датчиками dht11: https://github.com/nodemcu/nodemcu-firmware/issues/2253 Какие библиотеки вы пробовали? Используете ли вы подтягивающий резистор? Какова стоимость этого резистора? Вы используете длинные провода? У вас есть еще один датчик dht11, возможно этот сломан. Если вы хотите знать влажность, возможно, вам следует купить датчик получше с i2c. DHT11 возвращает число, которое не имеет никакого отношения к влажности и является неточным., @Jot

У dht11, который я использовал, был встроенный подтягивающий регистр, и я не использовал никаких проводов, а только соединительные кабели для минималистского подключения. И я попробовал 2 разных датчика, но все выдали значение NAN. Думаю, вместо того, чтобы брать на себя всю эту ношу, я выберу датчик i2c. Большое спасибо @Jot, @Kaiser

Я сделаю за это ответ., @Jot


1 ответ


Лучший ответ:

0

DHT11 и DHT22 раньше были дешевыми и простыми в использовании датчиками влажности и температуры, когда они использовались вместе с Arduino Uno.

Но все изменилось.

  • Они неточны и могут стать совершенно неточными в некоторых случаях. газы или дым.
  • Оказалось, что наиболее часто используемые библиотеки DHT имеют серьезная ошибка, которая создает ярлык в сигнале данных. Это не было проблемой с Arduino Uno, которая может выводить 40 мА со штырем. У новых процессоров есть проблемы с этот ярлык.
  • В 2018 году DHT11, похоже, ведет себя по-другому. вероятно, изменился внутренний контроллер.
  • Поскольку связь с датчиками требует точного времени, прерывания временно отключаются. Это не было проблемой с медленным Arduino Uno, но это ненормально с более быстрый процессор.
  • Некоторые библиотеки используют тайм-аут с циклом или тактовыми циклами. Это хорошо сработало с Arduino Uno, но это не всегда надежно с новыми процессорами.

В 2018 году все библиотеки DHT для ESP8266 и ESP32 имеют проблемы с DHT11 и DHT22.

Поскольку датчики и так не очень точны, лучше держаться подальше от всех неприятностей и избегать их. Существует ряд хороших датчиков влажности с интерфейсом I2C.

,