Составной датчик DHT11 включает в себя сразу два полезных измерительных прибора — термометр и гигрометр. Первый, очевидно, измеряет температуру, а второй — влажность воздуха. Обычно, датчик можно приобрести в таком вот пластиковом корпусе:
Для удобства использования, мы в RobotClass сделали модуль в форм-факторе 23×23мм, на котором датчик DHT11 уже имеет необходимый для правильной работы резистор подтяжки и штыревой трёхконтактный разъём.

Характеристики датчика:
- напряжение питания: от 3 до 5 В;
- потребляемый ток: 2,5 мА в момент опроса (в остальное время меньше);
- диапазон измерений влажности: от 20 до 80%, при точности — 5%;
- диапазон измерений температур: от 0 до 50°C, при точности ±2°C;
- частота опроса: 1 Гц (раз в секунду).
Датчик DHT11 можно использовать для создания простой погодной станции или для контроля влажности в теплице.
Кроме DHT-11, существует множество аналогичных датчиков, которые отличаются точностью, энергопотреблением, интерфейсом. Например, у датчика DHT-22 диапазон измерений влажности составляет от 0 до 100%, а температуры от -40 до 125°C.
Подключение датчика DHT11 к Ардуино
У датчика DHT11 есть четыре вывода, один из которых (№3) не используется.
Как видно на фото, выводы нумеруются слева на право, если смотреть на корпус датчика со стороны решетки и ногами вниз. Подключаем выводы к Ардуино Уно по следующей схеме:
Датчик DHT11 | 1 | 2 | 4 |
Ардуино Уно | +5V | 2 | GND |
Принципиальная схема
Внешний вид макета
Важно отметить, что второй вывод датчика мы подключаем не только ко второй линии GPIO на Ардуино, но еще и к плюсу питания через резистор подтяжки 4,7 кОм. Таким образом, мы, что называется, «подтягиваем» линию данных датчика к плюсу. Это необходимо для правильного функционирования DHT11.
Подключение модуля DHT11 ROC к Ардуино
В случае использования модуля от RobotClass, подключение будет выглядеть следующим образом.
Принципиальная схема
Внешний вид макета
Программа для работы с DHT11
Теперь, когда датчик подключен, приступим к программированию контроллера. Первое, что нам следует сделать — установить в Arduino IDE дополнительную библиотеку. Существует множество библиотек для работы с DHT, но мы выберем вариант с портала Adafruit. Ссылка на библиотеку имеется в конце урока.
Устанавливаем библиотеку и составляем тестовую программу:
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
// датчик подключен к контакту №2
#define DHTPIN 2
// выбираем модель датчика, раскомментировав нужную строку
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// создаем объект dht, с которым будем работать
DHT_Unified dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
// инициализируем датчика
dht.begin();
}
void loop() {
sensors_event_t event;
// получаем значение температуры
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
// в случае проблем с датчиком температуры выводим следующий текст
Serial.println("Error reading temperature!");
}
else {
// вывод в COM порт текста Temperature: xxx°C
Serial.print("Temperature: ");
Serial.print(event.temperature);
Serial.println("°C");
}
// получаем значение влажности
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
// в случае проблем с датчиком влажности выводим следующий текст
Serial.println("Error reading humidity!");
}
else {
// вывод в COM порт текста Humidity: xxx%
Serial.print("Humidity: ");
Serial.print(event.relative_humidity);
Serial.println("%");
}
delay(1000); // пауза 1 сек перед следующим опросом датчика
}
В верхней части программы имеется три строки с директивой define, две из которых закомментированы (перед ними стоят два слеша). В зависимости от типа датчика мы можем раскомментировать нужную строку. Сейчас выбран датчик DHT11.
Загружаем программу в Ардуино Уно, открываем монитор последовательного порта (Tools/Serial Monitor) и наблюдаем результаты измерений!
Задания
- Автоматическая теплица. Требуется собрать автоматический регулятор влажности, состоящий из контроллера Ардуино Уно, датчика влажности DHT11 и реле. Программа регулятора должна каждые 3 секунды проверять значение влажности и температуры. В случае, если во время очередной проверки влажность опускается ниже 50% при температуре не ниже +20 градусов, с помощью реле включается вентилятор. Для простоты, к реле можно подключить обычный светодиод.
Заключение
Хотя датчик влажности DHT11 и является самым популярным, он не отличается выдающимися характеристиками. К примеру, его более продвинутый собрат DHT22 имеет больший диапазон измерений влажности и температуры, а также большую точность.
Полезные материалы
Скачать архив с библиотекой для работы с DHT11 можно по следующей ссылке:
https://github.com/adafruit/DHT-sensor-library
Также библиотеку можно установить через менеджер библиотек в Arduino IDE. В поисковой строке менеджера необходимо ввести «DHT sensor library by Adafruit«.
Вопрос есть. У вас тоже точность измерений и скорость изменения показаний не очень? В квартире 21 градус, 34 влажность, ок. Но потом я вышел на улицу с температурой градусов 7-8 и влажностью 95 %, за секунд 30 показания опустились по температуре до 16 градусов, а влажность поднялась всего до 36 %.
Датчик DHT11 не славится точностью, это правда. Чуть получше дела обстоят у датчика DHT22. Есть и еще более точные модели.
На скрине показывает влажность 13% при том, что пределы измерения датчика 20-95. Явно что-то не так.
А где решение задачи посмотреть?
Датчик,который на картинке-включается в схему без резистора!!