Цифровые датчики DHT11 и DHT22 предназначены для измерения относительной влажности и температуры окружающий среды.
Датчики
Эти сенсоры простые и медленные, но при этом отлично подходят для проектов на Arduino, Wemos, nodemcu и прочих платформ на микроконтроллерах. Датчики 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 более точный и имеет больший диапазон измеряемых значений, но стоит немного дороже DHT11. Оба датчика имеют по одному цифровому выходу. Запросы к ним можно отправлять не чаще чем один в секунду или две.
Подключение DHT11 (DHT22) к Ардуино
Чтобы подключить DHT11 или DHT22 к Ардуино нам нужно сделать всего несколько простых шагов.
Комплектующие
Для сбора устройства Вам понадобятся:
1. Arduino UNO, либо другой аналогичный ардуино, отличающийся формфактором;
2. Датчик влажности DHT11;
3. Резистор 10КОм;
4. Макетная плата;
Схема подключения сенсоров
Собрать очень простую схему соответственно изображению ниже:
Код программы
После того как вы собрали тестовый стенд для испытаний датчика, вам потребуется скачать библиотеку DHT11 и подключить к среде разработки Arduino IDE, скачать библиотеку можно по этой ссылке. Как установить библиотеку, мы уже рассказывали в статье Установка и подключение библиотек.
Далее нужно загрузить скетч (см. ниже) через Arduino IDE на плату, и тогда мы уже сможем считывать показания датчиков и получим температуру и влажность окружающей среды. Т.е., подключив Ардуино к компьютеру и выбрав вашу плату и порт, заливаем скетч:
#include <dht11.h> dht11 DHT; //Вывод данных DHT11 подключен к ноге 4 #define DHT11_PIN 4 void setup() { Serial.begin(9600); //Запускаем отладочный порт int check; Serial.print("DHT11 STATUS – \t"); //Состояние датчика check = DHT.read(DHT11_PIN); //запрашиваем состояние //Выводим результат switch (check) { case DHTLIB_OK: //Датчик готов к работе Serial.print("OK\n"); break; case DHTLIB_ERROR_CHECKSUM: //Ошибка контрольной суммы - проверить контакт Serial.print("Checksum error\n"); break; case DHTLIB_ERROR_TIMEOUT: //Превышено премя ожидания Serial.print("Timeout error\n"); break; default: //Библиотека не может подключиться к датчику по неизвестной причине Serial.print("Unknown error\n"); break; } } void loop() { //Вывод температуры и влажности Serial.print("Humidity is "); Serial.print(DHT.humidity,1); //Влажность Serial.print("\n"); Serial.println("Temperature is "); Serial.println(DHT.temperature,1); //Температура delay(1000); // Опрос раз в секунду }
После того как вы залили скетч, открываем последовательный монитор порта и смотрим показания датчика.
Подышав на датчик, можно отследить изменения показаний. В этом случае уровень влажности должен увеличиться. А если приложить к датчику что-нибудь горячее, температура тоже поползет вверх.