Подключаем датчик влажности DHT к Ардуино. Описание библиотеки. 4

dht11

Даташит датчика dht11

Схема подключения одного датчика 11 к Ардуино.

Подключение датчика влажности dht11 к Ардуино

Если Вы купили датчик припаянный на плату, и у платы всего 3 ножки для подключения, то резистор уже на ней есть, и по маркировки этих выводов подключаете к Ардуино (в нашем случае это, «-» минус, «S» сигнал к ардуино, третий на +).

Описание работы библиотеки

Для опроса датчика используем библиотеку https://github.com/adafruit/DHT-sensor-library

Пример из библиотеки с пояснениями:

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
#include "DHT.h"
 
#define DHTPIN 2     // Пин на который подключен сигнал с датчика
 
//ниже тип нашего датчика DHT
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
 
DHT dht(DHTPIN, DHTTYPE);//создаем объект DHT
 
void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
  dht.begin();
}
 
void loop() {
  // опрашиваем датчик каждые 2 секунды, эти датчики очень медленные, опрос температуры и влажности занимает 250 миллисекунд
  delay(2000);
  float h = dht.readHumidity();//читаем влажность с датчика
  float t = dht.readTemperature();//читаем температуру по Цельсию
  float f = dht.readTemperature(true);//читаем температуру по Фарингейту
  if (isnan(h) || isnan(t) || isnan(f)) {//проверяем полученные данные на валидность
    Serial.println("Ошибка чтения данных!");
    return;
  }
 
  //ниже очень интересный параметр-Температура восприятия, температура , которая зависит от влажности окружающей среды.
  //Температура восприятия по Фарингейту
  float hif = dht.computeHeatIndex(f, h);
  //Температура восприятия по Цельсию 
  float hic = dht.computeHeatIndex(t, h, false);
  //выводим все параметры в сериал
  Serial.print("Влажность: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Температура: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Температура восприятия: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}
#include "DHT.h"

#define DHTPIN 2     // Пин на который подключен сигнал с датчика

//ниже тип нашего датчика DHT
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);//создаем объект DHT

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
  dht.begin();
}

void loop() {
  // опрашиваем датчик каждые 2 секунды, эти датчики очень медленные, опрос температуры и влажности занимает 250 миллисекунд
  delay(2000);
  float h = dht.readHumidity();//читаем влажность с датчика
  float t = dht.readTemperature();//читаем температуру по Цельсию
  float f = dht.readTemperature(true);//читаем температуру по Фарингейту
  if (isnan(h) || isnan(t) || isnan(f)) {//проверяем полученные данные на валидность
    Serial.println("Ошибка чтения данных!");
    return;
  }

  //ниже очень интересный параметр-Температура восприятия, температура , которая зависит от влажности окружающей среды.
  //Температура восприятия по Фарингейту
  float hif = dht.computeHeatIndex(f, h);
  //Температура восприятия по Цельсию 
  float hic = dht.computeHeatIndex(t, h, false);
  //выводим все параметры в сериал
  Serial.print("Влажность: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Температура: ");
  Serial.print(t);
  Serial.print(" *C ");
  Serial.print(f);
  Serial.print(" *F\t");
  Serial.print("Температура восприятия: ");
  Serial.print(hic);
  Serial.print(" *C ");
  Serial.print(hif);
  Serial.println(" *F");
}

В руках у меня оказали два таких датчика. Подключил их к Ардуине, и как оказалось, данные влажности на них сильно отличаются. Может сборка не качественная

Влажность: 34.00 % Температура: 27.00 *C 80.60 *F Температура восприятия: 26.59 *C 79.85 *F

Влажность: 39.00 % Температура: 27.00 *C 80.60 *F Температура восприятия: 26.82 *C 80.26 *F

Влажность отличается на 5-6 %.

PS. В следующей статье попробуем откалибровать данные датчики.

4 комментс для “Подключаем датчик влажности DHT к Ардуино. Описание библиотеки.

  1. Ответить Сергей Окт 10, 2015 11:55

    У DHT11 вроде как погрешность +-5% по влажности, так что всё ок)

  2. Ответить Даня Окт 21, 2015 06:20

    Humidity: 2022.40 % Temperature: 768.00 *C 1414.40 *F Heat index: -4019648.50 *C -7235408.00 *F
    фигня какаето

    • Ответить Slava Окт 21, 2015 10:19

      проверьте, правильно ли выбран тип датчика

      //ниже тип нашего датчика DHT
      #define DHTTYPE DHT11 // DHT 11
      //#define DHTTYPE DHT22 // DHT 22 (AM2302)
      //#define DHTTYPE DHT21 // DHT 21 (AM2301)

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