Датчики температуры и влажности: DHT11 и DHT22

DHT11 и DHT22 с ArduinoДатчики DHT11 и DHT22 используются для измерения температуры и относительной влажности. Они бьют все рекорды по продажам и очень популярны среди любителей электроники.

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

Микросхема датчиков

Разница между DHT11 и DHT22

DHT11 и DHT22 очень похожи, но различаются по своим характеристикам. В таблице ниже сравниваются некоторые из наиболее важных характеристик датчиков температуры и влажности DHT11 и DHT22. Для более глубокого анализа этих датчиков смотрите их техническое описание.

DHT11 DHT22
dht11 мини фото dht22 минифото
Диапазон температур От 0 до 50 ºC +/- 2 ºC От -40 до 80 ºC +/- 0,5ºC
Диапазон влажности От 20 до 90% +/- 5% От 0 до 100% +/- 2%
Точность измерения Влажность: 1%
Температура: 1ºC
Влажность: 0,1%
Температура: 0,1ºC
Диапазон напряжения 3 — 5,5 В постоянного тока 3-6 В постоянного тока
Сила тока 0,5 — 2,5 мА 1 — 1,5 мА
Период обработки данных 1 секунда 2 секунды
Цена От 55 рублей От 250 рублей
Где купить Посмотреть цену Посмотреть цену

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

Датчик DHT11 имеет меньший диапазон измерений и он менее точен. За то вы можете запрашивать показания датчика каждую секунду. Также он стоит намного дешевле.

Несмотря на их различия, они работают почти одинаково, и значит, вы можете использовать один и тот же код для считывания температуры и влажности. Вам просто нужно вставить в код тип датчика, который вы будете используете.

Распиновка DHT

Датчики DHT имеют четыре контакта, как показано на рисунке ниже. Однако, если вы устанавливаете датчик DHT в коммутационной плате, то вам нужно использовать только три контакта. На контакте 2 нет встроенного резистора.

dht22

В следующей таблице показана распиновка DHT22 и DHT11. Если смотреть прямо на датчик, то нумерация контактов начинается слева направо.

1
2 Любой цифровой GPIO, вывод данных
3 Не подключаем
4 GND (земля)

Читать также:  Повышение эффективности солнечной батареи

Подключение датчика температуры и влажности DHT11 к Arduino

В этой части статьи мы создадим простой проект на Arduino, который сможет считывать температуру и влажность и отображать результаты на экране монитора с помощью Монитор порта.

Требуемые детали:

Для выполнения этого проекта вам потребуются следующие компоненты:

Схема

Следуйте следующей принципиальной схеме, чтобы подключить датчик температуры и влажности DHT11 (или DHT22) к Arduino.

Принципиальная схема для подключения датчика DHT11

Все соединения (слева направо):

Пины DHT Ардуино
Пин 1
Пин 2 D2 или любой другой цифровой пин
Пин 3 Не подключаем
Пин 4 GND (земля)
Если вы используете модуль с датчиком DHT, то он обычно имеет только три контакта. Контакты помечены для их правильного подключения. Кроме того, многие из этих модулей уже оснащены внутренним резистором, поэтому вам не нужно добавлять его в схему.

Установка библиотек

Для считывания показаний с датчика DHT мы воспользуемся библиотекой DHT от Adafruit. Чтобы использовать эту библиотеку, вам необходимо установить библиотеку Adafruit Unified Sensor. Выполните следующие шаги, чтобы установить эти библиотеки.

Откройте свою Arduino IDE и перейдите в Скетч > Подключить библиотеку > Управлять библиотеками. Должен открыться менеджер библиотеки.

Найдите « DHT » в поле поиска и установите библиотеку DHT от Adafruit.

DHT от Adafruit

После установки библиотеки DHT от Adafruit введите «Adafruit Unified Sensor» в поле поиска. Прокрутите до конца, чтобы найти библиотеку и установить ее.

Adafruit Unified Sensor

После установки библиотек перезапустите программу Arduino IDE.

Код

После установки необходимых библиотек вы можете загрузить пример кода из библиотеки.

Перейдите в Файл > Примеры > Библиотека датчиков DHT > DHTtester.

Должен загрузиться следующий код. Он считывает температуру и влажность и отображает результаты через Монитор порта.

Как работает код

Все начинается с включения DHT библиотеки:

