ARDUINO Библиотека GyverBME280

Сергей Леонидович

✩✩✩✩✩✩✩
13 Май 2021
2
0
Добрый день! Подключаю датчик AHT20+BMP280, такой
С библиотекой adafruit он работает. С библиотекой GyverBME280 возвращает 0 по всем параметрам.
Пишут, что для BMP280 i2c Адрес: 0x77. Может быть в этом дело? Тогда я не нашел как в библиотеке сменить адрес для датчика.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
В примерах для i2c (wire) есть код с названием i2c_scaner - программа ищет адреса всех подключенных по i2c устройств. При подключении любого датчика полезно проверить его этой программой.
 
  • Лойс +1
Реакции: andyparker

Сергей Леонидович

✩✩✩✩✩✩✩
13 Май 2021
2
0
В примерах для i2c (wire) есть код с названием i2c_scaner - программа ищет адреса всех подключенных по i2c устройств. При подключении любого датчика полезно проверить его этой программой.
допустим я узнаю точный адрес. Как понять какой адрес опрашивает библиотека? Или почему приходят нули.
 
Изменено:

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Нули могут приходить если адрес в библиотеке не верный. Нули могут приходить если модуль неисправен. Это при условии, что все верно соединено.
Адрес записан где то в недрах библиотеки. Но обычно инициация возможна с указанием нужного адреса.
 

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
Странное дело, у меня работает даже с bmp180. ;) Только, разумеется, с bmp влажность по нулям. Правда, GyverBME280 я не пробовал...
может библиотека какая то старая или урезанная, в адафрит бме280 и гайвер бме280 есть проверка ид датчика
адафрит
C++:
// check if sensor, i.e. the chip ID is correct
  _sensorID = read8(BME280_REGISTER_CHIPID);
  if (_sensorID != 0x60)
    return false;
гайвер
C++:
    if(GyverBME280::readRegister(0xD0) != 0x60) return false;    // Check chip ID
у бмп280 ид другой, строка из адафрит бмп280
C++:
#define BMP280_CHIPID (0x58) /**< Default chip ID. */
и проверка тоже есть
C++:
if (read8(BMP280_REGISTER_CHIPID) != chipid)
    return false;
 
Изменено:

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
@IamNikolay, я юзаю SparkFunBME280, она сама определяет тип датчика. А I2C адрес можно самому задать. Вот пример настройки:
Настройки сенсора BMx:
//      Настройки сенсора BMx:
  sensorBME.settings.commInterface = I2C_MODE;
  sensorBME.settings.I2CAddress = 0x76;      // Указать адрес датчика.
  sensorBME.settings.runMode = 3;            // При считывании не чаще раза в секунду достаточно Normal mode.
  sensorBME.settings.tStandby = 5;       
  sensorBME.settings.filter = 0;
  sensorBME.settings.tempOverSample = 1;
  sensorBME.settings.pressOverSample = 1;
  sensorBME.settings.humidOverSample = 1;
 
Изменено:

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
@PiratFox, адрес и в вышеуказанных задать можно, а вот ид у датчика зависит от модели. Сейчас посмотрел эту библиотеку - действительно она сама определяет какой датчик подключен бме или бмп
C++:
//Check communication with IC before anything else
    uint8_t chipID = readRegister(BME280_CHIP_ID_REG); //Should return 0x60 or 0x58
    if(chipID != 0x58 && chipID != 0x60) // Is this BMP or BME?
    return(chipID); //This is not BMP nor BME!
 
  • Лойс +1
Реакции: PiratFox

IamNikolay

★★★✩✩✩✩
15 Янв 2020
820
175
@Старик Похабыч, так адрес тут не при чем (вернее он должен быть правильный, но сейчас не в этом). Автор купил бмп280, а использует библиотеку от бме280, в которой есть проверка датчика по ид, которую датчик, естественно, не проходит. Вот и вся проблема.
 

bort707

★★★★★★✩
21 Сен 2020
3,064
912