Каталог товарів
Клієнту
Тема сайту:
+38 (066) 305-77-25
Наша адреса
Харків, тимчасово - доставка тільки Новою Поштою, УкрПоштою, МістЕкспрес, ROZETKA Delivery
Телефони
Графік роботи
  • Пн-Пт: з 9 до 18
  • Сб: з 10 до 17
  • Нд: з 11 до 16
E-mail
Ми в соцмережах
Перейти до контактів
0 0
Каталог
Головна
Закладки
0
Порівняти
0
Контакти

Порівняння датчиків температури та вологості (DHT11 vs DHT22 vs BME280)

Чи була корисною ця стаття?
Порівняння датчиків температури та вологості (DHT11 vs DHT22 vs BME280)

Порівняння датчиків температури та вологості: DHT11 vs DHT22 vs BME280

Вступ.
Датчики температури та вологості DHT11, DHT22 (відомий також як AM2302) та BME280 – одні з найпопулярніших рішень для вимірювання параметрів довкілля в електронних проєктах. У цій статті ми детально розглянемо їхні характеристики, порівняємо технічні особливості, а також обговоримо простоту використання кожного сенсора. Ми проаналізуємо переваги й недоліки DHT11, DHT22 і BME280 у різних застосуваннях (домашні метеостанції, «розумні» теплиці, IoT-проєкти тощо) та наведемо приклади коду для підключення їх до Arduino та Raspberry Pi. Для наочності додамо таблиці і опишемо графіки, що ілюструють різницю в точності вимірювань та інших параметрах.


Основні характеристики датчиків

DHT11

DHT11бюджетний цифровий сенсор для вимірювання температури і відносної вологості. Він містить термістор для вимірювання температури та ємнісний датчик вологості, об’єднані з простим АЦП, що передає результати у цифровому форматі. Діапазон вимірювання температури обмежений приблизно від 0°C до +50°C, з точністю близько ±2°C у цьому діапазоні. Діапазон вологості – від ~20% до 80% RH з точністю близько ±5%. Роздільна здатність DHT11 низька: температура віддається цілими градусами (крок 1°C), тому невеликі зміни температури він не розрізняє. Швидкість оновлення даних також невисока – не більше одного вимірювання на секунду (1 Гц). DHT11 може працювати від напруги 3,3 В або 5 В, споживаючи до ~2,5 мА струму під час вимірювання. У стані спокою споживання дуже мале. Комунікація здійснюється по однодротовому власному протоколу – для з’єднання потрібен лише один цифровий вивід мікроконтролера (плюс живлення та земля), але обов’язково потрібен підтягувальний резистор на лінії даних.

DHT22 (AM2302)

DHT22 є покращеною версією DHT11 – він дорожчий на кілька доларів, але забезпечує значно кращі характеристики. Цей сенсор також вимірює температуру і вологість, маючи в основі аналогічний принцип (ємнісний сенсор вологості + термістор). Діапазон температур набагато ширший: від -40°C до +80°C, а похибка температури всього близько ±0,5°C. Діапазон вологості – 0–100% RH, з типовою точністю ±2% (до ±5% максимальна похибка). DHT22 видає температуру з роздільною здатністю 0,1°C, тож він може фіксувати дрібні зміни, недоступні для DHT11. Частота оновлення даних вдвічі менша: не більше 0,5 Гц (один новий вимір раз на 2 секунди). Як і DHT11, DHT22 працює від 3,3–5 В та споживає до 2,5 мА під час запиту даних. Фізично DHT22 трохи більший за DHT11, проте підключення здійснюється так само – по однодротовому інтерфейсу з відповідним резистором. В цілому, DHT22 перевершує DHT11 за всіма основними параметрами точності та діапазону, тому за невеликої різниці в ціні його зазвичай обирають замість DHT11.

BME280

