Каталог товаров
Клиенту
Тема сайта:
+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 в различных применениях (домашние метеостанции, «умные» теплицы, проекты интернета вещей и тому подобное) и приведём примеры кода для подключения их к Arduino и Raspberry Pi. Для наглядности будут приведены таблицы и описаны графики, иллюстрирующие разницу в точности измерений и других параметрах.


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

DHT11

DHT11бюджетный цифровой датчик для измерения температуры и относительной влажности. Он содержит термистор для измерения температуры и ёмкостный датчик влажности, объединённые с простым аналого-цифровым преобразователем, который передаёт результаты в цифровом формате. Диапазон измерения температуры ограничен приблизительно от 0°С до +50°С, с точностью около ±2°С в этом диапазоне. Диапазон влажности – от примерно 20% до 80% относительной влажности с точностью около ±5%. Разрешающая способность DHT11 низкая: температура измеряется целыми градусами (шаг 1°С), поэтому небольшие изменения температуры он не фиксирует. Частота обновления данных также невысокая – не более одного измерения в секунду (1 Гц). DHT11 может работать от напряжения 3,3 В или 5 В, потребляя до приблизительно 2,5 миллиампер тока во время измерения. В состоянии покоя потребление очень низкое. Передача данных осуществляется по однопроводному собственному протоколу – для подключения требуется только один цифровой вывод микроконтроллера (плюс питание и земля), однако обязательно требуется подтягивающий резистор на линии данных.

DHT22 (AM2302)

DHT22 является усовершенствованной версией DHT11 – он дороже на несколько долларов, но обеспечивает значительно лучшие характеристики. Этот датчик также измеряет температуру и влажность, используя аналогичный принцип (ёмкостный датчик влажности плюс термистор). Диапазон температур значительно шире: от -40°С до +80°С, а погрешность температуры всего около ±0,5°С. Диапазон влажности – 0–100% относительной влажности, с типичной точностью ±2% (до ±5% максимальная погрешность). DHT22 выдаёт температуру с разрешающей способностью 0,1°С, таким образом он может фиксировать мелкие изменения, недоступные для DHT11. Частота обновления данных в два раза меньше: не более 0,5 Гц (одно новое измерение раз в 2 секунды). Как и DHT11, DHT22 работает от 3,3–5 В и потребляет до 2,5 миллиампер во время запроса данных. Физически DHT22 немного больше, чем DHT11, однако подключение осуществляется аналогичным образом – по однопроводному интерфейсу с соответствующим резистором. В целом, DHT22 превосходит DHT11 по всем основным параметрам точности и диапазона, поэтому за небольшую разницу в цене его обычно выбирают вместо DHT11.

BME280

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


Сравнительная таблица характеристик

Характеристика DHT11 DHT22 (AM2302) BME280
Измеряемые величины Температура, влажность Температура, влажность Температура, влажность, давление
Температурный диапазон 0…50 °С -40…80 °С -40…85 °С
Погрешность температуры ±2 °С (0…50 °С) ±0,5 °С (во всём диапазоне) ±1,0 °С (типичная)
Диапазон влажности примерно 20…80 % относительной влажности 0…100 % относительной влажности 0…100 % относительной влажности
Погрешность влажности ±5 % относительной влажности ±2 % относительной влажности (типичная), до ±5 % ±3 % относительной влажности
Разрешающая способность примерно 1 °С; примерно 1 % относительной влажности примерно 0,1 °С; примерно 0,1 % относительной влажности примерно 0,01 °С; примерно 0,008 % относительной влажности (16-битный аналого-цифровой преобразователь)
Частота обновления ≤1 Гц (1 измерение в секунду) ≤0,5 Гц (1 измерение раз в 2 секунды) До примерно 100 Гц
Интерфейс связи Однопроводной (протокол DHT) Однопроводной (протокол DHT) I²C или SPI (цифровая шина)
Питание 3,0–5,5 В 3,0–6,0 В 1,71–3,6 В (чип); 3,3–5 В (модуль)
Потребление тока примерно 50 микроампер (в режиме ожидания); до 2,5 миллиампер при измерении примерно 50 микроампер (в режиме ожидания); до 2,5 миллиампер при измерении примерно 3,6 микроампера (при 1 Гц); 0,1 микроампера (режим сна)

Примечание: Значения могут несколько отличаться в зависимости от конкретной реализации датчика.


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

Интерфейс и подключение

DHT11 и DHT22 имеют три вывода для подключения: питание (VCC), земля (GND) и сигнальный вывод данных. Данные передаются по одной линии с использованием специального протокола. Для корректной работы требуется подтягивающий резистор (примерно 4,7 кОм – 10 кОм) между выводом данных и VCC, если он не встроен в модуль. Считывание данных с DHT11/22 требует точной синхронизации импульсов, поэтому реализация протокола «вручную» может быть сложной. К счастью, существуют готовые библиотеки – например, Adafruit DHT для Arduino или модуль dht в MicroPython, которые упрощают взаимодействие. Совместимость с микроконтроллерами очень широкая: датчики DHT можно использовать с Arduino, ESP8266/ESP32, Raspberry Pi и другими. Однако на Raspberry Pi считывание DHT11/22 может осложняться из-за отсутствия жёсткого режима реального времени, поэтому иногда применяют специальные библиотеки на языке С или используют метод «бит-бэнгинг» с повышенным приоритетом, либо подключают внешний контроллер. В целом, подключение DHT11/22 не является сложным: достаточно соединить три провода (VCC, GND, Data) и установить библиотеку.

