Китайский BMP-280, не заводится.

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

При подключении датчик определяется через сканер по адресу 0х76 что соотвествует адресу подключения по I2C, датчик вот такой https://ru.aliexpress.com/item/5-pcs-BMP280-Replace-BMP180-3-3V-Digital-Barometric-Pressure-Sensor-Module-For-Arduino/32726022405.html?spm=a2g0s.9042311.0.0.439533edqYtgof 
​Но при провеке вот этим скетчем:

#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

unsigned long delayTime;

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

    bool status;
    
    // default settings
    // (you can also pass in a Wire library object like &Wire2)
    status = bme.begin(0x76);  
    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring!");
        while (1);
    }
    
    Serial.println("-- Default Test --");
    delayTime = 1000;

    Serial.println();
}


void loop() { 
    printValues();
    delay(delayTime);
}


void printValues() {
    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();
}

Пишет:

BME280 test
Could not find a valid BME280 sensor, check wiring!

Библиотеку изменял, менял в ней адрес и закомментировал библиотеку <adafruid_sendsor> как было сказано в видеоуроке, чтобы компилятор перестал ругаться. Делал перемычку между плюсом и SCB и пропаял повторно контакты, питал разным вольтажом, 2.5 и 3.4в от китайского БП для хлеба, при замкнутой перемычке на 3.3в выдает 2.5в,при 5в выдает 3.4в сам бп питается от 5 вольт блока питания компьютера, но это ладно. Перепробовал все что смог найти, походу гавно-модули только я заказываю, помогите пожайлуста!

 

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Скетч 

#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

unsigned long delayTime;

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

    bool status;
    
    // default settings
    // (you can also pass in a Wire library object like &Wire2)
    status = bme.begin(0x76);  
    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring!");
        while (1);
    }
    
    Serial.println("-- Default Test --");
    delayTime = 1000;

    Serial.println();
}


void loop() { 
    printValues();
    delay(delayTime);
}


void printValues() {
    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();
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Так возьмите библиотеку для BMP,  если у вас он. У BME действительно другой ID.

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Пишет тоже самое:

BMP280 test
Could not find a valid BMP280 sensor, check wiring!
 

sadman41
Offline
Зарегистрирован: 19.10.2016

Адрес-то указали либе? Сканер его видит еще, не спалили экспериментами?

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Точно, после указания адреса заработало, только выдает фигню какуюто, температура нормальная, а вот давление и высота скачет туда сюда, да и температура нет нет в минус уходит https://ibb.co/f8BXJT

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Вообще беда какаято, стал определятся через раз, а если определяется то показания ненормальные https://ibb.co/gS9N2o

sadman41
Offline
Зарегистрирован: 19.10.2016

Контакт может плохой. А может 3.3в датчику не нравится, что на его сигнальные входы подается 5v с ардуины.

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Питание подается 2.5в, с БП, не с ардуины. Контакты 2 раза пропаивал уже. 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

sadman41 пишет:

Контакт может плохой. А может 3.3в датчику не нравится, что на его сигнальные входы подается 5v с ардуины.


...... особенно когда нет его питания или оно дёргается.

sadman41
Offline
Зарегистрирован: 19.10.2016

dedmusoroed пишет:

Питание подается 2.5в, с БП, не с ардуины. Контакты 2 раза пропаивал уже. 

SDA/SCL тоже на блок питания заведены или куда-то в другое место?

bizzon
Offline
Зарегистрирован: 29.03.2016

Хлебный БП ему не нравится:) 

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Нет, SDA\SCL от ардуины идут на датчик, а питание от бп, между БП и ардуиной должна быть общая земля?

sadman41
Offline
Зарегистрирован: 19.10.2016

Естественно. 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

dedmusoroed пишет:

...........между БП и ардуиной должна быть общая земля?


Дааааааааааааааа...................

Bront
Offline
Зарегистрирован: 05.04.2016

так подключали

 

или вот так

 

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Нет, на бмп нельзя подавать 5в напряжения он работает от 3.3в, на плате нет стабилизатора, поэтому только 3.3в, испробовал все способы с подачей плюса на SCB и подключением земли от ардуины, I2C сканер не в какую не хочет видеть модуль. Хз что делать. Подключаю по тем же проводам RTC модуль, его видит отлично, так что вряд ли проблема в надежности соединений.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

