[РЕШЕНО] DHT11/DHT22 – Ошибка чтения с датчика DHT

Это руководство по устранению наиболее распространённых проблем с датчиком DHT при использовании ESP32, ESP8266, Arduino или аналогичных плат.

Если вы получаете сообщение об ошибке в мониторе порта (Serial Monitor) при чтении температуры и влажности с датчика DHT11, DHT22, AM2302 или AM2301, выполните следующие шаги, чтобы попытаться решить проблему.

РЕШЕНО DHT11 DHT22 AM2302 AM2301 Ошибка чтения с датчика DHT

«Failed to read from DHT sensor!» или значения NaN

Если ваш датчик DHT11/DHT22 возвращает сообщение об ошибке «Failed to read from DHT sensor!» или показания DHT возвращают «NaN»:

Устранение неполадок DHT11 DHT22 AM2302 AM2301 -- Failed to read from DHT sensor! или NaN

Попробуйте один из следующих советов по устранению неполадок.

1. Проводка

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

2. Питание

Датчик DHT имеет рабочий диапазон напряжения от 3 В до 5,5 В (DHT11) или от 3 В до 6 В (DHT22). Если вы питаете датчик от вывода 3,3 В, в некоторых случаях подключение DHT к напряжению 5 В решает проблему.

3. Неисправный USB-порт или USB-кабель

Иногда питания ESP32, ESP8266, Arduino или аналогичных плат напрямую от USB-порта ПК недостаточно. Попробуйте подключить плату к USB-хабу с внешним источником питания. Также может помочь замена USB-кабеля на более качественный или более короткий. Наличие USB-порта, обеспечивающего достаточную мощность, или использование хорошего USB-кабеля часто решает эту проблему.

4. Источник питания

Как упоминалось в предыдущем совете, ваша плата (ESP32, ESP8266, Arduino и т.д.) может не обеспечивать достаточного питания для корректного чтения данных с датчика DHT. В некоторых случаях вам может потребоваться запитать плату от источника питания, обеспечивающего больший ток.

5. Тип датчика

Дважды проверьте, что вы раскомментировали/закомментировали в своём коде правильный тип датчика для вашего проекта. В данном случае мы выбираем DHT22:

//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

6. Частота опроса

Датчик DHT очень медленно получает показания (считывание данных с датчика может занимать до 2 секунд). В некоторых случаях увеличение времени между считываниями решает проблему.

7. Датчик DHT сгорел или сломан

К сожалению, эти дешёвые датчики иногда выглядят совершенно нормально, но они перегорели или сломаны. Поэтому, даже если вы собрали правильную схему и загрузили правильный код, считывание данных всё равно будет завершаться с ошибкой. Попробуйте использовать другой датчик, чтобы проверить, решит ли это вашу проблему.

8. Неправильная скорость передачи данных или неудачная загрузка кода

Если вы не видите ничего в мониторе порта Arduino IDE, дважды проверьте, что вы выбрали правильную скорость передачи данных (baud rate), COM-порт или что код был успешно загружен.

При создании наших проектов мы сталкивались с аналогичными проблемами с DHT, и они всегда решались одним из описанных выше методов.

Фатальная ошибка: Adafruit_Sensor.h: No such file or directory

Существует также распространённая ошибка, которая возникает при попытке скомпилировать код. Если вы получаете следующую ошибку:

fatal error: Adafruit_Sensor.h: No such file or directory
#include <Adafruit_Sensor.h>

Вам необходимо установить библиотеку Adafruit Unified Sensor driver. В вашей Arduino IDE введите в поле поиска «Adafruit Unified Sensor», прокрутите вниз до конца, чтобы найти библиотеку, и установите её.

Установка библиотеки Adafruit Unified Sensor driver

После установки библиотеки перезапустите Arduino IDE, и код должен скомпилироваться без сообщения об ошибке.

Заключение

Надеемся, что это руководство оказалось для вас полезным. Если вы столкнётесь с другими проблемами, пожалуйста, напишите о них в комментариях ниже, и мы постараемся помочь вам решить вашу проблему.

У нас есть другие руководства по работе с датчиками DHT, которые могут оказаться полезными:

Спасибо за чтение.