BME280 – це сучасний високоточний сенсор від Bosch, який вимірює одразу три параметри: температуру, відносну вологість і атмосферний тиск. Він випускається в компактному корпусі LGA і спроектований для мобільних та портативних застосувань, тому має малі габарити та наднизьке енергоспоживання. Діапазон температур BME280 становить від -40°C до +85°C, з типовою похибкою близько ±1,0°C (після фабричної калібровки). Діапазон вимірювання вологості – 0–100% RH, з точністю приблизно ±3% по всьому діапазону. Таким чином, за заявленими характеристиками точність BME280 щодо вологості співставна або дещо гірша від DHT22 (±3% проти ±2%), але на практиці BME280 дуже стабільний і лінійний в широкому діапазоні температур, тоді як дешевші DHT можуть потребувати калібрування і зміщувати показники при зміні температури. BME280 має високу роздільну здатність: температура вимірюється з кроком 0,01°C, що забезпечує стабільні плавні показники без шумових коливань. Час відгуку сенсора також швидкий – на зміну вологості він реагує за декілька секунд, що достатньо для більшості задач. BME280 обмінюється даними через стандартні інтерфейси I²C або SPI (вибір залежить від конфігурації підключення). Живлення сенсора – 1,8–3,6 В (типово 3,3 В); багато готових модулів мають вбудований стабілізатор і рівнемісні перетворювачі, що дозволяє живити плату від 5 В. Енергоспоживання надзвичайно низьке: у режимі одного вимірювання на секунду середній струм ~3,6 μA для трьох вимірювань; у режимі сну сенсор споживає всього ~0,1 μA. Під час вимірювання сплески струму також невеликі, адже тривалість вимірювання коротка. Таким чином, BME280 ідеально підходить для батарейних пристроїв. Додатковою перевагою є вимірювання атмосферного тиску, завдяки чому BME280 може визначати висоту та слугувати для прогнозу погоди.


Порівняльна таблиця характеристик

Характеристика DHT11 DHT22 (AM2302) BME280
Вимірювані величини Температура, вологість Температура, вологість Температура, вологість, тиск
Температурний діапазон 0…50 °C -40…80 °C -40…85 °C
Похибка температури ±2 °C (0…50 °C) ±0,5 °C (у всьому діапазоні) ±1,0 °C (типова)
Вологісний діапазон ~20…80 % RH 0…100 % RH 0…100 % RH
Похибка вологості ±5 % RH ±2 % RH (типова), до ±5 % ±3 % RH
Роздільна здатність ~1 °C; ~1 % RH ~0,1 °C; ~0,1 % RH ~0,01 °C; ~0,008 % RH (16-bit ADC)
Частота оновлення ≤1 Hz (1 вимір/с) ≤0,5 Hz (1 вимір/2 с) До ~100 Hz
Інтерфейс зв’язку Однодротовий (протокол DHT) Однодротовий (протокол DHT) I²C або SPI (цифрова шина)
Живлення 3,0–5,5 В 3,0–6,0 В 1,71–3,6 В (чип); 3,3–5 В (модуль)
Споживання струму ~50 μA (очікування); до 2,5 мА при вимірі ~50 μA (очікування); до 2,5 мА при вимірі ~3,6 μA (при 1 Hz); 0,1 μA (сон)

Примітка: Значення можуть дещо відрізнятись залежно від конкретної реалізації сенсора.


Простота підключення та програмування

Інтерфейс та підключення

DHT11 і DHT22 мають три виводи для підключення: живлення (VCC), земля (GND) і сигнальний вихід даних. Дані передаються по одній лінії за спеціальним протоколом. Для коректної роботи потрібен підтягувальний резистор (близько 4,7 kΩ – 10 kΩ) між виходом даних і VCC, якщо він не вбудований у модуль. Читання даних з DHT11/22 вимагає точної синхронізації імпульсів, тому реалізувати протокол «вручну» може бути складно. На щастя, існують готові бібліотеки – наприклад, Adafruit DHT для Arduino або модуль dht у MicroPython, що спрощують взаємодію. Сумісність із мікроконтролерами дуже широка: сенсори DHT можна використовувати з Arduino, ESP8266/ESP32, Raspberry Pi та іншими. Проте, на Raspberry Pi читання DHT11/22 може ускладнюватись через відсутність жорсткого реального часу, тому іноді застосовують спеціальні бібліотеки на C або використовують bit-banging з підвищеним пріоритетом, або підключають зовнішній контролер. Загалом, підключення DHT11/22 не є складним: достатньо з’єднати 3 дроти (VCC, GND, Data) і встановити бібліотеку.

