Китайский датчик

Тема в разделе "Arduino & Shields", создана пользователем Filippov_MV, 2 мар 2017.

  1. Filippov_MV

    Filippov_MV Нуб

    Народ, помогите, купил датчик [​IMG] BME/P(280),
    Код (C++):
    #include <Wire.h>
    #include <SPI.h>
    #include <Adafruit_Sensor.h>
    #include <Adafruit_BME280.h>

    #define BME_SCK 13
    #define BME_MISO 12
    #define BME_MOSI 11
    #define BME_CS 10

    #define SEALEVELPRESSURE_HPA (1013.25)

    //Adafruit_BME280 bme; // I2C
    //Adafruit_BME280 bme(BME_CS); // hardware SPI
    Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);

    void setup() {
      Serial.begin(9600);
      Serial.println(F("BME280 test"));

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

    void loop() {
      Serial.print("Temperature = ");
      Serial.print(bme.readTemperature());
      Serial.println(" *C");

      Serial.print("Pressure = ");

      Serial.print(bme.readPressure() / 100.0F);
      Serial.println(" hPa");

      Serial.print("Approx. Altitude = ");
      Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
      Serial.println(" m");

      Serial.print("Humidity = ");
      Serial.print(bme.readHumidity());
      Serial.println(" %");

      Serial.println();
      delay(2000);
    }
    Нужно снять показания влажности, а он зараза не хочет. Пытался воспользоваться стандартным решением адрес I2C порта(0x77) поменять на 0x76. Не помогло. Датчик BME280 вообще не работает. А если использовать его как BMP280, то всё нормально. А в BMP280 не предусмотрена регистрация показаний влажности. Как быть?
    Вот схема пайки[​IMG]
    Использую arduino uno
     
  2. kiteservice

    kiteservice Нуб

    Решение для китайских датчиков http://davidstein.cz/2017/09/30/arduino-bme280-could-not-find-a-valid-bme280-sensor-solved/
    Есть в кратце, то
    Если не сработал фокус с указанием I2C адреса, то надо открыть библиотеку BMP280.cpp и закомментировать строчку return false; (строка номер 93) после if (read8(BMP280_REGISTER_CHIPID) != chipid)