Bme280 arduino скетч

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

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

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

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

► Напряжение питания: 3.3 В – 5 В
► Рабочий ток: 1 мA
► Диапазон измерения давления: 300 гПа – 1100 гПа (точность ±1.0 гПа)
► Диапазон измерения температуры: -40 °C до +85 °C (точность ±0.5 °C)
►Диапазон измерения влажности: 20 % до 80 % (точность ±3 %)
► Интерфейс: I2C
► Габариты: 12 мм х 10 мм

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

Рассмотрим модуль поближе, в правой части расположен датчик 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.

Источник

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

Описание

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

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

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

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

В партии 003 у нас рабочий 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, т.е. без влажности.

Источник

Все в одном, BME280(BMP280). Датчик температуры, влажности и давления.

Очередная забавная штучка с АлиЭкспрес. Встречайте мега комбайн от BOSCH, цифровой датчик температуры,влажности,давления BME280 . По мнению некоторых один из самых точных датчиков по недорогой цене. Имеет SPI (поддерживает 3-4-провода SPI) и I2C интерфейс. Есть у него брат близнец BMP280 , единственное отличие в нем нету датчика влажности. Но давайте по порядку и подробней.

Характеристики :

  • Диапазон измерения давления: 300 – 1100 hPa (±1.0 hPa, 0 . . . 65 °C )
  • Диапазон измерения температуры: от -40 до 85 °C ( ±0.5 °C)
  • Диапазон измерения влажности: 0 — 100 % (20…80 %, 25 °C, ± 3%) в BMP280 отсутствует!
  • Напряжение питания 3.3 В. Но в готовом модуле из Китая уже стоит стабилизатор и согласование уровней логики.
  • Пиковое потребление 714 µA, в режиме сна 0.3 µA
  • Время старта модуля: 2 ms

Датчик имеет три режима работы : Sleep mode, Forced mode, Normal mode .

  • SLEEP – режим сна,
  • FORCED – режим аналогичен BMP085 и BMP180. То есть, дали команду на измерение, подождали, считали значения, датчик перешел в спящий режим.
  • NORMAL – этот режим наиболее интересен и загоняет датчик в циклическую работу. То есть, он самостоятельно через определенное время, которое можно задать, выходит из режима сна и выполняет измерения, сохраняет данные в регистры памяти и вновь засыпает на указанное время.

Более подробно все это написано в Datasheet(BMP280) и Datasheet(BME280).

Подключение, библиотека, код.

Мне совершенно не хочется разбираться во всех тонкостях работы с этим датчиком. По этому скачаем уже готовую библиотеку ( Adafruit_BMP280_Library ) GitHub или с нашего сайта и BME280 c GitHub , наш сайта.

Подключение к шине I2C (SCL и SDA контакты).

Схема подключения достаточно проста:

  • VIN к контакту Arduino 3.3V или 5V
  • GND к контакту Arduino GND
  • SCK к контакту Arduino Nano SCL (A5)
  • SDA к контакту Arduino Nano SDA (A4)

Тестовый скетч для BMP280 будет выглядеть так:

Для BME280 тестовый скетч будет таким :

Источник

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

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

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

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

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

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

Этот прецизионный датчик может измерять относительную влажность воздуха от 0 до 100% с точностью ±3%, атмосферное давление от 300 гПа до 1100 гПа с абсолютной точностью ± 1 гПа, и температуру от -40°C до 85°C с точностью ±1,0°C.

Измерения давления настолько точны, что вы даже можете использовать его в качестве альтиметра (высотомера) с точностью ±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

  • Найдите перемычку из припоя рядом с чипом. По умолчанию средняя медная площадка подключена к левой площадке.
  • Перережьте ножом соединение между средней и левой медными площадками.
  • Добавьте каплю припоя между средней и правой медными площадками, чтобы установить между ними электрическое соединение. Это сменит адрес I2C на 0x77HEX.

Рисунок 5 – Установка перемычки для выбора адреса I2C датчика BME280

Распиновка датчика 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.

Затем мы определяем переменную SEALEVELPRESSURE_HPA , необходимую для вычисления высоты, и создаем объект библиотеки Adafruit_BME280 , чтобы мы могли получить доступ к функциям, связанным с ней.

В функции setup() мы инициализируем последовательную связь с компьютером и вызываем функцию begin() .

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

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

  • функция readTemperature() возвращает от датчика температуру;
  • функция readPressure() возвращает от датчика атмосферное давление;
  • функция readAltitude(SEALEVELPRESSURE_HPA) вычисляет высоту (в метрах) исходя из текущего атмосферного давления (в гПа) и давления на уровне моря (в гПа);
  • функция readHumidity() возвращает от датчика относительную влажность воздуха.

Источник

Adblock
detector