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

Содержание:


Обзор датчика влажности и температуры

DHT11  — это цифровой датчик влажности и температуры, состоящий из термистора и емкостного датчика влажности.  Также датчик содержит в себе АЦП для преобразования аналоговых значений влажности и температуры. Датчик DHT11 не обладают высоким быстродействием и точностью, но зато прост, недорог и отлично подходят для обучения и контроля влажности в помещении.

 

temperature-sensor-dht11


Технические характеристики датчика DHT11

  • Питание: DC 3,5 – 5,5 В;
  • Ток питания:
  • в режиме измерения 0.3mA;
  • в режиме ожидания 60μA.
  • определение влажности 20–80 % с точностью 5 %;
  • определение температуры 0–50 °С с точностью 2 %;
  • частота опроса не более 1 Гц (не более одного раза в 1 сек.);
  • размеры 15,5´12´5,5 мм.

Подключение

Датчик имеет 4 вывода стандарта 2,54 мм (рисунок 2):

  • 1 — VCC (питание 3–5 В);
  • 2 — DATA (вывод данных);
  • 3 — не используется;
  • 4 — GND (земля).

vyvody-dht11

Между выводами питания и вывода данных необходимо разместить резистор. Рекомендуемый номинал 10 кОм , если расстояние от датчика к ардуино небольшое, для расстояния больше 20 метров рекомендуется резистор номиналом 5,1 кОм. Также рекомендуется конденсатор (фильтр по питанию между VCC и GND).

Протокол обмена — однопроводный, по структуре весьма похож на DS18B20, но с отличиями:

  • DHT не умеет работать в «паразитном» режиме;
  • каждый DS18B20 имеет персональный идентификатор, что дает возможность подключения нескольких таких датчиков к одному пину Arduino. Однако у DHT такой возможности нет — один датчик будет использовать строго один цифровой пин.

Пример использования

Рассмотрим подключение датчика DHT11 к Arduino и создадим проект для отображения на RGB-светодиоде состояния влажности воздуха в помещении:

  • зеленый – оптимальная влажность воздуха для человека (40 – 60%);
  • красный – сухо (<40%);
  • синий – повышенная влажность ( >60%).

Для проекта нам понадобятся следующие детали:

Соберем схему, показанную на рисунке.

shema-podkljuchenija-dht11Запустим Arduino IDE. Создадим новый скетч и внесем в него следующее содержимое

//makerplus.ru
// подключение библиотеки
#include "DHT.h"

// пин для подключения датчика DHT
#define DHTPIN 2     // what pin we're connected to

// тип датчика DHT
#define DHTTYPE DHT11   // DHT 11

//#define DHTTYPE DHT22   // DHT 22 (AM2302)

// создание экземпляра объекта DHT
DHT dht(DHTPIN, DHTTYPE);

// подключение RGB-светодиода
const int pinRED=5; // вывод красной ноги RGB-светодиода
const int pinGREEN=4; // вывод зеленой ноги RGB-светодиода
const int pinBLUE=3; // вывод синей ноги RGB-светодиода

void setup() {
// подключение последовательного порта
Serial.begin(9600);
// запуск датчика DHT
dht.begin();

// настройка выводов подключения к RGB светодиоду
pinMode(pinRED,OUTPUT);
pinMode(pinGREEN,OUTPUT);
pinMode(pinBLUE,OUTPUT);
} 

void loop() {

// получение данных влажности
float h = dht.readHumidity();

// ошибочные данные с датчика!
if (isnan(h)) {
Serial.println("Failed to read from DHT");
setRGB(0,0,0);

} else {

Serial.print("Humidity: ");
Serial.println(h);

if(h<40)
setRGB(1,0,0);
else if(h>60)
setRGB(0,0,1);
else
setRGB(0,1,0);
}

// пауза 5 секунд
delay(5000);
}

// процедура установки цвета для RGB-светодиода
void setRGB(int R, int G, int B) {
digitalWrite(pinRED,R);
digitalWrite(pinGREEN,G);
digitalWrite(pinBLUE,B);
}

Для работы с датчиком DHT11 используем Arduino библиотеку DHT. Необходимо выбрать тип датчика, в нашем случае DHT11

#define DHTTYPE DHT11

С интервалом 5 секунд получаем с датчика DHT11 значение относительной влажности воздуха. В зависимости от полученного значения, устанавливаем цвет «горения» RGB-светодиода (красный, зеленый, синий). В случае ошибки получения данных с датчика DHT11, светодиод «не горит». Зажигаем RGB-светодиод в процедуре setRGB(), передавая данные для R, G и B компоненты цвета. Для контроля выводим данные относительной влажности воздуха в монитор последовательного порта Arduino IDE.

podkljuchenie-dht11

Схема в сборе.

primenenie-dht11


Часто задаваемые вопросы FAQ

  • RGB-светодиод не горит

Проверьте правильность подключения светодиода;

Проверьте показания датчика в мониторе последовательного порта.

  • Ошибка получения показаний датчика DHT11

Проверьте правильность подключения датчика DHT11 порта.

  • RGB светодиод горит неправильно (цвета другие)

Проверьте цоколевку вашего RGB-светодиода по даташиту.