BME280 завдяки стандартному інтерфейсу I²C/SPI також легко підключається. Типовий модуль має 4 основні контакти: VCC, GND, SCL (тактовий сигнал) і SDA (дані) для I²C. При використанні SPI задіяні 6 контактів (включно з CS, SCK, SDI, SDO). Для Arduino зазвичай обирають I²C, що дозволяє підключити BME280 до стандартних пінів (наприклад, A4/A5 на Arduino Uno) або до іншої шини. Крім того, BME280 є 3,3-вольтовим пристроєм, тому при використанні з 5В рекомендується модуль з рівневими перетворювачами. Бібліотеки для BME280 доступні для Arduino (наприклад, Adafruit BME280) та для Raspberry Pi (наприклад, smbus2 або CircuitPython adafruit_bme280). Спілкування з сенсором здійснюється через читання/запис регістрів, що спрощується завдяки використанню готових бібліотек.

Простота програмування

З точки зору коду, DHT11/22 потребують виклику спеціальних функцій для зчитування даних. Наприклад, на Arduino використовують методи readHumidity() і readTemperature() з бібліотеки Adafruit DHT, які повертають значення типу float. Важливо враховувати можливість помилок (функції можуть повертати NAN при збоях). На Raspberry Pi можна використати бібліотеку Adafruit_DHT в Python, яка забезпечує функцію read_retry() для декількох спроб зчитування.

У випадку BME280 програмування ще простіше: I²C – стандартний інтерфейс, тому достатньо звертатись до адреси сенсора і читати регістри через API або готовий драйвер. Arduino-бібліотека BME280 надає методи readTemperature(), readPressure() і readHumidity(), а для Raspberry Pi існують бібліотеки, такі як adafruit_bme280, що дозволяють отримувати дані за кілька рядків коду.

Загалом, DHT11/22 трохи поступаються BME280 у зручності інтеграції в комплексні системи через свій нестандартний протокол – для кожного датчика потрібна окрема лінія вводу/виводу та резистор. Натомість, BME280 легко підключається до існуючої I²C-шини, що дозволяє масштабувати систему.


Переваги та недоліки кожного сенсора в різних застосуваннях

DHT11 – базовий вибір для простих задач

Переваги:
Головна перевага DHT11 – це низька ціна та простота. Він підійде для найпростіших проєктів, де не потрібна висока точність або широкий діапазон вимірювань. Наприклад, навчальні проєкти, демо-зразки або пристрої для приблизної оцінки умов в приміщенні (скажімо, індикатор комфорту в кімнаті) можуть використовувати DHT11. Сенсор компактний, легко під’єднується і підтримується багатьма бібліотеками, тому навіть новачок швидко отримує результати. DHT11 надійно працює в межах своїх специфікацій.

Недоліки:
Обмеження DHT11 суттєві: невеликий діапазон температур (не підходить для морозу або спеки) і вологості (не вимірює значення нижче ~20% або при значеннях понад 80% RH) обмежують його застосування. Для вуличної метеостанції він не підійде, адже в екстремальних умовах показники можуть бути некоректними. Низька точність (±2°C) та роздільна здатність 1°C призводять до «ступінчатого» вигляду графіка.

DHT22 – для побутових метеостанцій і бюджетних проєктів

Переваги:
DHT22 значно точніший і чутливіший, що робить його популярним у метеостанціях для дому та інших хобі-проєктах. Він вимірює негативні температури (до -40°C), що дозволяє використовувати його для зовнішніх датчиків (за умови захисту). Сенсор охоплює діапазон вологості 0–100%, що важливо для теплиць або моніторингу погоди. Точність (±0,5°C для температури та ±2% для вологості) забезпечує розрізнення навіть невеликих змін, а роздільна здатність 0,1°C дозволяє відображати поступові тренди. Сумісність коду дозволяє легко перейти з DHT11 на DHT22, змінивши лише параметр типу сенсора.

