как поменять адрес bme280

Arduino.ru

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

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

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

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

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

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

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

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

Температуру и 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.

Источник

BME280 — датчик атмосферного давления, влажности и температуры

Автор: Сергей · Опубликовано 23.05.2019 · Обновлено 13.04.2020

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

Технические параметры

Общие сведения

Рассмотрим модуль поближе, в правой части расположен датчик BME280 фирмы Bosch (это приемник таких датчиков, как BMP180, BMP085). Данный датчик измеряет влажность, температуру и давление с помощью данных показаний осуществляется расчет высоты, но эти показания не точные, подробно о датчике можно посмотреть в документации. На обратной стороне установлен стабилизатор напряжения LM6206 на 3.3 В и преобразователь уровней I2C, поэтому можно подключить модуль к микроконтроллерам с 3.3 В или 5 В логикой, не боясь.

Назначение контактов:
► VCC, GND — питание модуля 3.3 В или 5 В
► SCL — линия тактирования (Serial CLock)
► SDA — линия данных (Serial Data)

Данный модуль работает по двухпроводному интерфейсу I2C, адрес по умолчанию 0x76, но есть возможность изменить на адрес 0x77. Если присмотреться на модуль, рядом с датчиком расположены контакты, по умолчанию левый и средний контакт замкнуты проводником. Необходимо острым предметом перерезать проводник и установить припоем перемычку между центральный и правым контактом,тем самым установив адрес 0x77. При необходимости можно вернуть адрес 0x76.

Подключение датчика давления BME280 к Arduino

Необходимые детали:
► BME280 — датчик атмосферного давления, влажности и температуры x 1 шт.
► Arduino UNO R3 (DCCduino, CH340G)x 1 шт.
► Провод DuPont 10x, 2,54 мм, 20 см, F-F (Female — Female) x 1 шт.

Подключение:
В данном примере используем датчик BME280 и плату Arduino UNO R3, все получение показание отправлять в «Мониторинг порта», принципе и все, осталось собрать схему по рисунку ниже. Для интерфейса I2C на плате arduino предусмотрено только два вывода A4 и A5, другие вывода не поддерживают I2C, так что учтите при проектирование.

Читайте также:  как узнать свой день цикла месячных

Программа:
Для датчика BME280 разработана библиотека «Adafruit BME280 Library» с помощью которой можно упростить работу с датчиком. Так же, для работы датчика необходима дополнительная библиотека «Adafruit Unified Sensor«. Скачать библиотеки можно в конце статьи или можно скачать через «Менеджер библиотек» в среде разработки IDE Arduino.

Источник

Код для модификации с одним bme280 вместо пары bmp280+si702 #4

Comments

pandability commented May 22, 2017

Добрый день.
Не будете ли вы столь любезны выложить вариант кода при использовании датчика BME280?
В силу того, что желание познакомиться с IoT возникло исключительно благодаря вашей статье про метеостанцию на GT, собственных сил и знаний пока не хватает.

The text was updated successfully, but these errors were encountered:

We are unable to convert the task to an issue at this time. Please try again.

The issue was successfully created but we are unable to update the comment at this time.

kumekay commented May 23, 2017

Добрый день, да я подготовлю вариант на этой неделе

apan65 commented May 24, 2017

pinya, Отлично, как раз хотел сейчас с этим же вопросом обратиться. Буду ждать.

kumekay commented May 28, 2017

Я пока не опубликовал этот вариант, т.к. навожу порядок в коде основной ветки. Сделаю в ближайшие несколько дней, после завершения #2

apan65 commented May 29, 2017 •

kumekay commented Jun 1, 2017

На руках у меня BME280 нет, чтобы проверить, но должно работать

apan65 commented Jun 1, 2017

Такая беда
«IP address: 192.169.1.107
Load config.
Config loaded
blynk server: blynk-cloud.com
port: 8442
token: Blynk token
Connecting to blynk.
Connecting to blynk.
Connecting to blynk.
и тд, не может приконнектиться.
«

apan65 commented Jun 1, 2017

Может это проблема роутера, с портами что-то?

kumekay commented Jun 1, 2017

При настройке не указан токен blynk

Нужно сбросить на заводские настройки,
Вообще, Для сброса на заводские настройки нужно на время подсоединить GPIO 12 (D6) на землю, но здесь этот метод не сработает.
Я подумаю как это можно обойти.

Простая перепрошивка не поможет.

apan65 commented Jun 1, 2017 •

но здесь этот метод не сработает.

Почему?
Я так понимаю этот токен я где-то получить должен?
Извиняюсь, если глупости пишу, просто совсем не в теме.

Upd. Так, я понял, должен скачать приложение для андроида, зарегиться, создать проект и получить там токен?

Upd2. Ок. Получил. Я так понимаю теперь если его впишу и перепрошью, то это мне не поможет?

kumekay commented Jun 2, 2017 •

