Меню

Bme280 не работает по i2c

Метеодатчик BME280 – подключение к Arduino

Однажды, холодными осенними вечерами, или зимними, а может, даже и летними вечерами (собственно, у нас в России даже летом может быть очень холодно) вам захотелось собрать на платформе Arduino самый искусный проект из всех возможных – метеостанцию!

Для этого можно обойтись простым датчиком температуры и влажности, например, из семейства DHT. Согласитесь, недорогой и простой в использовании модуль, про который всегда можно найти много информации касаемо программных кодов и прочего. Но нет! Вам не хочется быть, как все, и вы покупаете специальный метеодатчик BME280, который способен измерять и давление, и температуру, и влажность. О нем-то мы сегодня и поговорим.

Для реализации проекта из этой статьи нам потребуются следующие компоненты:

Краткий обзор BME280

Данный датчик емкостного типа, что заведомо делает его более точным, чем резистивные датчики типа DHT11. Стоит он чуть подороже последнего, но имеет ряд преимуществ.

Во-первых, в нем содержится уже 3 датчика: отсюда способность измерять температуру, давление и влажность. Модуль работает через I2C или SPI интерфейс.

На самой плате не располагаются стабилизатор на 3,3 В, поэтому питание больше 3,6В подавать не рекомендуется.

Заявленные характеристики у датчика следующие:

– Точность измерения влажности ±3 %RH (в диапазоне 20…80 %RH)
– Точность измерения давления ±1.0 hPa (в диапазоне 300 . . . 1100 hPa)
– Точность измерения температуры ±0.5 °C (в диапазоне -40…+85 °C)

Во-вторых, модуль рассчитан на использование в различных мобильных устройствах и проектах. Поэтому он занимает немного места и расходует мало энергии. Отсюда и питание модуля требует напряжения всего лишь в 1.71 — 3.6 В, что несколько отличает его от большинства датчиков, которые питаются от 5 В.

Также существует еще один похожий модуль под названием BMP180 – он отличается прямоугольным корпусом платы, а также исключает возможность измерения влажности воздуха.

Схема подключения

Модуль имеет 4 контакта для подключения через интерфейс i2c и 6 контактов, если через SPI. Два вывода отвечают за питание датчика. Один подключается к «земле», а второй к пину 3,3 В (не 5 В).

Источник

Arduino.ru

Поменять адрес I2C на BME280

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вот приехал ко мне такой вот датчик. По умолчанию у него адрес I2C 0x76. Согласно даташиту, чтобы сменить его на 0x77, необходимо ногу (подписанную на рисунке как SW) переключить с GND (LOW), на 3.3V (HIGH). Сейчас нога прибита к площадке указанной на рисунке. Кто-нибудь занимался подобным? Есть ли возможность в домашних условиях переключить ногу. Пока не соображу даже как копать.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Ну как водится в тот момент когда сформулировал проблему пришла догадка, что соседняя справа площадка и есть 3.3V. Нужно всего ли разрезать перемычку слева от центральной площадки и перекинуть ее направо. Вечером попробую — напишу.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

А вот и ответ появился подтверждающий. Спасибо! )

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Ну и сопутствующий вопрос (умозрительный). Свою проблему (два датчика) я то решил. А если предположим надо их десяток? Это уже программными методами решать?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Ну и сопутствующий вопрос (умозрительный). Свою проблему (два датчика) я то решил. А если предположим надо их десяток? Это уже программными методами решать?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Спасибо. Утащил в закладки.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вот только сообразить не могу, а на хрена десяток датчиков атмосферного давления на одном МК?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Читайте также:  Как настроить принтер чтобы печатал одну страницу

А ничего что он еще умеет в температуру и влажность?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Температуру и DS18B20 умеет, а их хоть гирлянду елочную вешай. Влажность кстати тоже умеет (весьма точно), но с физическими хаками.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Ну вешайте свою гирлянду где хотите. А свое непонимание оставьте при себе.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Температуру и DS18B20 умеет, а их хоть гирлянду елочную вешай. Влажность кстати тоже умеет (весьма точно), но с физическими хаками.