значит уже спалили, если небыло соединения земли ардуино и датчика

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Первый раз когда скетч исправил и запустил все работало, потом давай показывать ерунду, но стабильно показывал и определял его, сегодня его подключил и вообще не реагирует. Каким образом он мог сгореть? Причем когда его подключаешь вместе с другими модулями они тоже не определяются, такое ощущение что он стопорит систему всю, и приходится кнопку сброса нажимать, чтобы сканер снова заработал. И стал показывать остальные модули. С двумя модулями одно и то же, второй позже достал как раз в то время как первый стал ерунду выдавать, еще 3 нулевых лежит ;D ...  Есть еще какието предположения в чем может быть дело, кстати ерунду выдавал скетч и без подсоединеного модуля, так что он перестал работать почти сразу ( можно сказать.

sadman41
Offline
Зарегистрирован: 19.10.2016

Он не ерунду выдавал, а значения, которые получались в результате вычисления формулы без данных с барометра. Скорее всего. Т.е. модули сразу вылетали, когда им +5V в сигнальный выход попадало. Не зря же 5V версии BMP-шек с согласователем уровней поставляются.

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Я его от 2.5в питаю, а не от 5ти.

sadman41
Offline
Зарегистрирован: 19.10.2016

Подумайте: какое сигнальное напряжение по SCL идет от 5V ардуины? Или померяйте, сделав digitalWrite(...,HIGH).

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

dedmusoroed пишет:

Нет, на бмп нельзя подавать 5в напряжения он работает от 3.3в, на плате нет стабилизатора, поэтому только 3.3в, испробовал все способы с подачей плюса на SCB и подключением земли от ардуины, I2C сканер не в какую не хочет видеть модуль. Хз что делать. Подключаю по тем же проводам RTC модуль, его видит отлично, так что вряд ли проблема в надежности соединений.

Как нет???????
Там есть специально обученный для этого пин.
Он левее пина 5 Вольт и правее пина reset на верхней картинке
Или второй слева в нижнем ряду на нижней.

Bront
Offline
Зарегистрирован: 05.04.2016

Я понял, что такое китайский БП для хлеба!!!! Оно?

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Я не понимаю к чему вы клоните. Я нуб и даже понимаю о чем вы.

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

На картинке Ардуино Уно, а у меня про мини.

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

Да, вот этот кусок, выдает по линии 3.3в только 2.5в а по 5в - 3.4в. Незнаю с чем связанно, питал и от блока питания ПК, и от зарядника. Выходное нарпяжение не меняется.

dedmusoroed
Offline
Зарегистрирован: 06.06.2018

В общем получилось обмануть систему, сегодня ни с того не с сего Ардуино ИДЕ перестал видеть порты Комовские, ну это же не в какие ворота не лезет, ты тут пытаешь совладеть с китай модулями, а у тебя еще и программа не работает, ну это же вообще пятая точка. Удалил и установил новую. И самое важное, запитал ХлебныйБП от самой ардуины, и все получилось, модули заработали, только бывает выдают левые значения, то верные то левые, но это я думаю дело в плохом контатке, работают оба натерпевшихся модуля, показывают температуру, и давление около 98к а вот высоту показывают каждый разную один 214м другой 208м но я думаю это поправимо, может наберусь терпения и завершу проэкт. Всем огромное спасибо, ваши ответы с вариантами подталкивают пробовать снова и снова, иначе я бы уже опустил руки, надеюсь вы мне и в следующих постах будете помогать, судя по началу обращатся к форму буду очень часто ;D

MrJ
Offline
Зарегистрирован: 03.03.2019

Всем привет!
Купил BMP-280 как у автора поста (на 3.3V), подключал к Uno так:

UNO - BMP280
3.3V <-> Vcc
GND <-> GND
SCL <-> SCL
SDA <-> SDA

Сканер I2C девайс не видит, тест из Adafruit BMP280 не регуется, что девайса нет, но ничего не отображает.

Проверил питание на пинах Vcc и GND на BMP280 - его нет. Тестер пищит - КЗ?

sadman41
Offline
Зарегистрирован: 19.10.2016

Т.е. совать 5В в 3.3В сенсор - это ОК, диды терпели и оне пущай тоже?

MrJ
Offline
Зарегистрирован: 03.03.2019

sadman41 пишет:

Т.е. совать 5В в 3.3В сенсор - это ОК, диды терпели и оне пущай тоже?

Опять уровни?) SCL, SDA 5В?

Диды - это что такое?

sadman41
Offline
Зарегистрирован: 19.10.2016

Так-то у бошевского сенсора bmp280 напряжение питания и IO - 1.8 ... 3.6V.

Как думаете, если вашему телевизору 400V в вилку сунуть - он просто обидится или еще дымок пусканёт?

MrJ
Offline
Зарегистрирован: 03.03.2019

sadman41 пишет:

Так-то у бошевского сенсора bmp280 напряжение питания и IO - 1.8 ... 3.6V.

Как думаете, если вашему телевизору 400V в вилку сунуть - он просто обидится или еще дымок пусканёт?

В электронике новичок, с Arduino недавно - успел разобраться с LCD, реле, DHT22, HC-05. В голову не приходило, что может быть несогласованность напряжения по шине I2C, учитывая учебную направленность Arduiono и всевозможные защиты от дурака. Пусть бы пометку на плате сделали возле пинов I2C о напряжении...

Конвертер уровней прикуплю, BMP-280 всё равно планировал менять на BME, так что не велика потеря. Заказал на 3.3В и 5В.

P.S. КЗ по питанию на BMP-280 говорит о том, что модуль прожарился?

b707
Offline
Зарегистрирован: 26.05.2017

