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

Составной датчик DHT11 включает в себя сразу два полезных измерительных прибора — термометр и гигрометр. Первый, очевидно, измеряет температуру, а второй — влажность воздуха. Обычно, датчик можно приобрести в таком вот пластиковом корпусе:

sensor_DHT11_nude

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

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

Характеристики датчика:

  • напряжение питания: от 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

Как видно на фото, выводы нумеруются слева на право, если смотреть на корпус датчика со стороны решетки и ногами вниз. Подключаем выводы к Ардуино Уно по следующей схеме:

Датчик DHT11 1 2 4
Ардуино Уно +5V 2 GND

Принципиальная схема

Подключение DHT11 к Ардуино Уно

Внешний вид макета

Подключение датчика DHT11 к Ардуино

Важно отметить, что второй вывод датчика мы подключаем не только ко второй линии GPIO на Ардуино, но еще и к плюсу питания через резистор подтяжки 4,7 кОм. Таким образом, мы, что называется, «подтягиваем» линию данных датчика к плюсу. Это необходимо для правильного функционирования DHT11.

Подключение модуля DHT11 ROC к Ардуино

В случае использования модуля от RobotClass, подключение будет выглядеть следующим образом.

Принципиальная схема

Подключение датчика DHT11 к Ардуино

Внешний вид макета

Подключение датчика DHT11 к Ардуино

Программа для работы с 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) и наблюдаем результаты измерений!

IMG_20141120_225500

Задания

  1. Автоматическая теплица. Требуется собрать автоматический регулятор влажности, состоящий из контроллера Ардуино Уно, датчика влажности DHT11 и реле. Программа регулятора должна каждые 3 секунды проверять значение влажности и температуры. В случае, если во время очередной проверки влажность опускается ниже 50% при температуре не ниже +20 градусов, с помощью реле включается вентилятор. Для простоты, к реле можно подключить обычный светодиод.

Заключение

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

Полезные материалы

Скачать архив с библиотекой для работы с DHT11 можно по следующей ссылке:

https://github.com/adafruit/DHT-sensor-library

Также библиотеку можно установить через менеджер библиотек в Arduino IDE. В поисковой строке менеджера необходимо ввести «DHT sensor library by Adafruit«.

1+

Изменено:

Ардуино: датчик влажности и температуры DHT11: 5 комментариев

  1. Вопрос есть. У вас тоже точность измерений и скорость изменения показаний не очень? В квартире 21 градус, 34 влажность, ок. Но потом я вышел на улицу с температурой градусов 7-8 и влажностью 95 %, за секунд 30 показания опустились по температуре до 16 градусов, а влажность поднялась всего до 36 %.

    0
    • Датчик DHT11 не славится точностью, это правда. Чуть получше дела обстоят у датчика DHT22. Есть и еще более точные модели.

      1+
    • На скрине показывает влажность 13% при том, что пределы измерения датчика 20-95. Явно что-то не так.

      1+

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.