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

Датчик температуры и влажности воздуха 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://books.bhv.ru/product/umnyj-dom-na-baze-arduino-bolshoj-nabor/. Скетчи в этом архиве вы найдете в папке Скетчи, а библиотеки — в папке Библиотеки.


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

#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

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