KY-015 - Модуль с датчиком температуры и влажности DHT11. Подключение к Arduino.

Для Arduino существует большое количество датчиков и модулей измерения температуры. Модули KY-001, KY-013 мы уже рассмотрели в предыдущих уроках. Сегодня поговорим о модуле KY-015, который оснащен датчиком DHT11, он может измерять не только температуру, но и влажность воздуха.

модуле KY-015, который оснащен датчиком DHT11

Описание модуля KY-015 с датчиком DHT11.

Модуль датчика температуры и влажности KY-015 обеспечен цифровым последовательным интерфейсом для измерения влажности и температуры и передачи показаний Arduino.

Технические характеристики KY-015.

Описание модуля KY-015 с датчиком DHT11

Модуль KY-015 состоит из цифрового датчика влажности и температуры DHT11 и резистора 1 кОм. DHT11 использует внутренний термистор и емкостной датчик влажности для определения условий окружающей среды, а внутренний чип отвечает за преобразование показаний в последовательный цифровой сигнал.

Рабочее напряжение

От 3,3 до 5,5 В

Диапазон измерения влажности

От 20% до 90%

Точность измерения влажности

± 5%

Разрешение измерения влажности

1%

Диапазон измерения температуры

От 0 ºC до 50 ºC

Точность измерения температуры

± 2 ºC

Разрешение измерения температуры

1 ºC

Дальность передачи сигнала

20 м

модуля KY-015 с датчиком DHT11 к Arduino UNO

Схема подключения модуля KY-015 с датчиком DHT11 к Arduino UNO.

Схема подключения модуля KY-015 с датчиком DHT11 к Arduino UNO.

Схема подключения модуля KY-015 с датчиком DHT11 к Arduino NANO.

Схема подключения модуля KY-015 с датчиком DHT11 к Arduino NANO.

Подключаем линию питания (посередине) и землю (-) к +5 и GND соответственно. Сигнал (S) подключаем к контакту 2 на Arduino.

Пример скетча KY-015 для Arduino без использования библиотек.

int DHpin = 2; // pin  ввода/вывода
byte dat[5];   

byte read_data()
{
  byte i = 0;
  byte result = 0;
  for (i = 0; i < 8; i++) {
      while (digitalRead(DHpin) == LOW); // ждать 50 микрсек. 
      delayMicroseconds(30); //Продолжительность высокого уровня оценивается для определения того, являются ли данные " 0 " или "1"
      if (digitalRead(DHpin) == HIGH)
        result |= (1 << (8 - i)); //Высоко в начале, низко в посте
    while (digitalRead(DHpin) == HIGH); //Данные '1', ожидание следующего бита приема
    }
  return result;
}

void start_test()
{
  digitalWrite(DHpin, LOW); //Потяните вниз шину, чтобы отправить сигнал запуска
  delay(30); //Задержка превышает 30 мс, так что DHT 11 может обнаружить сигнал запуска
  digitalWrite(DHpin, HIGH);
  delayMicroseconds(40); //Дождитесь ответа DHT11
  pinMode(DHpin, INPUT);
  while(digitalRead(DHpin) == HIGH);
  delayMicroseconds(80); // DHT11 реагирует, потянув шину низко на 80 микрсек.
  
  if(digitalRead(DHpin) == LOW)
    delayMicroseconds(80); //DHT11 подтянут 80 микрсек, чтобы начать отправку данных;
  for(int i = 0; i < 5; i++) //При получении данных о температуре и влажности контрольные биты не учитываются;
    dat[i] = read_data();
  pinMode(DHpin, OUTPUT);
  digitalWrite(DHpin, HIGH); //После завершения отпускаем шины данных, ожидая, когда хост начнет следующий сигнал
}

void setup()
{
  Serial.begin(9600);
  pinMode(DHpin, OUTPUT);
}

