В статье рассмотрены основы работы с недорогими датчиками влажности и температуры серии DHT. Эти сенсоры простые и медленные, но при этом отлично подходят для хобби-проектов на Arduino. Датчики DHT состоят из двух основных частей: ёмкостный датчик влажности и термистор. Также в корпусе установлен простенький чип для преобразования аналогового сигнала в цифровой. Считывать цифровой сигнал на выходе достаточно просто, можно использовать любой контроллер, не обязательно Arduino.
Технические характеристики DHT11 и DHT22
Существуют две версии сенсоров DHT. Выглядят они почти одинаково. Распиновка тоже одинаковая. Основные отличия — в технических характеристиках:
DHT11:
- Очень дешевый.
- Питание от 3 до 5В.
- Максимально потребляемый ток — 2.5мА при преобразовании (при запросе данных).
- Рассчитан на измерение уровня влажности в диапазоне от 20% до 80%. При этом точность измерений находится в диапазоне 5%.
- Измеряет температуру в диапазоне от 0 до 50 градусов с точностью плюс-минус 2%.
- Частота измерений не более 1 Гц (одно измерение в секунду).
- Размер корпуса: 15.5 мм x 12 мм x 5.5 мм.
- 4 коннектора. Расстояние между соседними — 0.1″.
DHT22:
- Дешевый.
- Питание от 3 до 5В.
- Максимально потребляемый ток — 2.5мА при преобразовании (при запросе данных).
- Рассчитан на измерение уровня влажности в диапазоне от 0% до 100%. При этом точность измерений находится в диапазоне 2%-5%.
- Измеряет температуру в диапазоне от -40 до 125 градусов с точностью плюс-минус 0.5 градусов по Цельсию.
- Частота измерений до 0.5 Гц (одно измерение за 2 секунды).
- Размер корпуса: 15.1 мм x 25 мм x 7.7 мм.
- 4 коннектора. Расстояние между соседними — 0.1″.
Как видите, DHT22 более точный и имеет больший диапазон измеряемых значений. Оба датчика имеют по одному цифровому выходу. Запросы к ним можно отправлять не чаще чем один в секунду или две.
Подключение датчиков DHT к Arduino
Подключаются датчики легко. Так как у них достаточно длинные коннекторы 0.1″, можно устанавливать их непосредственно на макетную или монтажную плату (смотрите на рисунке ниже).
Непосредственное подключение к Arduino тоже простое. На сенсоре 4 коннектора:
- Питание (VCC) — от 3 до 5 В.
- Вывод данных.
- Не подключается.
- Земля.
Коннектор 3 просто игнорируйте, он не подключается. Желательно подключить подтягивающий резистор на 10 кОм между питанием и сигналом. На Arduino есть встроенные резисторы, но их номинал 100кОм нам не подойдет.
На рисунке ниже приведена схема подключения DHT11 к Arduino. Подключите сигнал с датчика к пину 2, чтобы схема соответствовала примеру скетча, который приведен ниже. Этот пин можно изменить с соответствующими правками в коде.
Считывание данных с датчиков DHTxx
Для проверки скетча мы используем Arduino. Можно использовать любой другой микроконтроллер, который поддерживает тайминг в микросекундах.
Для начала скачайте библиотеку для работы с DHT датчиками здесь: Github. Для загрузки нажмите кнопку DOWNLOADS в верхнем правом углу.
Переименуйте папку DHT и убедитесь, что в ней есть файл dht.cpp и другие. После этого переместите папку DHT в папку arduinosketchfolder/libraries/ . Возможно вам придется создать подпапку для библиотек, если вы впервые интегрируете библиотеку. Перезагрузите Arduino IDE.
Теперь загрузите скетч: Examples->DHT->DHTtester. Выглядит программа примерно так:
Если вы используете датчик модели DHT11, закомментируйте строку, которая устанавливает тип:
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
И снимите комментарий со строки:
#define DHTTYPE DHT11 // DHT 11
Эти настройки помогают снимать правильные значения именно с вашей модели датчика. В окне серийного монитора этобудет выглядеть примерно так:
Вы должны увидеть показания температуры и влажности. Подышав на датчик, можно отследить изменения показаний. В этом случае уровень влажности должен увеличиться.