Проблема с датчиком bmp 280

Тема в разделе "Arduino & Shields", создана пользователем Alex20280, 6 янв 2020.

  1. Alex20280

    Alex20280 Нерд

    Здравствуйте!

    Пытаюсь подключить датчик bmp280, купленный на (Aliexpress).
    Screenshot_4.png Screenshot_6.png

    Подключали к ардуино нано через I2C:
    VCC - 3.3v
    GND - GND
    SCL - A5
    SDA - A4

    I2C сканер видит устройство под адресом 0х76.
    Screenshot_8.png

    Перепробовал различные библиотеки (Adafruit_BMP280.h, BME280, SparkFun BME280)
    При запуске скета в мониторе порта пишется что датчик не найден:
    Screenshot_1.png

    Код:
    Код (C++):
    #include <Adafruit_BMP280.h>
    Adafruit_BMP280 bmp280;
    void setup() {
      Serial.begin(9600);
      Serial.println(F("BMP280"));
      while (!bmp280.begin(BMP280_ADDRESS - 1)) {
        Serial.println(F("Could not find a valid BMP280 sensor, check wiring!"));
        delay(2000);
      }
    }
    void loop() {
      float temperature = bmp280.readTemperature();
      float pressure = bmp280.readPressure();
      float altitude = bmp280.readAltitude(1013.25);
      Serial.print(F("Temperature = "));
      Serial.print(temperature);
      Serial.println(" *C");
      Serial.print(F("Pressure = "));
      Serial.print(pressure);
      Serial.println(" Pa");
      Serial.print(F("Altitude = "));
      Serial.print(altitude);
      Serial.println(" m");
      Serial.println();
      delay(2000);
    }
    Замерял питание, подается нужные 3.3v.
    Я покупал 2 датчика, оба ведут себя одинаково.
    Я думаю что что проблема может быть с библиотекой.
    Подскажите плиз.
     
  2. DetSimen

    DetSimen Guest

    зачем минус 1?
     
  3. Alex20280

    Alex20280 Нерд

    В библиотеке стоит дефолтный адрес устройства - 0x77. Я так подозреваю это делали чтобы настроится на устройство с адресом 0х76 (как и у меня). Я пробовал с -1 и без, никакой разницы.
     
  4. DetSimen

    DetSimen Guest

    я бы так попробовал
     
  5. Alex20280

    Alex20280 Нерд

    Попробовал. То же самое. Пишет "Could not find a valid BMP280 sensor, check wiring!"
     
  6. ratman

    ratman Нерд

  7. Asper Daffy

    Asper Daffy Иксперд

    1. каково напряжение ардуины? Там точно всё нормально с логическими уровнями?

    2. begin может вернуть false только в одном случае - если устройство (датчик) ответило chipid не 0x58. Так напечатай, что оно ответило и скажи нам, чего вслепую-то гадать?
     
    DetSimen нравится это.
  8. Alex20280

    Alex20280 Нерд

  9. Bon

    Bon Нуб

    Заработало потому, что в бибилиотеке cactus_io_BME280_I2C прописан CHIPID 0x60, а в Adafruit_BMP280_Library CHIPID 0x58.
    Также следует учесть, что в датчике вывод SD0 - формирует адрес на шине: SD0 на VCC адрес 0х77, SD0 на GND - 0х76.