BME280 благодаря стандартному интерфейсу I²C/SPI также легко подключается. Типичный модуль имеет четыре основных контакта: VCC, GND, SCL (тактовый сигнал) и SDA (данные) для I²C. При использовании SPI задействованы шесть контактов (включая 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% относительной влажности) ограничивают его применение. Для уличной метеостанции он не подойдёт, поскольку в экстремальных условиях показания могут быть некорректными. Низкая точность (±2°С) и разрешающая способность 1°С приводят к «ступенчатому» виду графика.

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

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

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

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

Преимущества:
BME280 – это наиболее функционально оснащённый и точный датчик среди рассматриваемых. Он сочетает в себе три датчика в одном: измеряет температуру, влажность и атмосферное давление, что особенно полезно для метеостанций. Такая комбинация позволяет отслеживать барометрические тенденции, рассчитывать высоту над уровнем моря и улучшать прогнозы погоды. Точность (±1°С для температуры и ±3% для влажности) обеспечивает стабильность показаний, а быстрый отклик (несколько секунд) позволяет оперативно реагировать на изменения. BME280 имеет низкий уровень шума и обеспечивает плавный график измерений. Интерфейсы I²C и SPI упрощают интеграцию, а чрезвычайно низкое энергопотребление (несколько микроампер при измерении, 0,1 микроампера в режиме сна) делает его идеальным для устройств интернета вещей.

Недостатки:
Основным недостатком является более высокая цена по сравнению с датчиками DHT, что может быть нецелесообразно для бюджетных проектов. Настройка режимов работы может быть сложнее, а явление самонагрева может приводить к показаниям температуры примерно на 1–2°С выше реальных, что следует учитывать.

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


Примеры кода для подключения (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();   // считываем температуру (°С по умолчанию)
  
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Ошибка считывания с DHT датчика!");
  } else {
    Serial.print("Температура: ");
    Serial.print(temperature);
    Serial.print(" °С\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}°С, Влажность: {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();    // температура в °С
  float humidity    = bme.readHumidity();         // относительная влажность в %
  float pressure    = bme.readPressure() / 100.0;   // давление в гПа
  
  Serial.print("T=");
  Serial.print(temperature, 1);
  Serial.print("°С, 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  # температура в °С
humidity    = bme280.humidity     # влажность в %
pressure    = bme280.pressure     # давление в гПа

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

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

Представим, что мы записали показания с DHT11, DHT22 и BME280 в течение суток в одинаковых условиях.

  • DHT11: Отображает температуру целыми градусами, поэтому его график имеет ступенчатый вид. Значения изменяются скачкообразно на 1°С и могут оставаться на одном уровне, пока реальная температура не изменится более чем на примерно 0,5°С.
  • DHT22: Измеряет температуру с разрешающей способностью 0,1°С, поэтому его показания изменяются плавнее. График DHT22 более гладкий, отслеживая даже незначительные колебания до десятых долей градуса.
  • BME280: Датчик имеет разрешающую способность 0,01°С, таким образом его график практически непрерывный (без видимых ступенек). Он фиксирует очень мелкие колебания температуры. Однако из-за самонагрева или особенностей калибровки показания BME280 могут быть смещены в среднем на примерно 1–2°С выше фактической температуры.

При анализе графика влажности:

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

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

  • DHT11 / DHT22: Эти датчики потребляют энергию импульсно. Они активны только во время измерения, поэтому каждую минуту при опросе происходит кратковременный пик потребления тока. Например, в момент запроса данных DHT22 может потреблять примерно 1–2 миллиампера в течение нескольких миллисекунд, после чего возвращается почти к 0 миллиампер до следующего опроса. На графике это выглядит как серия резких пиков каждую минуту на нулевой базовой линии. (У DHT11 наблюдается аналогичный характер потребления с пиками порядка 0,5–2 миллиампера.)
  • BME280: Чрезвычайно энергоэффективный датчик. Может работать в режиме непрерывного измерения с очень низким потреблением примерно 0,002–0,003 миллиампера (примерно 2–3 микроампера) при частоте 1 Гц. Его график потребления представляет собой стабильно низкую линию без резких скачков. Даже при измерении каждую минуту средний ток BME280 настолько мал, что на том же масштабе графика пики DHT11/DHT22 выглядят огромными, а линия BME280 практически плоской.

Вывод

В данной статье мы сравнили три популярных датчика температуры и влажности – DHT11, DHT22 и BME280. Каждый из них имеет свою нишу и применение:

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

Надеемся, что данная статья поможет вам сделать правильный выбор датчика для вашего следующего проекта, учитывая требования к точности, энергопотреблению и удобству интеграции.


Ключевые слова: DHT11, DHT22, BME280, температура, влажность, атмосферное давление, Arduino, Raspberry Pi, интернет вещей, энергосбережение.

© 2025 Мій Проект. Автор: Jazzzman. Использование материалов разрешено только с указанием источника.

Рекомендуемые товары
Похожие статьи
Умные часы без единой кнопки
Умные часы без единой кнопки
Блог, Инструкции Подключения и Обзоры
17 сентября 2024
Умный ночник на ESP8266 и WS2812 с управлением через веб-сервер
Умный ночник на ESP8266 и WS2812 с управлением через веб-сервер
Блог, Инструкции Подключения и Обзоры
18 сентября 2024
Система защиты от потопа на базе Arduino
Система защиты от потопа на базе Arduino
Блог, Инструкции Подключения и Обзоры
19 сентября 2024