При обычной перепрошивке данные подключения не удалятся, они хранятся в другой части памяти.
Как я уже писал, есть предусмотренный в прошивке метод для сброса на заводские настройки,

Для сброса на заводские настройки нужно на время подсоединить GPIO 12 (D6) на землю,

Но этот метод не очень корректно организован, он работает, когда устройство полностью загружено. Здесь же оно останавливается в процессе загрузки.

Чтобы не ждать моего полноценного решения добавьте первой строкой в main.cpp в функцию setup() (строка 415) вызов factoryReset();

Прошейте, подождите минутку,
потом удалите эту строчку и прошейте снова.
Это сработает, он снова войдет в режим настройки и вы сможете указать верный token

Источник

Взаимодействие BME280, датчика температуры, влажности и давления, с Arduino

Добавьте в свой следующий проект на Arduino возможность отслеживать состояние окружающей среды с помощью датчика BME280. Эти датчики довольно просты в использовании, предварительно откалиброваны и не требуют дополнительных компонентов. Поэтому вы можете начать измерение относительной влажности, температуры, атмосферного давления и приблизительного значения высоты в самые кратчайшие сроки.

Взаимодействие BME280, датчика температуры, влажности и давления, с Arduino

BME280, датчик температуры, относительной влажности и атмосферного давления

В основе модуля находится цифровой датчик температуры, влажности и давления нового поколения производства Bosch – BME280. Он является преемником таких датчиков, как BMP180, BMP085 или BMP183.

Читайте также:  как узнать подключенные платные услуги на мотиве и как отключить

Рисунок 1 – Чип BME280 на модуле

Измерения давления настолько точны, что вы даже можете использовать его в качестве альтиметра (высотомера) с точностью ±1 метр.

Рисунок 2 – Диапазоны измерений датчика BME280

Требования к питанию

Модуль поставляется с встроенным стабилизатором напряжения 3,3 В LM6206 и преобразователем уровней напряжения на шине I2C, поэтому вы можете без проблем использовать его с микроконтроллером, работающим с логическими уровнями 3,3 В или 5 В, таким как Arduino.

Рисунок 3 – Модуль BME280. Преобразователь уровней на шине I2C и стабилизатор напряжения 3,3 В

Во время измерений BME280 потребляет менее 1 мА и только 5 мкА в режиме ожидания. Такое низкое энергопотребление позволяет использовать его в устройствах с батарейным питанием, таких как телефоны, модули GPS или часы.

Интерфейс I2C

Модуль использует простой двухпроводной интерфейс I2C, который можно легко подключить к любому микроконтроллеру.

Адрес I2C по умолчанию для модуля BME280 равен 0x76HEX и может быть легко изменен на 0x77HEX с помощью перемычки из припоя, устанавливаемой между площадками рядом с микросхемой.

Рисунок 4 – Модуль BME280. Площадки для напайки перемычки для выбора адреса I2C

Процедура изменения адреса I2C

Распиновка датчика BME280

Для связи с внешним миром у модуля BME280 есть только 4 контакта. Их назначение показано на рисунке ниже.

Рисунок 6 – Распиновка BME280, датчика атмосферного давления, температуры и влажности

VIN – вывод для подключения источника питания для модуля, напряжение питания может находиться в диапазоне от 3,3 до 5 В.

GND подключается к выводу земля на Arduino

SCL – это вывод синхронизации для интерфейса I2C.

SDA – вывод данных для интерфейса I2C.

Подключение модуля BME280 к Arduino UNO

Давайте подключим модуль BME280 к Arduino.

Подключение довольно простое. Начните с соединения выводов GND на модуле и на плате Arduino, затем подключите вывод VIN к выводу 5V на Arduino.

Теперь остаются выводы, которые используются для связи I2C. Обратите внимание, что у разных плат Arduino для I2C используются разные выводы. На платах Arduino с разводкой R3 SDA (линия передачи данных) и SCL (линия синхронизации) находятся на разъеме выводов рядом с выводом AREF. Они также известны как A5 (SCL) и A4 (SDA).

Если у вас Arduino Mega, выводы будут отличаться! Вам необходимо использовать цифровые выводы 21 (SCL) и 20 (SDA). В таблице ниже приведены выводы, использующиеся для I2C на разных платах Arduino.

Выводы шины I2C на разных платах Arduino

SCL SDA
Arduino Uno A5 A4
Arduino Nano A5 A4
Arduino Mega 21 20
Leonardo/Micro 3 2

Следующая диаграмма показывает, как всё подключить.

Рисунок 7 – Схема подключения модуля BME280 к Arduino

Установка необходимых библиотек

Для связи с модулем BME280 необходимо выполнить кучу работы. К счастью, чтобы скрыть все сложности, была написана библиотека Adafruit BME280, чтобы мы могли выполнять простые команды для считывания данных о температуре, относительной влажности и атмосферном давлении.

Чтобы установить библиотеку, перейдите в раздел «Скетч»→ «Подключить библиотеку» → «Управлять библиотеками…». Подождите, пока менеджер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Рисунок 8 – Установка библиотеки Arduino – выбор управления библиотеками в Arduino IDE

