
Интернет-магазин «Неглупый Дом»
BMP280 измеряет атмосферное давление и температуру, значения переводятся в привычные мм рт. ст. и выводятся на дисплей.
BMP280 — цифровой барометрический датчик: внутри него есть миниатюрная мембрана, деформация которой под давлением воздуха преобразуется в электрический сигнал, который сама микросхема оцифровывает и калибрует по заводским коэффициентам. По цифровой шине I2C Arduino получает уже готовое значение давления в паскалях и температуры в градусах, без необходимости калибровать переводные формулы самостоятельно.
Атмосферное давление принято измерять в паскалях (Па) в международной системе единиц, но в быту и в прогнозах погоды в России привычнее миллиметры ртутного столба (мм рт. ст.) — 1 мм рт. ст. равен примерно 133.322 Па, отсюда и коэффициент деления в коде.
Важный нюанс: BMP280 измеряет абсолютное давление в точке установки, которое зависит от высоты над уровнем моря — чем выше, тем ниже давление. Метеостанции обычно приводят показания к уровню моря (так называемое давление, приведённое к уровню моря) для сравнимости между разными городами, но для бытового барометра абсолютные значения в месте установки вполне годятся — важнее их изменение во времени, а не абсолютное число.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#include <Wire.h>
#include <Adafruit_BMP280.h>
#include <LiquidCrystal_I2C.h>
Adafruit_BMP280 bmp;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
if (!bmp.begin(0x76)) {
// если на адресе 0x76 датчик не отвечает, попробуйте 0x77 — зависит от платы
Serial.println("Ошибка: датчик BMP280 не найден, проверьте подключение и адрес");
}
lcd.init();
lcd.backlight();
}
void loop() {
float pressure = bmp.readPressure() / 133.322; // переводим паскали в мм рт.ст.
float temp = bmp.readTemperature();
lcd.setCursor(0, 0);
lcd.print("P: "); lcd.print(pressure, 0); lcd.print(" mmHg");
lcd.setCursor(0, 1);
lcd.print("T: "); lcd.print(temp, 1); lcd.print(" C");
Serial.print("Давление: ");
Serial.print(pressure);
Serial.print(" мм рт.ст., температура: ");
Serial.println(temp);
delay(2000); // давление меняется медленно, частый опрос не нужен
}
Библиотека Adafruit BMP280 требует Adafruit Unified Sensor — обе ставятся через Менеджер библиотек. Адрес датчика на шине может быть 0x76 или 0x77 в зависимости от платы.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 290 ₽ 261 ₽ (экономия 29 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.