Это старая версия документа.


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

Описание

Датчик температуры и влажности DHT-22 - это цифровой датчик температуры и влажности. Он использует полимерный ёмкостный датчик влажности и датчик DS18B20 для измерения окружающего воздуха, и выдает цифровой сигнал на пин данных. Он достаточно прост в использовании, но имеет минус при получении данных: недостатком этого датчика является время получения данных - не чаще чем один раз в две секунды.

Характеристики

  • Измерение температуры и относительной влажности
  • Низкое энергопотребление
  • Измерение температуры в диапазоне -40°C - 125°C (погрешность ±0,5°C)
  • Измерение влажности в диапазоне 0% - 100% (погрешность ±2-5%)
  • Шаг измерения температуры 0,1°С
  • Шаг измерения влажности 0,1%
  • Напряжение питания 3 - 5,5В
  • Максимальный потребляемый ток 3 мА (в режиме ожидания 0,15 мА)
  • Потребляемый ток в режиме ожидания: 150нА

Физические размеры

  • Размеры датчика ДхШхВ: 15,5 х 12 х 5,5 мм
  • Размеры модуля датчика ДхШхВ: 28 х 12 х 5,5 мм

Плюсы использования

  • Сочетает в себе два датчика: датчик температуры и датчик влажности
  • Довольно высокая точность при измерении температуры и влажности
  • Просты в использовании
  • Просты в подключении

Минусы использования

  • Стоимость в сравнении с аналогами
  • Долгое время отклика: раз в две секунды

Библиотека для работы с датчиком

Примеры подключения и использования

Пример 1: Подключение датчика DHT-22

Подключение датчика и вывод температуры и влажности на экран сериал-порта (на примере контроллера Smart UNO). Для этого нам понадобится:

Подключение:

Пример кода:

//Подключение библиотеки для работы с датчиком
#include <DHT.h>
 
//определение постоянных значений
#define DHTPIN 8 //пин получения данных с датчика
#define DHTTYPE DHT22 //Значение типа датчика
 
DHT dhtSensor(DHTPIN, DHTTYPE); //инициализация датчика
 
 
void setup() {
  dhtSensor.begin(); //запуск датчика
 
  Serial.begin(9600); //запуск Serial соединения
}
 
void loop() {
  delay(2000); //время чтобы датчик прогрузился
 
  float h = dhtSensor.readHumidity(); //получение данных по влажности
  float t = dhtSensor.readTemperature(); //получние данных по температуре
 
  if(isnan(h) || isnan(t)) return; //возврат если данные по температуре или влажности некорректно считались
 
  //Вывод значений 
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" humidity: ");
  Serial.println(h);
 
}

Пример 2: Подключение модуля датчика DHT-22

Подключение модуля датчика и вывод температуры и влажности на экран сериал-порта (на примере контроллера Smart UNO). Для этого нам понадобится:

Подключение:

Пример кода:

//Подключение библиотеки для работы с датчиком
#include <DHT.h>
 
//определение постоянных значений
#define DHTPIN 8 //пин получения данных с датчика
#define DHTTYPE DHT22 //Значение типа датчика
 
DHT dhtSensor(DHTPIN, DHTTYPE); //инициализация датчика
 
 
void setup() {
  dhtSensor.begin(); //запуск датчика
 
  Serial.begin(9600); //запуск Serial соединения
}
 
void loop() {
  delay(2000); //время чтобы датчик прогрузился
 
  float h = dhtSensor.readHumidity(); //получение данных по влажности
  float t = dhtSensor.readTemperature(); //получние данных по температуре
 
  if(isnan(h) || isnan(t)) return; //возврат если данные по температуре или влажности некорректно считались
 
  //Вывод значений 
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" humidity: ");
  Serial.println(h);
 
}