Bme280 высота над уровнем моря

Мини-метеостанция на ESP32 (Arduino) и BME280 с выводом данных на дисплей DWIN.

В этом проекте сделаем мини-метеостанцию используя ESP32 (Arduino) и датчик барометрического давления BME280, который может предоставлять информацию об атмосферном давлении, температуре и влажности в режиме реального времени. С помощью BME280 также можно измерить высоту над уровнем моря. Полученные значения выведем на дисплей DWIN.

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

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

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

Виды датчиков BME280 (BMP280).

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

Как узнать, какое рабочее напряжение модуля? Если на плате есть стабилизатор, его можно запитать от источника напряжением 5В. Если на плате нет стабилизатора, то подключить можно только к источнику питания 3В.

Датчик BME280 имеет несколько разновидностей и в зависимости от модуля может подключаться к I2C и SPI

На обратной стороне платы не просто так написано BME280/BMP280 – BMP является урезанной версией BME

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

Датчики я покупал себе с сопутствующим товаром на будущее и информацию предварительно не почитал. Я повёлся на низкую стоимость и в результате стал счастливым обладателем BMP280. Кстати, покупал 2 модуля, и галочки нет ни на одном. Это, конечно, не критично, но есть некоторые сложности с тем, чтобы заставить датчик работать. Помогла библиотека Гайвера.

Распиновка модуля BME280 без стабилизатора на борту.

Интерфейс BME280 I2C использует следующие контакты:

Интерфейс BME280 I2C использует следующие контакты:

  • VCC: от 1,71 В до 3,6 В
  • GND: подключение к GND
  • SCL: последовательные часы (SCK)
  • SDA: последовательные данные (SDI)
  • CSB: должен быть подключен на VDDIO, чтобы выбрать интерфейс I2C.
  • SDO: контакт определяет I2C адрес устройства. Если SDO подключается к GND (0), то адрес равен 0x76. Если он подключается к VDDIO(1), то адрес равен 0x77. В этом модуле мы подключили его к VDDIO, поэтому адрес должен быть 0x77.

Интерфейс I2C.

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

На рынке доступен ещё один модуль, который имеет только 4 контакта. Чтобы изменить его адрес I2C, найдите перемычку для пайки рядом с микросхемой.

Читайте также:  На запад через 5 морей

На рынке доступен ещё один модуль, который имеет только 4 контакта. Чтобы изменить его адрес I2C

Благодаря данной перемычке можно изменить адрес I2C.

Благодаря данной перемычке можно изменить адрес I2C.

По умолчанию средний медный контакт площадки подключён к левой контактной площадке. Поэтому вам нужно поцарапать соединение между средней и левой медными контактными площадками, чтобы отсоединить их. Затем вы можете добавить каплю припоя между средней и правой медными площадками, чтобы соединить их. Это позволит вам установить адрес I2C 0x77.

При необходимости мы можем изменить адрес датчика и подключить 2 модуля к одному микроконтроллеру.

Схема подключения дисплея DWIN, модуля BME280 к ESP32.

Датчик барометрического давления BME280 взаимодействует с ESP32 для создания простой мини-метеостанции.

Схема подключения дисплея DWIN, модуля BME280 к ESP32.

Подключите контакты SDA SCL BME280 к соответствующим контактам ESP32, то есть к контактам GPIO22 и GPIO21 соответственно. Дисплей DWIN подключаем ко второму UART порту ESP32, то есть к контактам GPIO16 и GPIO17.

Библиотека для работы с BME280.

Самая распространённая библиотека для работы с BME280 является Adafruit BME280 (для работы также нужно установить Adafruit Sensor). Но она не работает с BMP280, поэтому пришлось искать альтернативное решение.

GyverBME280 – библиотека более удобная и лёгкая. Также поддерживает датчики BMP280. То, что мне требовалось для данного проекта.

Библиотека для работы с BME280.

Библиотеку можно установить через менеджер библиотек или скачать с официального сайта разработчика. Также прикреплю библиотеку внизу статьи в разделе «Файлы для скачивания».

Код метеостанции на DWIN, модуле BME280 и ESP32.

В коде менять ничего не нужно. Максимум посмотреть, чтобы был выключен DEBUG. В противном случае вместо влажности воздуха у вас будет выводиться информация со счётчика. Счётчик я добавил для того, чтобы можно было отследить, что всё работает и информация обновляется на дисплее. А также в связи с тем, что у меня датчик BMP280 и значение влажности выводит 0.

Код метеостанции на DWIN, модуле BME280 и ESP32.

Остальные данные меняйте по мере необходимости. Например, адрес устройства по умолчанию 0x76. Возможно, вам нужно будет поменять на 0x77.

Например, адрес устройства по умолчанию 0x76. Возможно, вам нужно будет поменять на 0x77.

Прошивка для дисплея DWIN.

Для данного проекта подайте дисплей без сенсора. Благо, практически для всех моделей дисплеев DWIN доступна версия без сенсора.

Для данного проекта подайте дисплей без сенсора. Благо, практически для всех моделей дисплеев DWIN доступна версия без сенсора.

Для вывода информации будем использовать всего один инструмент — «Data variables». С данным инструментом мы уже знакомы из проекта «Панель управления подсветкой на дисплее DWIN».

Для вывода информации будем использовать всего один инструмент - «Data variables».

