Датчики температуры и влажности DHT
Датчики влажности и температуры DHT (ВР11 и DH22) одновременно могу измерять температуру и относительную влажность выглядит логично, поскольку второе напрямую зависит от первого.
Характеристики датчиков DH11, DH22
Датчики DH11 и DH22 не отличаются высоким быстродействием и точностью, однако могут найти свое применение в радиолюбительских проектах из-за своей невысокой стоимости. Датчики DHT состоят из емкостного датчика влажности и термистора. Кроме того, датчик содержит в себе простенький АЦП для преобразования аналоговых значений влажности и температуры.
Датчик имеет 4 вывода стандарта 2,54 мм:
1 — VCC (питание 3–5 В);
2 — DATA (вывод данных);
3 — не используется;
4 — GND (земля).
Протокол обмена — однопроводный, по структуре весьма похож на DS18B20, но с важными оговорками:
DHT не умеет работать в "паразитном" режиме (питание по линии данных);
каждый DS18B20 имеет персональный идентификатор, что дает возможность подключения нескольких таких датчиков к одному пину Arduino. Однако у DHT такой возможности нет — один датчик будет использовать строго один цифровой пин.
![]() |
![]() |
Датчик DHT11 | Датчик DHT22 |
Общие характеристики датчиков:
DHT11:
• очень низкая стоимость;
• питание и I/O: 3–5 В;
• определение влажности 20–80 % с точностью 5 %;
• определение температуры 0–50 °С с точностью 2 %;
• частота опроса не более 1 Гц (не более одного раза в 1 сек.);
• размеры 15,5×12×5,5 мм;
DHT22:
• низкая стоимость;
• питание и I/O: 3–5 В;
• определение влажности 0–100 % с точностью 2–5 %;
• определение температуры –40…+125 °С с точностью ±0,5 °С;
• частота опроса не более 0,5 Гц (не более одного раза в 2 сек);
• размеры 15,1×25×7,7 мм.
Сенсор DHT22 имеет лучшие, чем у DHT11, характеристики, но более высокую стоимость.
Подключение к Arduino
Рекомендуемая схема подключения к Arduino содержит обязательный для однопроводных линий резистор-подтяжку к VCC и, в качестве опции, рекомендуется конденсатор (фильтр по питанию между VCC и GND).
![]() |
Схема подключения DHT11, DHT22 к Arduino |
Если к вам в руки попали DHT11 или DH22 на небольшой плате, можно подключать их напрямую к Arduino — резистор и конденсатор там уже и так есть.
![]() |
Схема подключения DHT11, DHT22 к Arduino |
Библиотека DHT
Для работы Arduino с датчиками DH11 и DH22 уже есть готовая библиотека — DHT, скачать которую можно со страницы в Интернете https://github.com/adafruit/DHT- sensor-library.
Для использования датчика DHT11 необходимо закомментировать строку:
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
и раскомментировать:
#define DHTTYPE DHT11 // DHT 11
DHT11
Sketch code
#include <DHT.h>
#define dht_apin A0 // Analog Pin sensor is connected to
dht DHT;
void setup(){
Serial.begin(9600);
delay(500);//Delay to let system boot
Serial.println("DHT11 Humidity & temperature Sensor\n\n");
delay(1000);//Wait before accessing Sensor
}//end "setup()"
void loop(){
//Start of Program
DHT.read11(dht_apin);
Serial.print("Current humidity = ");
Serial.print(DHT.humidity);
Serial.print("% ");
Serial.print("temperature = ");
Serial.print(DHT.temperature);
Serial.println("C ");
delay(5000);//Wait 5 seconds before accessing sensor again.
//Fastest should be once every two seconds.
}// end loop()
Sketch code
#include "DHT.h"
#define DHTPIN 2 // пин подключения
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht(DHTPIN, DHTTYPE);
void setup() { Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin();
}
void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) float h = dht.readHumidity();
float t = dht.readTemperature();
// check if returns are valid, if they are NaN (not a number) then something went wrong!
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");
}
}
Скачать програму : DHT11_Sketch.zip