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

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

sensor_DHT11_nude

Но бывают версии распаянные на небольшой платке, например так:

sensor_DHT11_cut

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

  • напряжение питания — 3-5В;
  • потребляемый ток — 2.5 мА в момент опроса (в остальное время меньше);
  • диапазон измерений влажности — 20-80%, при точности — 5%;
  • диапазон измерений температур — 0-50°C, при точности ±2°C;
  • частота опроса — 1 Гц (раз в секунду).

Кроме DHT-11, вы можно легко встретить и его близких собратьев: DHT-22, 33 и 44. Отличаются эти датчики более высоким уровнем точности и диапазоном измерений. Например, у датчика DHT-22 диапазон измерений влажности составляет от 0 до 100%, а температуры от -40 до 125°C.

1. Подключение датчика DHT11

У датчика DHT-11 есть четыре вывода, один из которых (№3) не используется.

dht11

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

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

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

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

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

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

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

IMG_20141120_225445IMG_20141120_225422

2. Запускаем тестовый опрос датчика

Теперь, когда датчик подключен, приступим к программированию контроллера. Первое, что нам следует сделать — установить в Arduino IDE дополнительную библиотеку. Существует несколько библиотек для работы с DHT, но мы выберем вариант с портала adafruit. Скачать архив с библиотекой можно по следующей ссылке:

https://github.com/adafruit/DHT-sensor-library/archive/master.zip

Устанавливаем библиотеку и составляем тестовую программу:

#include "DHT.h"

#define DHTTYPE DHT11 // DHT 11 
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

const byte dht_pin = 2;

DHT dht(dht_pin, DHTTYPE);

void setup() {
    Serial.begin(9600); 
    Serial.println("Test DHT11"); 
    dht.begin();
}

void loop() {
    float h = dht.readHumidity();
    float t = dht.readTemperature();

    if (isnan(t) || isnan(h)) {
        Serial.println("Failed to read from DHT");
    } else {
        Serial.print("Humidity: "); 
        Serial.print(h);
        Serial.print(" %\t");
        Serial.print("Temperature: "); 
        Serial.print(t);
        Serial.println(" *C");
    }
}

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

Загружаем программу в Ардуино Уно, открываем монитор последовательного порта (Tools/Serial Monitor) и наблюдаем результаты измерений!

IMG_20141120_225500

Задания

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

Заключение

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


Изменено:

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

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

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

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

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>