Затем определяем контакт, к которому подключен датчик DHT. В этом случае он подключен к цифровому выводу 2.

Затем нужно определить тип датчика DHT, который вы используете. В нашем примере мы используем DHT11.

Если вы используете другой датчик DHT, вам нужно прокомментировать предыдущую строку и прокомментировать следующую:

Затем инициализируйте DHT объект под названием dht, которые вы определили ранее:

В Setup(), инициализируйте Монитор порта на скорости 9600 бод для отладки

Инициализируйте датчик DHT с помощью .begin()

В Loop(), вначале задержка составляет 2 секунды. Эта задержка необходима для того, чтобы датчик мог снять показания. Максимальная частота дискретизации составляет две секунды для DHT22 и одну секунду для DHT11.

Считывать температуру и влажность очень просто. Чтобы получить влажность, вам просто нужно использовать readHumidity () на dht объект. В этом случае мы сохраняем измерение влажности в час. Обратите внимание, что readHumidity () возвращает значение типа float.

Аналогичным образом, чтобы узнать температуру, используйте readTemperature ()

В этой библиотеке также есть методы для вычисления индекса тепла в градусах Фаренгейта и Цельсия:

Наконец, все показания отображаются на экране монитора через Монитор порта.

Читать также:  Графическая библиотека Adafruit GFX

Что получилось

После загрузки кода в Arduino откройте Монитор порта со скоростью 9600 бод. Вы должны получать показания датчика каждые две секунды. Вот что вы должны увидеть на своем мониторе.

Измерение на экране

Устранение неполадок

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

Failed to read from DHT sensor!

Если ваш датчик DHT возвращает сообщение об ошибке «Не удалось считать с датчика DHT!» или показания DHT возвращают «Nan»:

Failed to read from DHT sensor!

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

  • Провода: когда вы создаете проект, вам необходимо дважды проверить контакты проводов или их назначение. После проверки и тестирования правильности подключения вашей цепи она по-прежнему не работает, продолжайте читать следующие советы по устранению неполадок.
  • Питание: датчик DHT имеет рабочий диапазон от 3 В до 5,5 В (DHT11) или от 3 В до 6 В (DHT22). Если вы запитываете датчик от вывода 3,3 В, то в некоторых случаях питание DHT с помощью 5 В решает проблему.
  • Не исправен USB-порт или USB-кабель: иногда недостаточно питания Arduino напрямую от USB-порта. Попробуйте подключить его к USB с питанием от внешнего источника питания. Также может помочь замена USB-кабеля на более качественный или более короткий. Наличие USB-порта, обеспечивающего достаточное количество энергии, или использования хорошего USB-кабеля часто решает эту проблему.
  • Источник питания: как упоминалось в предыдущем совете, ваш Arduino может не подавать достаточно энергии для правильного считывания данных с датчика DHT. В некоторых случаях вам может потребоваться подключения Arduino к источнику питания, обеспечивающему больший ток.
  • Тип датчика: дважды проверьте, что вы прокомментировали в коде нужный датчик. В этом примере мы использовали DHT11:

Читать также:  Логические операторы в Ардуино

  • Частота дискретизации: датчик DHT очень медленно получает показания (считывание показаний датчика может занять более 2 секунд). В некоторых случаях проблему решает увеличение времени между считыванием.
  • Датчик DHT не исправен: к сожалению, эти дешевые датчики иногда выглядят совершенно нормально, но они могут просто не работать. Таким образом, даже если вы собрали правильную схему и написали правильный код, он все равно не сможет получить показания. Попробуйте использовать другой датчик, чтобы посмотреть, решит ли он вашу проблему.
  • Неверная скорость передачи данных или не удалось загрузить код: если вы не видите показания на экране, дважды проверьте, что вы выбрали правильную скорость передачи данных.

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

Fatal error: Adafruit_Sensor.h: No such file or directory

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

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

Adafruit_Sensorh

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

Вывод

Датчики DHT11 и DHT22 предоставляют простой и недорогой способ измерения температуры и влажности с помощью Arduino. Подключение очень простое — вам просто нужно подключить контакты от DHT к цифровым выводам Arduino.

Написание кода для получения температуры и влажности также не составит труда благодаря DHTбиблиотеки. И не забудьте использовать методы readTemperature () и readHumidity () .

С Уважением, МониторБанк

Добавить комментарий