1. Необхідні компоненти
- Датчик DHT11 - цифровий датчик температури та вологості
- Плата Arduino (Uno, Nano, Mega або інша сумісна)
- З'єднувальні дроти (Jumper wires)
- LCD дисплей з I2C модулем (опційно, для відображення даних)
- Макетна плата (опційно, для зручності підключення)
- USB кабель для підключення Arduino до комп'ютера
2. Характеристики датчика DHT11
- Діапазон вимірювання вологості: 20-90% RH, точність ±5% RH
- Діапазон вимірювання температури: 0-50°C, точність ±2°C
- Напруга живлення: 3.3В - 5В постійного струму
- Струм споживання: 0.3мА при вимірюванні, 60мкА в режимі очікування
- Частота опитування: не частіше ніж 1 раз на секунду
3. Розпіновка датчика DHT11
Датчик DHT11 зазвичай має 3 або 4 контакти. В модулі з 3 контактами:
flowchart TB
DHT["Датчик DHT11"] --- VCC["VCC або +
Живлення"]
DHT --- DATA["S або DATA
Сигнальний вихід"]
DHT --- GND["GND або -
Земля"]
Якщо ваш модуль має 4 контакти, то контакт, який не позначений, зазвичай не використовується (NC - Not Connected).
4. Схема підключення
flowchart LR
Arduino["Arduino
Плата"] --- 5V["5V"]
Arduino --- GND["GND"]
Arduino --- D2["Цифровий пін D2"]
DHT["Датчик DHT11"] --- VCC["VCC (+)"]
DHT --- DATA["DATA (S)"]
DHT --- GND_DHT["GND (-)"]
5V --- VCC
GND --- GND_DHT
D2 --- DATA
Додаткове підключення LCD дисплея з I2C:
flowchart LR
Arduino --- 5V
Arduino --- GND
Arduino --- SDA["SDA (A4)"]
Arduino --- SCL["SCL (A5)"]
LCD["LCD дисплей
з I2C модулем"] --- VCC_LCD["VCC"]
LCD --- GND_LCD["GND"]
LCD --- SDA_LCD["SDA"]
LCD --- SCL_LCD["SCL"]
5V --- VCC_LCD
GND --- GND_LCD
SDA --- SDA_LCD
SCL --- SCL_LCD
5. Покрокове підключення
Підключення датчика DHT11:
- Підключіть контакт
VCC
(або +
) датчика до піна 5V
на платі Arduino
- Підключіть контакт
GND
(або -
) датчика до піна GND
на платі Arduino
- Підключіть контакт
DATA
(або S
) датчика до будь-якого цифрового піна на платі Arduino (у прикладі використовується пін D2
)
Хоча датчик DHT11 може працювати на напрузі 3.3В, рекомендується використовувати 5В для більшої стабільності сигналу, особливо при використанні довгих з'єднувальних дротів.
Підключення LCD дисплея з I2C (опційно):
- Підключіть контакт
VCC
дисплея до піна 5V
на платі Arduino
- Підключіть контакт
GND
дисплея до піна GND
на платі Arduino
- Підключіть контакт
SDA
дисплея до піна A4
(або SDA
) на платі Arduino
- Підключіть контакт
SCL
дисплея до піна A5
(або SCL
) на платі Arduino
6. Програмування
Варіант 1: FLProg (Візуальне програмування)
- Запустіть середовище FLProg на вашому комп'ютері
- У бібліотеці блоків знайдіть:
Датчики → Датчики влажности → Датчик температуры и влажности DHT11 (DHT21, DHT22)
- Перетягніть цей блок на робочу область
- Двічі клацніть на блоці для налаштування:
- Цифровой pin: Виберіть пін, до якого підключено датчик (наприклад, D2)
- Тип: Виберіть DHT11
- Выходы: Поставте галочки навпроти "Выход температуры" та "Выход влажности"
- Время опроса датчика: Виберіть "Периодически" і встановіть "Опрашивать каждые 1 сек" або більше
- Натисніть "Готово"
- Для відображення даних на LCD дисплеї додайте блоки конвертації та відображення
- Скомпілюйте і завантажте програму на Arduino
Зчитування даних з одного датчика DHT займає близько 0.8 секунди. Тому інтервал опитування не повинен бути меншим за 1 секунду. При використанні кількох датчиків DHT, розрахуйте мінімальний інтервал за формулою: Інтервал = Кількість_датчиків × 0.8 секунди.
Варіант 2: Arduino IDE (Програмний код)
- Відкрийте Arduino IDE
- Встановіть необхідні бібліотеки:
- DHT sensor library by Adafruit
- Adafruit Unified Sensor Driver
- LiquidCrystal_I2C (якщо використовуєте LCD дисплей)
- Скопіюйте та вставте наступний код:
#include
#include // Бібліотека для LCD I2C
#include // Бібліотека для датчика DHT
// --- Налаштування ---
#define DHTPIN 2 // Пін, до якого підключено датчик (D2)
#define DHTTYPE DHT11 // Тип датчика (DHT11)
// Адреса I2C дисплея (зазвичай 0x27 або 0x3F)
#define LCD_ADDRESS 0x27
#define LCD_COLS 16 // Кількість стовпців дисплея
#define LCD_ROWS 2 // Кількість рядків дисплея
// Інтервал опитування датчика в мілісекундах (1000 мс = 1 сек)
const unsigned long POLLING_INTERVAL = 1000;
// --------------------
// Ініціалізація об'єктів
LiquidCrystal_I2C lcd(LCD_ADDRESS, LCD_COLS, LCD_ROWS);
DHT dht(DHTPIN, DHTTYPE);
unsigned long previousMillis = 0; // Змінна для зберігання часу останнього опитування
void setup() {
Serial.begin(9600); // Для відлагодження
// Ініціалізація LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Initializing...");
// Ініціалізація датчика DHT
dht.begin();
delay(1500); // Невелика затримка для стабілізації
lcd.clear();
}
void loop() {
// Отримуємо поточний час
unsigned long currentMillis = millis();
// Перевіряємо, чи минув інтервал опитування
if (currentMillis - previousMillis >= POLLING_INTERVAL) {
// Зберігаємо час останнього опитування
previousMillis = currentMillis;
// Зчитуємо вологість
float h = dht.readHumidity();
// Зчитуємо температуру в Цельсіях
float t = dht.readTemperature();
// Перевіряємо, чи зчитування пройшло успішно
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Read Error");
return; // Виходимо з цієї ітерації, якщо помилка
}
// Очищуємо дисплей перед виведенням нових даних
lcd.clear();
// Виводимо температуру
lcd.setCursor(0, 0); // Перший рядок
lcd.print("T->");
lcd.print(t, 1); // Виводимо температуру з 1 знаком після коми
// Виводимо вологість
lcd.setCursor(0, 1); // Другий рядок
lcd.print("RH->");
lcd.print(h, 1); // Виводимо вологість з 1 знаком після коми
// Виведення в Serial монітор
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
}
}
7. Перевірка роботи
- Завантажте прошивку в Arduino
- Якщо використовуєте LCD дисплей, на ньому мають з'явитися показники температури (T) та відносної вологості (RH)
- Якщо не використовуєте дисплей, відкрийте монітор послідовного порту в Arduino IDE (Tools → Serial Monitor) з налаштуванням 9600 бод для перегляду даних
- Дані мають оновлюватися з заданим інтервалом (зазвичай 1 секунда)
При першому запуску показання датчика можуть бути "NAN" (Not a Number), поки датчик не ініціалізується. Зачекайте кілька секунд.
8. Практичні застосування
Домашня метеостанція:
Використовуйте датчик DHT11 для створення простої метеостанції з відображенням температури та вологості на LCD дисплеї. Додайте функцію запису даних на SD-карту для відстеження змін параметрів протягом дня.
Система контролю мікроклімату:
Підключіть до Arduino реле для керування вентилятором або обігрівачем в залежності від показів температури та вологості. Наприклад, вмикати вентилятор, коли температура перевищує 25°C, або обігрівач, коли опускається нижче 18°C.
9. Поради з експлуатації
- Калібрування: Датчик DHT11 має відносно невисоку точність (±5% RH, ±2°C). Для більш точних вимірювань можна відкалібрувати його, порівнюючи показання з еталонним термометром.
- Розташування: Не розміщуйте датчик поблизу джерел тепла або під прямими сонячними променями, це спотворить показання.
- Захист від вологи: Хоча датчик вимірює вологість, він не є водонепроникним. Уникайте прямого контакту з водою або конденсатом.
- Енергоспоживання: DHT11 споживає мало енергії (60мкА в режимі очікування), що робить його придатним для проектів з батарейним живленням.
- Інтервал опитування: Не опитуйте датчик частіше ніж раз на секунду, це може призвести до помилок у зчитуванні даних.
При використанні кількох датчиків DHT на одній платі Arduino, збільшіть інтервал опитування для кожного з них. Для 10 датчиків інтервал має бути не менше 8 секунд (10 × 0.8 секунди).
Важливе зауваження: Ми доклали зусиль, щоб ця інструкція була точною та корисною. Однак, ця інструкція надається як довідковий матеріал. Електронні компоненти можуть мати варіації, а схеми підключення залежать від конкретних умов та вашого обладнання. Ця інформація надається "як є", без гарантій повноти чи безпомилковості. Наполегливо рекомендуємо перевіряти специфікації вашого модуля (datasheet), звірятися з іншими джерелами та, за найменших сумнівів, звертатися до кваліфікованих фахівців, особливо при роботі з напругою 220В.