Для 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 | 982 | Скачать |
![]() |
Пример кода с использованием библиотеки «DHT sensor library».ino | 2 Kb | 1041 | Скачать |
37 модулей для Arduino
13 мая , 2021
Комментариев:0
Файлов для скачивания:2
Фото:6
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии