Lab works 7. Використання датчика DHT
Використання датчика температури і вологості DHT11
Мета роботи
Навчитися використовувати датчик температури і вологості DHT11 з Arduino
Завдання роботи
1.Встановити бібліотеки для роботи з датчиком DHT11
2.Зібрати установку і розробити скетч для Arduino для зчитування показань датчика DHT11
Інструменти для виконанню роботи
Датчик DHT11 є недорогим датчик температури і відносної вологості з цифровим виходом. Діапазон вимірювання температури - від 0 до 50 градусів Цельсія з точністю 2 градуси, вологості - від 20% до 90% з точністю 5%. Дані передаються через 1Wire інтерфейс, для харчування датчика необхідна постійна напруга від 3 до 5.5 вольт. Споживання струму становить до 2.5 мА. Для роботи з датчиком розроблені кілька готових бібліотек, одна з яких буде використовуватися в даній роботі.
Виконання роботи
Установка бібліотеки для роботи з датчиком DHT11
Створюємо новий скетч і зберігаємо його з назвою DHTTest. Перевіряємо, чи правильно обрана плата і порт. Відкриваємо менеджер бібліотек і знаходимо в списку бібліотек дві: "Adafruit Unified Sensor" і "DHT sensor library". Встановлюємо обидві.
Підключаємо до проекту бібліотеку "DHT sensor library". На початку скетчу повинні з'явитися рядки
#include <DHT.h>
#include <DHT_U.h>
Збірка установки і розробка скетчу для Arduino для зчитування показань датчика DHT11
Підключаємо датчик DHT до Arduino: "-" до gnd, "+" до 5V, середній роз'єм "out" до цифрового піну 7.
Допрацьовуємо скетч. До функції setup () створюємо глобальну змінну dht, вказуючи номер цифрового Піна 7 і тип датчика DHT11
DHT_Unified dht(7,DHT11);
У функції setup () ініціальзіруем послідовний порт і датчик
Serial.begin(9600);
dht.begin();
Далі модифікуємо функцію loop (), в ній виробляємо наступні дії:
створюємо змінну під значення датчика і зчитуємо в неї значення температури, якщо значення вірне, виводимо в Serial температуру, в іншому випадку виводимо повідомлення про помилку
sensors_event_t event;
dht.temperature().getEvent(&event);
if(isnan(event.temperature))
Serial.println("Error reading temperature!");
else
{
Serial.print("Temperature: ");
Serial.print(event.temperature);
Serial.println(" *C");
}
Повторюємо аналогічно для вологості
dht.humidity().getEvent(&event);
if(isnan(event.relative_humidity))
Serial.println("Error reading humidity!");
else
{
Serial.print("Humidity: ");
Serial.print(event.relative_humidity);
Serial.println("%");
}
Робимо затримку пів-секунди
delay(500);
Відкриваємо монітор порту, переконуємося в наявності даних з датчика.