Дырку в нем сверлить или в психометр ставить? ))

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

У меня вот такой BME280.

Как на нём сменить i2c адрес.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

The I²C interface uses the following pins:

— SCK: serial clock (SCL)
— SDI: data (SDA)
— SDO: Slave address LSB (GND = ‘0’, VDDIO = ‘1’)

The 7-bit device address is 111011x. The 6 MSB bits are fixed. The last bit is changeable by SDO value and can be changed during operation. Connecting SDO to GND results in slave address 1110110 (0x76); connection it to VDDIO results in slave address 1110111 (0x77), which is the same as BMP280’s I²C address. The SDO pin cannot be left floating; if left floating, the I²C address will be undefined.

Источник

Arduino.ru

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Читайте также:  Не запускается электродвигатель при включении работает гудит

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

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

Читайте также:  Как настроить simfphys машины

Источник

Arduino и метеодатчик BME280

Описание

BME280 – высокоточный метеодатчик, измеряющий такие параметры микроклимата как температура, влажность и атмосферное давление. В зависимости от модуля может подключаться к I2C и SPI шинами микроконтроллера и работать от 3-5V, если на плате есть стабилизатор, или 3V, если его нет.

На обратной стороне платы не просто так написано BME280/BMP280 – BMP является урезанной версией BME, в которой нет влажности. Как их различить, если недобросовестный китаец не поставил галочку? По корпусу датчика:

В наборе GyverKIT первых партий (все наборы 2021 года) шёл BME280 версии I2C 5V, но старт продаж набора совпал с мировым кризисом микросхем, из за которого датчик стал сильно дефицитным и китайцы начали хитрить. В наборах GyverKIT 2021 года можно встретить:

  • Рабочий BME280
  • Рабочий BMP280
  • Нерабочий BMP280

Мы приносим свои извинения за эту ситуацию, вы можете запросить возврат средств за модуль у магазина Giant4.

Подключение

Модуль подключается на шину I2C и питание, как и любой другой модуль такого типа:

  • Arduino: SDA – A4, SCL – A5
  • Wemos: SDA – D2, SCL – D1

Библиотеки

  • Adafruit BME280 (для работы также нужна Adafruit Sensor) – самая известная библиотека для работы с BME280. Очень тяжёлая, часть настроек доступна только при ручном редактировании библиотеки.
  • GyverBME280 – наша библиотека, более удобная и лёгкая. Также поддерживает датчики BMP280

В примерах на этом сайте мы будем использовать GyverBME280. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию GyverBME280. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

Примеры

Первым делом стоит удостовериться в работоспособности датчика и узнать его адрес, он может быть 0x77 и 0x76 . Загружаем следующий код:

Открываем монитор порта:

  • Если вывелось только Start scan и ничего больше – датчик бракованный и не будет работать
  • Если это рабочий BMP/BME – получим вывод такого вида:

Значит датчик ответил по адресу 0x76. Может ответить по 0x77.

Значит Ардуино не находит датчиков на линии. Либо датчик подключен неправильно, либо бракованный.

Далее откроем базовый пример из библиотеки, который опрашивает значения с датчика. В begin() можно передать адрес, который мы узнали из предыдущего скетча-сканера (не забываем префикс 0x). Загружаем и открываем порт:

  • Если выведется только слово Start – датчик бракованный и из-за этого программа зависла
  • Если выведется Error! – датчик бракованный или адрес не соответствует, вернись к предыдущему пункту
  • Корректно выводятся все три параметра

Start
Temperature: 24.78
Humidity: 41.69
Pressure: 99701.28

Датчик рабочий, и это BME280

  • Выводится температура и давление, влажность – 0

Start
Temperature: 24.78
Humidity: 0
Pressure: 99701.28

Датчик рабочий, и это BMP280, т.е. без влажности.

Источник

Adblock
detector