Отфильтруйте результаты поиска, набрав «bme280». Там должно быть пара записей. Ищите библиотеку Adafruit BME280 by Adafruit. Нажмите на эту запись, а затем выберите «Установка».

Рисунок 9 – Установка библиотеки BME280 в Arduino IDE

Библиотека датчиков BME280 использует Adafruit Sensor support backend, поэтому при установке Arduino IDE предложит установить и эти библиотеки. Соглашайтесь (Install all).

Рисунок 10 – Установка Adafruit Unified Sensor

Код Arduino, считывание показаний температуры, относительной влажности воздуха и атмосферного давления

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

Вот как выглядит вывод в мониторе последовательного порта.

Рисунок 11 – Вывод показаний датчика BME280. Температура, относительная влажность, атмосферное давление и высота над уровнем моря

Объяснение кода

Скетч начинается с подключения четырех библиотек, а именно, Wire.h, SPI.h, Adafruit_Sensor.h и Adafruit_BME280.h.

Функция begin(I2C_ADDR) в качестве параметра принимает адрес модуля на шине I2C. Если ваш модуль имеет другой адрес I2C или вы изменили его, вам нужно указать его правильно. Эта функция инициализирует интерфейс I2C с заданным адресом и проверяет правильность идентификатора чипа. Затем она программно перезапускает микросхему и ждет окончания калибровки датчика после запуска.

В зацикленном фрагменте кода для считывания значений температуры, относительной влажности и атмосферного давления из модуля BME280 мы используем следующие функции:

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.

У меня такого не наблюдается. Показания на 3 и 5 Вольтах не различаются. А вот сам датчик врёт на +2 градуса по отношению к датчику ds18b20 и лабораторному ртутному термометру.

Температура и влажность меняются. При повышении напряжения растет температура и падает влажность.
Давление не скачет.

Остальные показания различаются?

при подключении модуля к разному питанию 3.3 или 5В на ардуино, он выдает разную температуру.

Источник

Метеостанция (Arduino pro mini, BME280, LCD1602)

Что можно вывести на двухстрочный экран, кроме «Hello world!»? Почему бы не отображать температуру влажность и давление?

Датчики предлагаемые как учебное пособие к arduino (DHT11, DHT22) показывают температуру и влажность воздуха. В учебных целях (для университета) понадобилось наблюдать так же и за давлением. Естественно на кафедре есть барометр, но почему бы не собрать свой? К тому же можно в дальнейшем накапливать показания в автоматическом режиме, и это неплохой опыт в изучении arduino.

Так или иначе из Китая были заказаны комплектующие и собрано данное устройство.

Необходимые комплектующие

Arduino Pro Mini
I2C для LCD (можно было заказать сразу в сборе, но так вышло чуть чуть дешевле)
LCD 1602
BME280

Для отправки скетча в arduino был использован USB-UART. Так же можно было использовать Raspberry Pi или компьютер с COM портом.

Схема подключения для прошивки и код программы

Из Китая USB-UART пришёл с набором проводков:

Их вполне хватило. Перемычку оставил на 3.3 вольта, несмотря на то что моя версия arduino питается от 5 вольт.

UART — Arduino
5v — VCC
TXD — RXD
RXD — TXD
GND — GND
CTS — DTR (опционально, у меня не работал, возможно потому что напряжение сигналов осталось 3.3В)

Если не подключать DTR, то после отправки прошивки arduino нужно перезагрузить встроенной кнопкой, начнётся активный обмен данными в обе стороны (о чём свидетельствуют светодиоды на USB-UART), после успешной загрузки прошивки, она сама перезагрузится.

Необходимые сторонние библиотеки:

Непосредственно код, с комментариями из примеров (на случай, если кому то понадобится что то менять).

Адрес датчика можно угадать, их всего два.

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

И адрес будет 0x3F т.к. A0 — A2 разомкнуты:

Светодиод который обведён в овал лучше можно выпаять.

Резистор выбирался как половина от сопротивления датчика (между VVC и GND), чтобы падения напряжения на нём было 1.7 вольта. Так же схему можно запитать от входа RAW, другим напряжением (например от кроны).

На фотографии видно, что для компактности можно взять питание на датчик и дисплей с другого пина. Так же там видно ответвление оранжево-жёлтой пары проводов, на них висит резистор на 100 Ом, для уменьшения яркости подсветки (можно оставить джампер, но будет резать глаза).

В моём случае всё питается от старого компьютерного блока питания. Можно питать от USB. Все комплектующие были приклеены оказавшемся под рукой клеем «Момент».

На рабочем месте появился 1602 прикрученный к столу, который показывает давление, влажность, температуру. Arduino можно перепрошить не снимая (возможно станет бегущей строкой).

Источник

Читайте также:  как узнать местоположение по номеру телефона бесплатно без согласия абонента теле2
Советы мастера