Для Arduino существует большое количество датчиков и модулей измерения температуры. Модули KY-001, KY-013 мы уже рассмотрели в предыдущих уроках. Сегодня поговорим о модуле KY-015, который оснащен датчиком DHT11, он может измерять не только температуру, но и влажность воздуха.
Модуль датчика температуры и влажности KY-015 обеспечен цифровым последовательным интерфейсом для измерения влажности и температуры и передачи показаний Arduino.
Модуль KY-015 состоит из цифрового датчика влажности и температуры DHT11 и резистора 1 кОм. DHT11 использует внутренний термистор и емкостной датчик влажности для определения условий окружающей среды, а внутренний чип отвечает за преобразование показаний в последовательный цифровой сигнал.
|
Рабочее напряжение |
От 3,3 до 5,5 В |
|
Диапазон измерения влажности |
От 20% до 90% |
|
Точность измерения влажности |
± 5% |
|
Разрешение измерения влажности |
1% |
|
Диапазон измерения температуры |
От 0 ºC до 50 ºC |
|
Точность измерения температуры |
± 2 ºC |
|
Разрешение измерения температуры |
1 ºC |
|
Дальность передачи сигнала |
20 м |

Подключаем линию питания (посередине) и землю (-) к +5 и GND соответственно. Сигнал (S) подключаем к контакту 2 на 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.

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



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

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

С библиотекой устанавливается 2 примера. Один из которых мы будем использовать в нашем уроке. Для этого переходим в меню «Файл -> Примеры -> 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 - Модуль с датчиком температуры и влажности DHT11? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
| Пример скетча KY-015 для Arduino без использования библиотек.ino | 3 Kb | 1104 | Скачать | |
| Пример кода с использованием библиотеки «DHT sensor library».ino | 2 Kb | 1170 | Скачать |
37 модулей для Arduino
13 мая , 2021
Комментариев:0
Файлов для скачивания:2
Фото:6
Понравилась статья? Нажми
Читайте также
Мы в соц сетях
Комментарии