Lab works 7. Використання датчика DHT

Використання датчика температури і вологості DHT11

Мета роботи

Навчитися використовувати датчик температури і вологості DHT11 з Arduino

Завдання роботи

1.Встановити бібліотеки для роботи з датчиком DHT11
2.Зібрати установку і розробити скетч для Arduino для зчитування показань датчика DHT11

Інструменти для виконанню роботи

  1. Комп'ютер з підключенням до мережі Internet
    Плата Arduino з USB інтерфейсом (наприклад, Arduino Uno)
    Теоретична частина

Датчик 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);

Відкриваємо монітор порту, переконуємося в наявності даних з датчика.