Заказывал датчики для дачной метеостанции и завис над корзиной на полчаса: в одной строке DHT22, в соседней BME280, разница в цене — как ещё один DHT22 сверху. За что, собственно, доплата — за давление? А если давление мне и не понадобится через месяц? Вопрос в тот раз я решил в пользу BME280 и половину решения потом переделал обратно — так и накопился материал для этого урока: что реально даёт доплата, что она не даёт и где платят дважды за одно и то же.
Спойлер, испорченный таблицей ниже: за давление вы доплачиваете реже, чем кажется. Чистый барометр BMP280 на маркетплейсах стоит дешевле DHT22 — Bosch продаёт давление по цене пачки чипов. Дорогая часть — буква E в середине имени: влажностный элемент BME280, плюс SHT31 с его ±0,2 °C — ещё дороже. Так что вопрос «переплатить или нет» распадается на три отдельных чека: за давление, за качество влажности и за шину. И каждый чек решается по-своему.
Цена против паспорта
Цены я даю относительными — маркетплейсы гуляют в обе стороны, но соотношения держатся годами. За базу взял DHT22: чистый барометр BMP280 стоит примерно половину-две трети этой цены, BME280 — полторы-две базы, SHT31 — две-три. И теперь паспортные цифры рядом с ценой дают забавные развороты: самый дешёвый из четвёрки умеет то, чего нет у DHT22 вовсе — атмосферное давление 300-1100 гПа с разрешением, на котором виден суточный ход и приближение фронта. Суточный ход, к слову, виден и по дешёвому кристаллу: амплитуда в 2-3 гПа между утром и вечером — это честные полтора-два миллиметра ртутного столба, при том что шум чтения у BMP280 — сотые доли. Самый дорогой не умеет давления ни капли, зато меряет температуру с ±0,2 °C — там, где DHT22 честно расползается на полградуса.
Есть в сравнении и скользкое место, о котором таблицы пишут мельче всего — ресурс. DHT22 — расходник: влажностный элемент деградирует, и через два-четыре года прибор начинает занижать показания или ловить nan на ровном месте; конденсат этот срок режет. Сенсоры Bosch в этом смысле живут заметно дольше — кристалл за стеклом не боится пыли и сухого воздуха, а влажностный элемент защищён мембраной. Проверка ресурса у меня печальная, но простая: старейший мой DHT22 дожил до четвёртой зимы и стал занижать влажность процентов на десять — узнал я об этом по солевому тесту из урока про калибровку, а не по монитору. Не вечность, но при круглосуточной работе разница в сроке службы — тоже часть цены, просто она проявится через годы.
| Сенсор | Цена от DHT22 | Температура | Влажность | Давление | Шина |
|---|---|---|---|---|---|
| DHT22 | 1× (база) | ±0,5 °C | ±2-5 % | нет | 1 провод, любой пин |
| BMP280 | ≈0,5-0,7× | ±0,5-1 °C | нет | 300-1100 гПа | I2C 0x76/0x77 |
| BME280 | ≈1,5-2× | ±0,5-1 °C | ±3 % | 300-1100 гПа | I2C 0x76/0x77 |
| SHT31 | ≈2-3× | ±0,2 °C | ±2 % | нет | I2C 0x44/0x45 |
Интерфейс — половина решения, которую каталоги теряют между строк. DHT22 вешается на любой цифровой пин и тянет витой парой на несколько метров: для многоканального дома, где каждая комната — своя точка, это дешевле и проще всего остального. Плата за простоту — один датчик на один пин и неторопливые две секунды на пересчёт. Шина I2C берёт другим: два провода SDA и SCL, и на них же садится вся семья — дисплей, часы, второй датчик, энергонезависимая память. Механику шины я разбирал в уроке про два провода I2C, а адреса соседей по шине за секунду находит сканер — перед покупкой второго I2C-прибора прогоните его обязательно, спор адресов лечится джампером на модуле. На Uno свободные цифровые пины кончаются быстрее аналоговых, и экономия одного пина на сенсор — уже аргумент; а на ATtiny аппаратной шины нет вовсе, и DHT там остаётся едва ли не единственным цифровым метеосенсором, что я ни разу не счёл недостатком.
Теперь про саму доплату за давление — точнее, за то, что давление умеет. Это не колонка в журнале, а функция: падение на 3-4 гПа за три часа — верный знак приближающегося фронта, устойчивый рост — прояснение, и урок про прогноз по тренду собирает это в рабочую сигнализацию. Если тренд вам не нужен — вы платите за опцию, которую не включите никогда. Обратный случай мой любимый: давление нужно, влажность — как повезёт, тогда BME280 не нужен целиком, и связка DHT22 плюс дешёвый BMP280 закрывает задачу за меньшие деньги.
Гибрид: каждый меряет своё
Про температуру BME280 у меня давнее скептическое мнение, и я его не скрываю: кристалл греется сам и меряет собственное тепло охотнее, чем воздух вокруг — паспорт честно пишет ±0,5-1,0 °C, и на плотно упакованной плате с дисплеем и реле это полтора градуса сдвига легко. Влажностный элемент при этом хорош, а вот температуру воздуха мне спокойнее поручить DHT22, поставленному в сторону от горячих соседей. Отсюда мой бюджетный фаворит для улицы и балкона: DHT22 на своём пине меряет воздух, BMP280 на шине — давление, и ни один не греет показания другого. Целиком такой прибор собран в уроке про метеостанцию на DHT22 и BMP280. Барометр при этом ставлю на дальний угол макетки: чем дальше от стабилизатора и дисплея, тем меньше чужого тепла в колонке давления — оно ему не нужно, он меряет воздух целого столба атмосферы.
#include <Wire.h>#include <Adafruit_BMP280.h>#include "DHT.h" DHT dht(2, DHT22); // воздух: температура и влажностьAdafruit_BMP280 bmp; // давление: кристалл вдали от DHT void setup() { Serial.begin(9600); dht.begin(); if (!bmp.begin(0x76)) { Serial.println("barometr molchit: skaner shiny, pitanie 3.3V"); }} void loop() { float t = dht.readTemperature(); float h = dht.readHumidity(); float p = bmp.readPressure() / 100.0; // Па -> гПа float pmm = p * 0.75006; // гПа -> мм рт. ст. Serial.print("t="); Serial.print(t, 1); Serial.print(" h="); Serial.print(h, 0); Serial.print(" p="); Serial.print(p, 1); Serial.print(" pmm="); Serial.println(pmm, 1); delay(5000);}В мониторе этого скетча видно всё, за что платят обеим сторонам: колонки t и h от датчика на пине, колонки p и pmm от барометра на шине. А в симуляторе ниже дуэль показана честно — движок эмулирует оба сенсора, и вы двигаете их ползунки по отдельности.
Вердикты под задачу
Мой итоговый расклад по задачам выглядит так. Многоканальный дом на бюджете — DHT22 в каждую комнату, свой пин, минимум проводов. Улица с прогнозом — гибрид DHT22 плюс BMP280 или полный BME280, если хочется один модуль вместо двух. Теплица и инкубатор с счётом на десятые — SHT31, здесь его цена отрабатывает. Давление без влажности, например высотомер или барограф — BMP280 и не думать, он всё равно дешевле. А выбор внутри самого семейства DHT — отдельный разговор: младший брат по-прежнему непобедим там, где нужна цена, а не точность.
Один нюанс, который стоит проговорить до покупки: все цифры таблицы — паспортные, а не гарантия честности конкретного лотка. Подделки водятся и в семействе Bosch, и в семействе DHT — урок про фальшивки DHT22 учит читать маркировку и гнать морозильный тест. Раз брак возможен везде, аргумент «перейду на Bosch и исчезнут проблемы» работает слабее, чем кажется: надёжнее покупать у продавца с историей и проверять ID первой строкой скетча. И раз уж журнал у нас заведётся — перед первым запуском выбранного сенсора прогоните его сутки в режиме отладки из следующего урока: паспорт скажет, чего ждать в среднем, а суточная запись покажет, чего ждать именно от вашего экземпляра. Расписание, всплески и запись на карту — третий урок кластера.
- BMP280 дешевле DHT22: давление фактически бесплатное — доплата идёт за влажностный элемент буквы E.
- Паспорт: DHT22 ±0,5 °C и ±2-5 % RH раз в 2 с; BME280 ±0,5-1 °C, ±3 % RH и 300-1100 гПа; SHT31 ±0,2 °C и ±2 % RH.
- 1 провод против I2C: DHT вешается на любой пин и тянется метрами, I2C — два провода на всю семью устройств.
- Ресурс — часть цены: DHT22 живёт два-четыре года и деградирует от конденсата, Bosch-кристаллы служат дольше.
- Регистр идентификатора закрывает спор за минуту: 0x60 — BME280, 0x58 — BMP280 без влажности.
- 1. Что умеет BME280, но не умеет BMP280?
- 2. Сколько примерно стоит BMP280 по сравнению с DHT22?
- 3. Почему температуру BME280 я меряю с недоверием на комнатной плате?
- 4. Сколько сигнальных проводов нужно DHT22 и сколько BME280?
- 5. Модуль с маркировкой BME280. Как убедиться, что внутри не BMP280?
Частые вопросы по теме урока
- Что умеет BME280, но не умеет BMP280?
- Двойка в названии прячёт урезание: BMP280 — чистый барометр с температурой, влажностного элемента у него нет. При этом давление и интерфейс у братьев общие, а цена у BMP ниже. Ничего — BMP280 урезан: у него нет влажности
- Сколько примерно стоит BMP280 по сравнению с DHT22?
- Соотношение держится годами: давление у Bosch стоит дешевле, чем температура с влажностью у DHT22. Именно поэтому связка DHT22 плюс BMP280 дешевле полного BME280. Дешевле — примерно половина-две трети цены DHT22
- Почему температуру BME280 я меряю с недоверием на комнатной плате?
- Паспорт честно пишет ±0,5-1,0 °C, и самонагрев на плотной плате с дисплеем и реле легко добавляет ещё. Температуру воздуха я поручаю DHT22 в стороне от горячих соседей. Кристалл греется сам и подмешивает своё тепло к воздуху
- Сколько сигнальных проводов нужно DHT22 и сколько BME280?
- DHT22 — один сигнальный провод плюс питание и земля. BME280 — шина I2C: SDA и SCL, два провода, но на них же садятся дисплей, часы и другие соседи по адресам. 1 и 2
- Модуль с маркировкой BME280. Как убедиться, что внутри не BMP280?
- Чип сам называет себя: регистр ID возвращает 0x60 у BME280 и 0x58 у BMP280. Одна строка печати после begin закрывает спор с продавцом раньше, чем он начался. Прочитать регистр идентификатора: 0x60 — BME, 0x58 — BMP