Недоліки:
Недоліки DHT22 включають повільну реакцію – нові дані доступні лише раз на 2 секунди, що може бути критичним у деяких застосуваннях. Сенсор має інерційність: його відгук може затримуватись до десятків секунд, що не підходить для систем автоматичного керування. Крім того, практична похибка може перевищувати заявлену (іноді до 5% RH), а деякі екземпляри показують значну розбіжність. Також можливі збої читання, коли сенсор повертає некоректні дані, що вимагає повторних спроб.

BME280 – максимальна функціональність і точність

Переваги:
BME280 – це найбільш функціонально оснащений і точний сенсор серед розглянутих. Він поєднує три датчики в одному: вимірює температуру, вологість і атмосферний тиск, що особливо корисно для метеостанцій. Така комбінація дозволяє відслідковувати барометричні тенденції, розраховувати висоту над рівнем моря та покращувати прогнози погоди. Точність (±1°C для температури і ±3% для вологості) забезпечує стабільність показників, а швидкий відгук (кілька секунд) дозволяє оперативно реагувати на зміни. BME280 має низький рівень шуму та забезпечує гладкий графік вимірювань. Інтерфейси I²C та SPI полегшують інтеграцію, а наднизьке енергоспоживання (кілька мікроампер при вимірюванні, 0,1 μA у режимі сну) роблять його ідеальним для IoT-девайсів.

Недоліки:
Основним недоліком є вища ціна порівняно з DHT сенсорами, що може бути недоцільним для бюджетних проєктів. Налаштування режимів роботи може бути складнішим, а явище самонагріву може призводити до показів температури на ~1–2°C вище реальних, що слід враховувати.

Висновок по вибору:
Якщо підсумувати, то DHT11 доцільно застосовувати лише для найпростішого варіанту, коли бюджет обмежений, а вимоги до точності невисокі. DHT22 є оптимальним вибором для більшості побутових проєктів, оскільки забезпечує прийнятну точність і простоту інтеграції при вимірюванні лише температури та вологості. BME280 – сенсор нового покоління, який за невелику додаткову плату надає високоточні дані про температуру, вологість і тиск, а також дозволяє економити енергію, що робить його ідеальним для професійних метеостанцій та IoT-девайсів.


Приклади коду для підключення (Arduino, Raspberry Pi)

Arduino + DHT11/DHT22 (C++)

Для Arduino існує бібліотека DHT sensor library від Adafruit (доступна через Library Manager). Встановивши її, можна отримувати дані за кілька рядків коду. Потрібно визначити тип датчика (DHT11 або DHT22) та пін, до якого він підключений:


#include "DHT.h"

#define DHTPIN 2          // цифровий пін, підключений до DHT
#define DHTTYPE DHT22     // тип сенсора: DHT11 або DHT22 (тут обрано DHT22)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();  // ініціалізуємо датчик
}

void loop() {
  float humidity = dht.readHumidity();       // зчитуємо вологість
  float temperature = dht.readTemperature();   // зчитуємо температуру (°C за замовчуванням)
  
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Помилка читання з DHT сенсора!");
  } else {
    Serial.print("Температура: ");
    Serial.print(temperature);
    Serial.print(" °C\tВологість: ");
    Serial.print(humidity);
    Serial.println(" %");
  }
  
  delay(2000); // затримка 2 с між вимірюваннями (для DHT22 мінімум ~2 с)
}
  

Raspberry Pi + DHT11/DHT22 (Python)

На Raspberry Pi можна скористатися бібліотекою Adafruit_DHT (встановлюється через pip, пакет Adafruit_DHT). Ця бібліотека підтримує як DHT11, так і DHT22. Приклад коду на Python:


import Adafruit_DHT

