BME280 датчик температуры и влажности

Изучите всё о датчике BME280: технические характеристики, распиновка, схемы подключения, datasheet и примеры кода для ESP32, Arduino, Raspberry

Окружающая среда I2C SPI

Обзор

BME280 — это компактный цифровой датчик от Bosch Sensortec, предназначенный для измерения температуры, влажности и давления с высокой точностью и низким энергопотреблением. Он поддерживает интерфейсы I²C и SPI, что делает его универсальным для интеграции в IoT-устройства, метеостанции и портативную электронику.

BME280, разработанный Bosch Sensortec, — это высокоинтегрированный датчик окружающей среды, обеспечивающий точные измерения температуры, влажности и давления. Его низкое энергопотребление и компактный размер делают его идеальным для IoT, носимых устройств и мониторинга погоды.

Датчик BME280
Быстрая навигация
Основные разделы статьи
Примеры кода
Популярные платформы

О датчике 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.

Интерфейс
I2C (до 3.4 МГц), SPI
Точность
±3% RH, ±0.5°C, ±1 гПа
Диапазон
-40°C...85°C, 0-100% RH
Питание
1.71В - 3.6В
Ток покоя
0.1 мкА
Размеры
2.5 x 2.5 x 0.93 мм
Скачать полный даташит
Конфигурация пинов

Распиновка BME280

Датчик BME280 поддерживает интерфейсы I²C и SPI.

Визуальная диаграмма распиновки
Основное
Распиновка BME280
Всего выводов
6
Типы
Питание + Коммуникация
Быстрые советы
  • Двойной протокол: поддержка 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:

Схема подключения
Рекомендуемая (I²C)
Подключение BME280 к ESP32
Подключений
4
Статус
Все обязательны
Протокол
I2C
Подключения пинов
Вывод BME280 Подключение Вывод ESP32 Описание
VCC обязательно 3.3V Питание
GND обязательно GND Земля
SCL обязательно GPIO22 Линия тактирования I²C
SDA обязательно GPIO21 Линия данных I²C
📍 Адрес I²C: 0x76 или 0x77 🔧 Резисторы подтяжки: обычно на модуле ⚡ Питание: 3.3В 📊 Скорость I²C: до 3.4 МГц
Помощь и поддержка

Устранение неполадок BME280

Распространённые проблемы и решения для запуска датчика.

Датчик найден, но не инициализируется
I2C сканер находит, но библиотека не работает

Проблема: Некоторые датчики BME280 не работают с библиотекой Adafruit из-за различий в настройках скорости I²C.

Решение: Попробуйте использовать другую библиотеку, например BME280.h вместо Adafruit_BME280.h.

Неправильная идентификация датчика
Датчик определяется как BMP280

Проблема: Некоторые модули, продаваемые как BME280, на самом деле являются BMP280 (без датчика влажности).

Решение: Если у вас BMP280, используйте библиотеку Adafruit_BMP280.h вместо BME280.

Советы по отладке

Serial монитор
Проверка логов и ошибок
Используйте Serial Monitor для проверки сообщений об ошибках и вывода данных датчика. Добавьте отладочную печать для отслеживания состояния.
Проверка напряжения
Мультиметр и целостность цепи
Используйте мультиметр для проверки уровней напряжения и целостности подключений. Убедитесь, что источник питания стабилен.

Дополнительные ресурсы

Примеры кода

Примеры программирования BME280

Готовые к использованию примеры кода для различных платформ и фреймворков.

Пример для Arduino

Совместим с Arduino IDE и платами ESP32

C++
#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++
#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
# Пример для 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.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
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!

Похожие варианты