Обзор
BME280 — это компактный цифровой датчик от Bosch Sensortec, предназначенный для измерения температуры, влажности и давления с высокой точностью и низким энергопотреблением. Он поддерживает интерфейсы I²C и SPI, что делает его универсальным для интеграции в IoT-устройства, метеостанции и портативную электронику.
BME280, разработанный Bosch Sensortec, — это высокоинтегрированный датчик окружающей среды, обеспечивающий точные измерения температуры, влажности и давления. Его низкое энергопотребление и компактный размер делают его идеальным для IoT, носимых устройств и мониторинга погоды.
О датчике BME280
BME280 — это высокоинтегрированный датчик окружающей среды от Bosch Sensortec, обеспечивающий точные измерения температуры, влажности и давления.
Ключевые особенности
- 3-в-1 — измеряет температуру (-40°C до 85°C), влажность (0–100% RH) и давление (300–1100 hPa).
- Несколько интерфейсов — поддерживает I²C и SPI для гибкой интеграции.
- Сверхнизкое потребление — потребляет всего 1.8 мкА, идеально для устройств на батарейках.
- Компактный размер — 2.5 × 2.5 × 0.93 мм для устройств с ограниченным пространством.
Приобретите BME280
Характеристики BME280
Полные технические характеристики датчика BME280.
Распиновка BME280
Датчик BME280 поддерживает интерфейсы I²C и SPI.
- Двойной протокол: поддержка I²C и SPI
- Адрес I²C: 0x76 или 0x77
- Питание: 3.3В или 5В (проверьте модуль)
- Измерения: температура, влажность, давление
| № | Название | Тип | Описание | Примечания |
|---|---|---|---|---|
| 1 | VIN/VCC | Питание | Вход питания | 3.3В или 5В (зависит от модуля) |
| 2 | GND | Питание | Земля | Общая земля |
| 3 | SCL/SCK | Коммуникация | I²C тактирование / SPI тактирование | GPIO22 (I²C) или GPIO18 (SPI) |
| 4 | SDA/SDI | Коммуникация | I²C данные / SPI MOSI | GPIO21 (I²C) или GPIO23 (SPI) |
| 5 | SDO | Коммуникация | SPI MISO (или адрес I²C) | GPIO19 для SPI, или выбор адреса I²C |
| 6 | CS | Коммуникация | Выбор чипа SPI | GPIO5 для SPI (не используется в I²C) |
Подключение BME280 к ESP32
Для подключения BME280 к ESP32 через I²C:
| Вывод BME280 | Подключение | Вывод ESP32 | Описание |
|---|---|---|---|
| VCC обязательно | → | 3.3V | Питание |
| GND обязательно | → | GND | Земля |
| SCL обязательно | → | GPIO22 | Линия тактирования I²C |
| SDA обязательно | → | GPIO21 | Линия данных I²C |
Устранение неполадок BME280
Распространённые проблемы и решения для запуска датчика.
Датчик найден, но не инициализируется
I2C сканер находит, но библиотека не работает
Проблема: Некоторые датчики BME280 не работают с библиотекой Adafruit из-за различий в настройках скорости I²C.
Решение: Попробуйте использовать другую библиотеку, например BME280.h вместо Adafruit_BME280.h.
Неправильная идентификация датчика
Датчик определяется как BMP280
Проблема: Некоторые модули, продаваемые как BME280, на самом деле являются BMP280 (без датчика влажности).
Решение: Если у вас BMP280, используйте библиотеку Adafruit_BMP280.h вместо BME280.
Советы по отладке
Serial монитор
Проверка логов и ошибок
Проверка напряжения
Мультиметр и целостность цепи
Дополнительные ресурсы
Примеры программирования BME280
Готовые к использованию примеры кода для различных платформ и фреймворков.
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
C++
Пример для Arduino
Совместим с Arduino IDE и платами ESP32
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEA_LEVEL_PRESSURE (1013.25)
Adafruit_BME280 bme;
void setup() {
Serial.begin(9600);
bool initSuccess = bme.begin(0x76);
if (!initSuccess) {
Serial.println("Ошибка инициализации датчика. Проверьте подключение.");
while (1);
}
}
void loop() {
Serial.print("Температура: ");
Serial.print(bme.readTemperature());
Serial.println(" °C");
Serial.print("Давление: ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println(" гПа");
Serial.print("Влажность: ");
Serial.print(bme.readHumidity());
Serial.println(" %");
Serial.print("Высота: ");
Serial.print(bme.readAltitude(SEA_LEVEL_PRESSURE));
Serial.println(" м");
delay(1000);
}
Необходимые библиотеки: Установите Adafruit BME280 через Arduino Library Manager.
Пример для ESP-IDF
Официальный фреймворк Espressif
C++
Пример для ESP-IDF
Официальный фреймворк Espressif
#include <stdio.h>
#include "esp_log.h"
#include "bme280.h"
#define I2C_MASTER_SCL_IO 22
#define I2C_MASTER_SDA_IO 21
#define BME280_I2C_ADDR 0x76
void app_main(void) {
static i2c_bus_handle_t i2c_bus = NULL;
static bme280_handle_t bme280 = NULL;
i2c_config_t conf = {
.mode = I2C_MODE_MASTER,
.sda_io_num = I2C_MASTER_SDA_IO,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_io_num = I2C_MASTER_SCL_IO,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = 100000,
};
i2c_bus = i2c_bus_create(I2C_NUM_0, &conf);
bme280 = bme280_create(i2c_bus, BME280_I2C_ADDRESS_DEFAULT);
bme280_default_init(bme280);
float temp = 0, hum = 0, pres = 0;
bme280_read_temperature(bme280, &temp);
bme280_read_humidity(bme280, &hum);
bme280_read_pressure(bme280, &pres);
printf("Температура: %.1f°C\n", temp);
printf("Влажность: %.1f%%\n", hum);
printf("Давление: %.1f гПа\n", pres);
}
Установка библиотеки: idf.py add-dependency "espressif/bme280^0.1.1"
Пример для ESPHome
Конфигурация для Home Assistant
YAML
Пример для ESPHome
Конфигурация для Home Assistant
# Пример для I2C
sensor:
- platform: bme280_i2c
temperature:
name: "BME280 Температура"
pressure:
name: "BME280 Давление"
humidity:
name: "BME280 Влажность"
# Пример для SPI
sensor:
- platform: bme280_spi
temperature:
name: "BME280 Температура"
pressure:
name: "BME280 Давление"
humidity:
name: "BME280 Влажность"
cs_pin: GPIO5
Пример для PlatformIO
Профессиональная среда разработки
C++
Пример для PlatformIO
Профессиональная среда разработки
platformio.ini
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
adafruit/Adafruit BME280 Library @ ^2.2.2
adafruit/Adafruit Unified Sensor @ ^1.1.7
main.cpp
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
Adafruit_BME280 bme;
void setup() {
Serial.begin(115200);
if (!bme.begin(0x76)) {
Serial.println("Датчик BME280 не найден!");
while (1);
}
}
void loop() {
Serial.print("Температура: ");
Serial.println(bme.readTemperature());
Serial.print("Давление: ");
Serial.println(bme.readPressure() / 100.0F);
Serial.print("Влажность: ");
Serial.println(bme.readHumidity());
delay(2000);
}
Пример для MicroPython
Python для микроконтроллеров
Python
Пример для MicroPython
Python для микроконтроллеров
from machine import I2C, Pin
from bme280 import BME280
import time
i2c = I2C(1, scl=Pin(22), sda=Pin(21))
bme = BME280(i2c=i2c)
while True:
print("Температура:", bme.temperature)
print("Давление:", bme.pressure)
print("Влажность:", bme.humidity)
print("-" * 30)
time.sleep(2)
Примечание: Библиотека bme280.py должна быть в той же директории.
Итоги
Рекомендации
Для оптимальной производительности обеспечьте правильное подключение и следуйте рекомендуемой конфигурации для вашей платформы разработки.
Безопасность
Всегда проверяйте требования к питанию и подключения пинов перед включением проекта.
Готовы начать?
Теперь у вас есть вся необходимая информация, пришло время интегрировать BME280 в ваш проект ESP32!
Похожие варианты

BME680 Датчик окружающей среды
BME680 — это универсальный датчик окружающей среды для измерения качества воздуха (ЛОС), температуры, влажности и давления.

SHT11 Датчик температуры и влажности
SHT11 — это высокоточный цифровой датчик температуры и влажности с полностью откалиброванным цифровым выходом.