# Вибір сенсора: Adafruit_DHT.DHT11 або Adafruit_DHT.DHT22
sensor = Adafruit_DHT.DHT22  
pin = 4  # GPIO номер піна, до якого підключено DHT (використовуємо Broadcom нумерацію, наприклад GPIO4)

# Читання з повторною спробою (функція read_retry робить кілька спроб)
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) 

if humidity is None or temperature is None:
    print("Помилка: не вдалося зчитати дані з DHT")
else:
    print(f"Температура: {temperature:.1f}°C, Вологість: {humidity:.1f}%")
  

Arduino + BME280 (C++)

Для BME280 існує бібліотека Adafruit_BME280, що дозволяє працювати як через I²C, так і через SPI. Розглянемо варіант I²C-підключення (наприклад, модуль BME280 підключений до A4/A5 на Arduino Uno):


#include 
#include 

Adafruit_BME280 bme;  // створюємо об'єкт для сенсора

void setup() {
  Serial.begin(9600);
  bool status;
  // Спроба ініціалізувати BME280 за адресою 0x76 (або 0x77)
  status = bme.begin(0x76);  
  if (!status) {
    Serial.println("Не знайдено BME280. Перевірте підключення та адресу!");
    while (1) delay(10);
  }
}

void loop() {
  float temperature = bme.readTemperature();    // температура в °C
  float humidity    = bme.readHumidity();         // відносна вологість в %
  float pressure    = bme.readPressure() / 100.0;   // тиск в гПа
  
  Serial.print("T=");
  Serial.print(temperature, 1);
  Serial.print("°C, RH=");
  Serial.print(humidity, 1);
  Serial.print("%, P=");
  Serial.print(pressure, 1);
  Serial.println(" hPa");
  
  delay(1000);
}
  

Raspberry Pi + BME280 (Python)

На Raspberry Pi для BME280 можна скористатися бібліотекою Adafruit CircuitPython для BME280. Необхідно встановити пакет adafruit-circuitpython-bme280 (а також adafruit-blinka). Приклад коду:


import board
import busio
import adafruit_bme280

# I2C-ініціалізація (SCL і SDA піни за замовчуванням)
i2c = busio.I2C(board.SCL, board.SDA)

# Створення об'єкта датчика (за замовчуванням адреса 0x77; для 0x76 вказати address=0x76)
bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c, address=0x76)

# Необов'язково: встановлення рівня тиску на рівні моря для розрахунку висоти
bme280.sea_level_pressure = 1013.25  # гПа

# Зчитування даних
temperature = bme280.temperature  # температура в °C
humidity    = bme280.humidity     # вологість в %
pressure    = bme280.pressure     # тиск в гПа

print(f"Температура: {temperature:.2f} °C")
print(f"Вологість: {humidity:.2f} %")
print(f"Тиск: {pressure:.2f} hPa")
print(f"Висота: {bme280.altitude:.2f} м над рівнем моря")
  

Візуалізація точності та відгуку (графічний аналіз)

Уявімо, що ми записали показники з DHT11, DHT22 і BME280 протягом доби в однакових умовах.

  • DHT11: Відображає температуру цілими градусами, тому його графік має східчастий вигляд. Значення змінюються стрибками на 1°C і можуть затримуватися на одному рівні, поки реальна температура не зміниться більш ніж на ~0.5°C.
  • DHT22: Вимірює температуру з роздільною здатністю 0.1°C, тому його показники змінюються плавніше. Крива DHT22 більш гладка, відстежуючи навіть дрібні коливання до десятих часток градуса.
  • BME280: Датчик має роздільну здатність 0.01°C, тож його крива майже безперервна (без видимих сходинок). Він фіксує дуже дрібні коливання температури. Однак через самонагрів або особливості калібрування показники BME280 можуть бути зміщені в середньому на ~1–2°C вище фактичної температури