Но его мы использовали только для вывода целочисленных значений. Сегодня в проекте будем выводить дробные значения.

Для вывода информации будем использовать всего один инструмент - «Data variables».

Для этого данные для вывода нужно настроить следующим образом.

Для этого данные для вывода нужно настроить следующим образом.

Как видим, настройки изменились не сильно. Аналогичным образом выводим все остальные параметры.

Мини-метеостанция на Arduino и BME280 с выводом данных на дисплей DWIN.

И если у вас нет в наличии ESP32, можно сделать проект, используя классическую отладочную плату Arduino UNO или Arduino NANO.

Мини-метеостанция на Arduino и BME280 с выводом данных на дисплей DWIN.

Код для Arduino NANO (UNO).

Внизу статьи в разделе «файлы для скачивания» вы можете скачать код для Arduino NANO (UNO). Обратите внимание, что данный код я не тестировал на железе. Если у вас будут вопросы, пишите в комментариях.

Код для Arduino NANO (UNO).

Схема подключения дисплея DWIN и модуля BME280 к Arduino NANO.

Схема подключения дисплея DWIN и модуля BME280 к Arduino NANO.

Подключаем электронику дисплея DWIN, модуля BME280 к Arduino NANO по схеме.

Читайте также:  Отбойное течение моря 5 букв

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

Приобрести дисплей DWIN можно в официальном магазине DWIN Technology на AliExpress.

Понравился проект Мини-метеостанция на ESP32 (Arduino) и BME280 с выводом данных на дисплей DWIN? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте.

Спасибо за внимание!

Технологии начинаются с простого!

Источник

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

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

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

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

В партии 003 у нас рабочий BMP280. Для влажности используется другой датчик.

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

Подключение

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

Библиотеки

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

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

Примеры

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

#include void setup() < Serial.begin(9600); Serial.println("Start scan"); >void loop() < for (uint8_t i = 1; i < 128; i++) < Wire.beginTransmission(i); if (!Wire.endTransmission()) Serial.println(i, HEX); >Serial.println(". "); delay(5000); >
  • Если вывелось только Start scan и ничего больше – датчик бракованный и не будет работать
  • Если это рабочий BMP/BME – получим вывод такого вида:

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

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

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

#include GyverBME280 bme; void setup() < Serial.begin(9600); Serial.println("Start"); // запуск датчика и проверка на работоспособность if (!bme.begin(0x76)) Serial.println("Error!"); >void loop() < // температура Serial.print("Temperature: "); Serial.println(bme.readTemperature()); // влажность Serial.print("Humidity: "); Serial.println(bme.readHumidity()); // давление Serial.print("Pressure: "); Serial.println(bme.readPressure()); Serial.println(); delay(1000); >
  • Если выведется только слово Start – датчик бракованный и из-за этого программа зависла
  • Если выведется Error! – датчик бракованный или адрес не соответствует, вернись к предыдущему пункту
  • Корректно выводятся все три параметра

Start
Temperature: 24.78
Humidity: 41.69
Pressure: 99701.28

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

Start
Temperature: 24.78
Humidity: 0
Pressure: 99701.28

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

Читайте также:  Плотность соли мертвого моря

Источник

Барометр, гигрометр и термометр BME280

Датчик BME280 фирмы BOSCH совмещает в себе сразу три устройства:

  • барометр, измеряющий атмосферное давление;
  • гигрометр — он же датчик влажности;
  • термометр — датчик температуры.

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

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

На этом уроке мы будем работать с модулем BMP280 ROC, разработанной в лаборатории RobotClass.

Барометр, термометр и гигрометр BME280 RobotClass ROC

Характеристики модуля:

  • напряжение питания: от 3,3 до 5 В;
  • диапазон измерения давления: от 300 гПа до 1100 гПа (от 9000 м до -500 м);
  • точность измерения давления: 1 гПа;
  • диапазон измерения влажности: от 0 до 100%;
  • точность измерения влажности: 3%;
  • частота измерения влажности: 1 Гц;
  • диапазон измерения температуры: от 0 до 65;
  • точность измерения температуры: 0,5.

Новое поколение датчиков BOSCH обладают низким энергопотреблением. Например, для сбора показаний влажности и температуры раз в секунду потребуется всего 1,8 мкА. Если нужно анализировать еще и давление, суммарный ток составит 3,6 мкА. В режиме сна датчик потребляет и вовсе 0,1 мкА.

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

На плате есть семь контактов для подключения:

  • VIN — питание, от 4,5 до 5,5 В;
  • 3V3 — питание 3,3 В;
  • G — земля GND;
  • MO/SDA — контакт MOSI для SPI, либо контакт SDA для шины I2C;
  • SCK/SCL — контакт SCK для SPI, либо контакт SCL для шины I2C;
  • MI/AD — контакт MISO для SPI, либо контакт для выбора адреса шины I2C;
  • CS — контакт Chip Select для шины SPI.

Список необходимых компонентов

Для выполнения простого примера с датчиком BME280 от RobotClass, кроме самого модуля датчика, потребуется Ардуино-совместимый контроллер и немного проводов вилка-розетка. Если вам не хватает что-то из этого, можно добавить эти компоненты в корзину прямо здесь и затем оформить заказ в нашем интернет-магазине.

Источник

Оцените статью