MrJ пишет:

P.S. КЗ по питанию на BMP-280 говорит о том, что модуль прожарился?

кто ж теперь знает? может он там изначально был - попробуйте в лупу посмотреть на плату - может там сопля припоя дорожки замкнула

MrJ
Offline
Зарегистрирован: 03.03.2019

b707 пишет:

MrJ пишет:

P.S. КЗ по питанию на BMP-280 говорит о том, что модуль прожарился?

кто ж теперь знает? может он там изначально был - попробуйте в лупу посмотреть на плату - может там сопля припоя дорожки замкнула

Соплей нет - уже смотрел. Там на схеме почему-то Vcc и GND соединены через конденсатор?: крайний левый Vcc, далее GND.

Aleksandr.
Offline
Зарегистрирован: 07.03.2019

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

 

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

MrJ пишет:

b707 пишет:

MrJ пишет:

P.S. КЗ по питанию на BMP-280 говорит о том, что модуль прожарился?

кто ж теперь знает? может он там изначально был - попробуйте в лупу посмотреть на плату - может там сопля припоя дорожки замкнула

Соплей нет - уже смотрел. Там на схеме почему-то Vcc и GND соединены через конденсатор?: крайний левый

Vcc, далее GND.

Была у меня такая беда. Надо конденсатор выпаять может он коротит, если короткое замыкание остается то снимать сам BMP280. У меня как раз под BMP280 и  была сопля. Если есть фен то работы на 5 минут.

slider
Offline
Зарегистрирован: 17.06.2014

ребят гляньте по даташиту какие буквы должны быть на железке , и какие у вас. Сфотайте и выложите чтоб народ знал.
бывает аналог (у него другие буквы YP а не KU ) , для него вроде другой скетч надо. в инете инфа попадалась.
бывает и вверх ногами микросхему запаивают ! 

гуглите - подделка bmp280  , и   маркировка bmp280

если у вас модуль как в сообщении #34 (там нет стаба на 3.3в) , и вы его подключали к +5в , то скорее всего этот модуль уже не жилец.

// с ютуба https://youtu.be/OH5SkSkzZ_E коменты

Инокентий Акопыч
Была такая же фигня с китайским BMP280 (распяяным правада). Маркировка та же.XLL YP.Ничего не заводилось. Если кто юзает известный скетч с инета, выведется "Could not find a valid BME280 sensor..". Проблема оказалась с библиотекой cactus. В файле cactus_io_BME280_I2C.cpp надо закомментировать проверку if (read8(BME280_REGISTER_CHIPID) != 0x60) Наш чип возвращает другое значение 0х88. После этого все более-менее работает.

Свернуть

 
Alexey K
Александр! Пытался не наступить на те же грабли, но все же китайцы прислали сегодня партию BMP280 с буквой Y вместо K. Я уже написал им гневное письмо, но вечером впаял датчик и он сразу заработал. Не было, правда, время все протестировать тщательно.
 
Скрыть ответы
Avislab
Добрый день. Ситуация такая - одна партия (X11 YP) вся не рабочая. Запустить на шине I2C не удалось. Друга пришла (6XW YP) все работает. Заказал ради интереса 5 шт. модулей с запаянными BMP280. В модулях запаяны датчики с нормальной маркировкой.
 

 

slider
Offline
Зарегистрирован: 17.06.2014

провел эксперимент 
имея датчики китайский BMP280 буквы KW и YP и платы :

скетч i2c_scaner
 

// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
//     Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26  2013
//    V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
//    by Arduino.cc user Krodal.
//    Changes by louarnold removed.
//    Scanning addresses changed from 0...127 to 1...119,
//    according to the i2c scanner by Nick Gammon
//    http://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
//    As version 4, but address scans now to 127.
//    A sensor seems to use address 120.
// Version 6, November 27, 2015.
//    Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
 
#include <Wire.h>
 
 
void setup()
{

  pinMode(7, OUTPUT);
digitalWrite(7, LOW); 
delay(500); // подождем медленного включения мосфета


  Wire.begin();
 
  Serial.begin(9600);
  while (!Serial);             // Leonardo: wait for serial monitor
  Serial.println("\nI2C Scanner");
}
 
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // wait 5 seconds for next scan
}

 

находятся как 0x76 .
Библиотеки стандартные адафруит https://github.com/adafruit/Adafruit_BMP280_Library  https://github.com/adafruit/Adafruit_Sensor

Нашел 2 разных рабочих решения:

 1. програмный:
в примере bmp280test меняем
if (!bmp.begin()) {
на 
if (!bmp.begin(0x76)) {

  или
2. аппаратный: 

замкнуть крайние пины модуля (Vcc и SD0) . Это меняет аппаратно адрес с 0x76 на 0x77 . Или можно крайний резистор перепаять  повернуть горизонтально , чтобы он не на - , а на + подтягивал пин (собственно как и все остальные резисторы)
 

// подключал напрямую к ардуино про мини 3.3в 8мгц
фиолетовый модуль на 10метров показывает больше.