При аналізі графіку вологості:

  • DHT22 і BME280 показують більш плавну лінію в стабільних умовах, проте абсолютні значення можуть відрізнятись.
  • При різкому підвищенні або зниженні вологості DHT22 реагує повільніше, ніж BME280, що може бути критичним для систем автоматичного керування.
  • Як видно з цього сценарію, BME280 майже миттєво показує стрибок вологості до нового рівня, тоді як DHT22 потребує кілька додаткових хвилин, щоб поступово наздогнати фактичну вологість. Загалом за добу обидва датчики відображають плавні зміни вологості: від високих значень вночі (близько 85% о 6:00) до мінімальних вдень (~45% о 15:00), з подальшим підвищенням до ~70% до півночі. Різниця між показниками DHT22 і BME280 невелика (зазвичай within ±2–5%), але при високій вологості DHT22 іноді може давати трохи занижені або завищені значення відносно BME280 (порядку кількох відсотків різниці).

Графічне порівняння споживання енергії покаже, що імпульси споживання DHT11/22 набагато більші, тоді як BME280 споживає мінімальну кількість струму – що є величезною перевагою для пристроїв на живленні від батарейки. 

  • DHT11 / DHT22: Ці датчики споживають енергію імпульсно. Вони активні лише під час вимірювання, тому кожну хвилину при опитуванні відбувається короткий сплеск струму. Наприклад, в момент запиту даних DHT22 може споживати ~1–2 мА протягом кількох мілісекунд, після чого повертається майже до 0 мА до наступного опитування. На графіку це виглядає як серія гострих піків щохвилини на нульовій базовій лінії. (DHT11 має подібний характер споживання з піками порядку 0.5–2 мА.)
  • BME280: Надзвичайно енергоефективний сенсор. Може працювати в режимі безперервного вимірювання з дуже малим споживанням ~0.002–0.003 мА (≈2–3 µA) при частоті 1 Hz​
    . Його графік споживання є стабільною низькою лінією без різких стрибків. Навіть при вимірюванні щохвилини, середній струм BME280 настільки малий, що на тому ж масштабі графіка піки DHT11/22 виглядають величезними, а лінія BME280 майже плоскою.

  • Висновок

    У цій статті ми порівняли три популярні сенсори температури та вологості – DHT11, DHT22 і BME280. Кожен з них має свою нішу і застосування:

    • DHT11 підходить для дуже простих проєктів, де бюджет обмежений, а вимоги до точності невисокі.
    • DHT22 є оптимальним вибором для більшості побутових проєктів – він забезпечує прийнятну точність і простоту інтеграції, особливо коли потрібно вимірювати лише температуру і вологість.
    • BME280 – сенсор нового покоління, який за невелику додаткову плату надає високоточні дані про температуру, вологість і тиск, а також дозволяє економити енергію, що робить його ідеальним для професійних метеостанцій та IoT-девайсів.

    Сподіваємось, ця стаття допоможе вам зробити правильний вибір сенсора для вашого наступного проєкту, зважаючи на вимоги до точності, енергоспоживання та зручність інтеграції.


    Ключові слова: DHT11, DHT22, BME280, температура, вологість, атмосферний тиск, Arduino, Raspberry Pi, IoT, енергозбереження.

    © 2025 Мій Проект.Автор: Jazzzman. Використання матеріалів дозволено лише з посиланням на джерело.

    Рекомендовані товари
    Схожі статті
    Розумний годинник без жодної кнопки
    Розумний годинник без жодної кнопки
    Блог, Інструкції Підключення та Огляди
    17 вересня 2024
    Розумний нічник на ESP8266 та WS2812 з управлінням через веб-сервер
    Розумний нічник на ESP8266 та WS2812 з управлінням через веб-сервер
    Блог, Інструкції Підключення та Огляди
    18 вересня 2024
    Система захисту від потопу на базі Arduino
    Система захисту від потопу на базі Arduino
    Блог, Інструкції Підключення та Огляди
    19 вересня 2024
    Порівняння модулів ESP-01S та NRF24L01+: детальний аналіз для вашого проекту
    Порівняння модулів ESP-01S та NRF24L01+: детальний аналіз для вашого проекту
    Блог, Інструкції Підключення та Огляди
    17 березня