void loop()
{
  start_test();
  Serial.print("Humdity = ");
  Serial.print(dat[0], DEC); //Отображает целочисленные биты влажности;
  Serial.print('.');
  Serial.print(dat[1], DEC); //Отображает десятичные знаки влажности;
  Serial.println('%');
  Serial.print("Temperature = ");
  Serial.print(dat[2], DEC); //Отображает целочисленные биты температуры;
  Serial.print('.');
  Serial.print(dat[3], DEC); //Отображает десятичные знаки температуры;
  Serial.println('C');

  byte checksum = dat[0] + dat[1] + dat[2] + dat[3];
  if (dat[4] != checksum) 
    Serial.println("-- Checksum Error!");
  else
    Serial.println("-- OK");
 
  delay(1000);
}

Данный пример кода можно загрузить в Arduino и получать показания с датчика DHT11. Предварительно ничего настраивать и устанавливать не нужно. В мониторе порта мы увидим значения температуры и влажности с датчика DHT11.

В мониторе порта мы увидим значения температуры и влажности с датчика DHT11.

Пример кода с использованием библиотеки «DHT sensor library».

Для данного примера нам понадобиться библиотека «DHT sensor library». Установить ее можно через менеджер библиотек, для этого переходим «Скетч -> Подключить библиотеку -> Управлять библиотеками…».

понадобиться библиотека «DHT sensor library»

В строке поиска указываем «DHT11» и устанавливаем библиотеку «DHT sensor library». Для этого нажимаем на кнопку «Установка».

В строке поиска указываем «DHT11» и устанавливаем библиотеку «DHT sensor library»

Для работы библиотеки «DHT sensor library» нужна библиотека «Adafruit_Sensor», которую можно скачать с сайта github или внизу урока, в разделе «Файлы для скачивания».

Для работы библиотеки «DHT sensor library» нужна библиотека «Adafruit_Sensor»

Скачать библиотеку с github можно выбрав «Code -> Download ZIP».Скачать библиотеку с github можно выбрав


После чего в Arduino IDE выбираем «Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку…».

После чего в Arduino IDE выбираем Скетч - Подключить библиотеку - Добавить .ZIP библиотеку

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

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

С библиотекой устанавливается 2 примера. Один из которых мы будем использовать в нашем уроке. Для этого переходим в меню «Файл -> Примеры -> DHT sensor library -> DHTtest».

Файл - Примеры - DHT sensor library - DHTtest

В данном примере нам нужно указать пин подключения модуля. Также раскомментировать строчку подключения нашего датчика.

#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 dht(DHTPIN, DHTTYPE);
void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
  dht.begin();
}
void loop() {
  delay(2000);
  // считывание данных температуры и влажности
  float h = dht.readHumidity();
  // температура в Цельсиях:
  float t = dht.readTemperature();
  // температура в Фаренгейте:
  float f = dht.readTemperature(true);
  // проверяем, корректно ли прочитались данные,
  // и если нет, то пробуем еще раз:
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    // "Не данных с DHT!"
    return;
  }
  // рассчит теплового индекса;
  float hi = dht.computeHeatIndex(f, h);
  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(hi);
  Serial.println(" *F");
}

Также не забудьте, чтобы строчки подключения других датчиков были закомментированы.

В данном примере нам нужно указать пин подключения модуля.

Загружаем пример и смотрим в мониторе порта.

Загружаем пример и смотрим в мониторе порта.

Как видим все работает отлично и показания выводятся. При этом значения достаточно стабильные. Точность показаний я не стал проверять, как делал с модулем KY-013. Это вы можете сделать самостоятельно.

Вывод про модуль KY-015

Вывод про модуль KY-015.

В связи с тем, что модуль оснащён датчиком DHT11, показания температуры и влажности не очень точные, но при этом применять его для измерения температуры и влажности в бытовых условиях можно. Например, настроить автоматическое включения вытяжки в ванной, данного модуля будет достаточно и не стоит покупать более дорогие аналоги.

Понравился Урок KY-015 - Модуль с датчиком температуры и влажности DHT11? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Пример скетча KY-015 для Arduino без использования библиотек Пример скетча KY-015 для Arduino без использования библиотек.ino3 Kb 7 Скачать
Пример кода с использованием библиотеки «DHT sensor library» Пример кода с использованием библиотеки «DHT sensor library».ino2 Kb 6 Скачать

Комментарии

Ваше Имя*