Как правильно работать с китайским датчиком давления GY-BMP280-3.3?

Китайцы продают вот такой датчик атмосферного давления: GY-BMP280-3.3. Он построен на базе бошевского BMP280. Я заказал себе такой. В сети есть скетчи и библиотеки для адафрутовской платы, но оказалось, что для китайского датчика они не подходят (по крайней мере я не смог их заставить работать).
Кроме того есть вот эта библиотека и она, как оказалось, с датчиком работает, однако значения давления выдаются неверно (ошибка в показаниях где-то на 20 миллибар, что соответствует перепаду давления в 100 метров над уровнем моря). На изменения давления датчик реагирует, поэтому есть надежда, что он не сломан. Как проводить калибровку не понятно, поскольку в самой библиотеке взята методика расчета давления прямо из бошевского датащита и не хотелось бы там что-то исправлять - и так совершенно не ясно, как там что считается.

В связи со всем этим возникает вопрос - это у меня датчик неправильно откалиброван или же для GY-BMP280-3.3 есть какая-то отдельная библиотека, которая может правильно с ним работать?
Кто использует GY-BMP280-3.3 подкиньте, пожалуйста, исходников, с которыми у вас датчик работал корректно.
  • Вопрос задан
  • 36613 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Sm0_ker
Подключил адафрутовскую библиотеку так:
запустил скетч, который просканировал i2c шину (в сети много примеров таких скетчей)
счетч вернул мне "Unknown device 0x76"
далее стал подключил адафрутовскую библиотеку и в первую команду передал адрес, который нашел при сканировании.
получилось что-то вроде этого:

if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BMP280 sensor, check wiring!");
while (1);
}


и все заработало
Ответ написан
Комментировать
@Andriuxa
у меня поначалу тоже не получилось с наскока его подключить. Пришлось разбираться - и всё оказалось просто. Я подключал к arduino uno, со следующей распиновкой:
SCL - 13
SDA - 11
CSB - 10
SDO - 12.
Далее надо доустановить библиотеку Adafruit BMP280 (Эскиз-include library-manage libraries-install), открыть скетч из нее bmp280test, и внести небольшую правку:
вместо
Adafruit_BMP280 bme; // I2C
//Adafruit_BMP280 bme(BMP_CS); // hardware SPI
//Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);

вставить
//Adafruit_BMP280 bme; // I2C
//Adafruit_BMP280 bme(BMP_CS); // hardware SPI
Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);


То есть закомментить первую строку, и разблокировать третью. После этого всё заработало.
Ответ написан
Комментировать
Адрес у сенсора 0xEC (236) работает со скетчами adafruit и подобными.
Ответ написан
Комментировать
egort
@egort
Сенсор с aliexpress с контактами SCL, SDA, CSB и SDO подключается по I2C. Адрес сенсора 0x76.
Подключение BMP280 --> Arduino Pro Mini (3v3):
SCL --> A5
SDA --> A4
CSB --> Vcc

Необходимые и достаточные исходники
Adafruit_BMP280_Library
Adafruit_Sensor

За основу взято вот это описание
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы