BMP388 / CJMCU-388 Датчик атмосферного давления

Технические характеристики BMP388 / CJMCU-388, распиновка, схемы подключения к ESP32, Arduino, Raspberry, документация и примеры кода.

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

Обзор

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

BMP388 — это датчик нового поколения от Bosch Sensortec. Он превосходит BMP180 и BMP280 по точности, уровню шума и температурной стабильности.

BMP388
Спецификации

Характеристики BMP388

Полные технические параметры датчика BMP388 / CJMCU-388.

Интерфейс I²C (до 3.4 МГц) / SPI (до 10 МГц)
Диапазон давления 300 hPa – 1250 hPa
Точность ±0.08 hPa (±0.66 м)
Питание 1.65В – 3.6В (3.3В рекомендуется)
Скачать Datasheet
Конфигурация

Распиновка BMP388

Датчик поддерживает два протокола связи. Выбор режима зависит от подключения пина CS.

Пин Тип Описание Примечание
VCC Питание Вход питания 3.3В (не 5В!)
GND Земля Общий минус -
SDA / SDI Данные Линия данных I2C / SPI GPIO21 (ESP32)
SCL / SCK Такты Тактовая линия I2C / SPI GPIO22 (ESP32)
CS Управление Выбор чипа SPI К GND для I2C
SDO Адрес Выход SPI / Адрес I2C GND=0x76, VCC=0x77
Подключение

Подключение BMP388 к ESP32

Типовая схема подключения по интерфейсу I2C.

BMP388 Пин ESP32 Пин Описание
VCC 3.3V Питание датчика
GND GND Земля
SDA GPIO 21 Данные I2C
SCL GPIO 22 Такты I2C
Отладка

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

Ошибка инициализации (Sensor not found)
Проверьте питание (должно быть 3.3В). Убедитесь, что пин CS подключен к GND для режима I2C. Проверьте I2C адрес сканером (0x76 или 0x77).
Неверные показания высоты
Высота рассчитывается на основе давления на уровне моря. Убедитесь, что вы используете актуальное значение `SEALEVELPRESSURE_HPA` для вашего региона.
Код

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

Arduino Arduino Framework
C++
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP3XX.h>

Adafruit_BMP3XX bmp;

void setup() {
  Serial.begin(115200);
  if (!bmp.begin_I2C(0x76)) {
    Serial.println("Датчик BMP388 не найден!");
    while (1);
  }
}

void loop() {
  if (!bmp.performReading()) return;
  Serial.print("Температура: ");
  Serial.print(bmp.temperature);
  Serial.println(" *C");
  Serial.print("Давление: ");
  Serial.print(bmp.pressure / 100.0);
  Serial.println(" hPa");
  delay(2000);
}
ESPHome ESPHome
YAML
sensor:
  - platform: bmp388
    temperature:
      name: "BMP388 Temperature"
    pressure:
      name: "BMP388 Pressure"
    address: 0x76

Итоги

BMP388 — лучший выбор для проектов, где важна точность измерения высоты и стабильность данных.

Рекомендации

Для уличных станций защищайте датчик от прямых солнечных лучей и ветра, чтобы избежать скачков показаний.

Посмотреть примеры кода Скачать Datasheet