DHT11 — это цифровой датчик влажности и температуры, состоящий из термистора и емкостного датчика влажности. Также датчик содержит в себе АЦП для преобразования аналоговых значений влажности и температуры. Датчик DHT11 не обладают высоким быстродействием и точностью, но зато прост, недорог и отлично подходят для обучения и контроля влажности в помещении.
Технические характеристики датчика DHT11
- Питание: DC 3,5 – 5,5 В
- Ток питания
- в режиме измерения 0.3mA
- в режиме ожидания 60μA
- определение влажности 20–80 % с точностью 5 %
- определение температуры 0–50 °С с точностью 2 %
- частота опроса не более 1 Гц (не более одного раза в 1 сек.)
- размеры 15,5x12x5,5 мм
Подключение
Датчик имеет 4 вывода стандарта 2,54 мм:
- 1 — VCC (питание 3–5 В);
- 2 — DATA (вывод данных);
- 3 — не используется;
- 4 — GND (земля).
Между выводами питания и вывода данных необходимо разместить резистор. Рекомендуемый номинал 10 кОм , если расстояние от датчика к ардуино небольшое, для расстояния больше 20 метров рекомендуется резистор номиналом 5,1 кОм. Также рекомендуется конденсатор (фильтр по питанию между VCC и GND). Протокол обмена — однопроводный, по структуре весьма похож на DS18B20, но с отличиями:
- DHT не умеет работать в "паразитном" режиме;
- каждый DS18B20 имеет персональный идентификатор, что дает возможность подключения нескольких таких датчиков к одному пину Arduino. Однако у DHT такой возможности нет — один датчик будет использовать строго один цифровой пин.
Пример использования
Рассмотрим подключение датчика DHT11 к Arduino и создадим проект для отображения на RGB-светодиоде состояния влажности воздуха в помещении:
- зеленый – оптимальная влажность воздуха для человека (40 – 60%);
- красный – сухо (<40%);
- синий – повышенная влажность ( >60%).
Для проекта нам понадобятся следующие детали:
- совместимая плата Arduino Uno
- плата прототипирования
- RGB-светодиод
- датчик DHT11
- резистор 10 кОм
- резистор 220 Ом – 3 шт
- соединительные провода
Соберем схему, показанную на рисунке.
Запустим Arduino IDE. Создадим новый скетч и внесем в него следующее содержимое:
// подключение библиотеки
#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");
set#000000;
} else {
Serial.print("Humidity: ");
Serial.println(h);
if(h<40)
set#010000;
else if(h>60)
set#000001;
else
set#000100;
}
// пауза 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.
Схема в сборе
Что делать если
Не горит RGB-светодиод
Проверьте правильность подключения светодиода.
Проверьте показания датчика в мониторе последовательного порта.
Ошибка получения показаний датчика DHT11
RGB светодиод горит неправильно (цвета другие)