Опубликовано

Датчик температуры и влажности воздуха DHT11/DHT22

По материалам руководства к набору “Умный дом на базе Arduino. Большой набор + КНИГА

Датчики DHT11/DHT22 (рис. S1.1) предназначены для измерения температуры и влажности воздуха.

Внешний вид, назначение контактов

2-01-DHT11

Рис. S1.1. Датчик DHT11

Основные характеристики

Наименование Значение
DHT11 DHT22
Диапазон измерения температуры/точность измерения 0 ÷ 50°С /±2°C –40 ÷ 125°С /±0,5°C
Диапазон измерения относительной влажности 20 ÷ 80% /±5°C 0 ÷ 100% /±2 ÷ 5°C
Частота опроса датчиков, Гц 1 (один раз в секунду) 0,5 (1 раз в две секунды)
Размеры, мм 15,5×12,0×5,5 15,1×25,0×7,7
Напряжение питания, В 3 ÷ 5 3 ÷ 5
Максимальный ток, мА 2,5 2,5

Схема подключения

S1-2-DHT11

Рис. S1.2. Подключение датчика DHT11


Внимание!

Если расстояние от датчика до Arduino небольшое, рекомендуемый номинал резистора R1 10 кОм (рис. S1.2), а для расстояния больше 20 метров, рекомендуется резистор номиналом 5,1 кОм. Если же датчик имеет только три контакта (5V, OUT и GND), то резистор R1 вообще не нужен.


Программный код

  1. Загрузите библиотеку DHT-sensor-library для работы Arduino с датчиками DHT11 и DHT22. Для этого откройте Менеджер библиотек, выполнив команду Инструменты | Управлять библиотеками. Справа вверху в строке поиска введите DHT. В открывшемся списке выберите DHT sensor library by Adafruit версии 1.2.3 (в версиях 1.3.0 и новее возможна ошибка при компиляции). Нажмите кнопку Установка.
  2. Загрузите скетч из листинга S1.1.

Электронный архив скетчей и библиотек

Электронный архив скетчей и библиотек расположен по адресу https://bhv.ru/product/umnyj-dom-na-baze-arduino-bolshoj-nabor/. Скетчи в этом архиве вы найдете в папке Скетчи, а библиотеки — в папке Библиотеки.


Листинг S1.1. Измерение температуры и влажности с помощью датчика DHT11

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include "DHT.h"
 
#define DHTPIN 7 //пин для получения сигнала от датчика DHT11
 
// Раскомментируйте тип датчика, который вы используете
 
#define DHTTYPE DHT11 // DHT 11
 
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
 
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
 
DHT dht(DHTPIN, DHTTYPE);
 
void setup() {
 
Serial.begin(9600);
 
dht.begin();
 
}
 
void loop() {
 
// Задержка перед измерениями
 
delay(2000);
 
float h = dht.readHumidity();
 
//чтение температуры в градусах Цельсия °С (по умолчанию)
 
float t = dht.readTemperature();
 
//чтение температуры в градусах Фаренгейта °F (isFahrenheit = true)
 
float f = dht.readTemperature(true);
 
// Проверка чтения данных
 
if (isnan(h) || isnan(t) || isnan(f)) {
 
Serial.println("Failed to read from DHT sensor!");
 
return;
 
}
 
// Вычисление теплового индекса в °F (по умолчанию)
 
float hif = dht.computeHeatIndex(f, h);
 
// Вычисление теплового индекса в °С (isFahreheit = false)
 
float hic = dht.computeHeatIndex(t, h, false);
 
Serial.print("Humidity: ");
 
Serial.print(h);
 
Serial.print(" %\t");
 
Serial.print("Temperature: ");
 
Serial.print(t);
 
Serial.print(" *C ");
 
Serial.print(f);
 
Serial.print(" *F\t");
 
Serial.print("Heat index: ");
 
Serial.print(hic);
 
Serial.print(" *C ");
 
Serial.print(hif);
 
Serial.println(" *F");
 
}

Результат

Датчик2

Рис. S1.3. Результаты измерений датчика DHT11