BMP280 — это цифровой датчик от Bosch Sensortec позволяющий получить текущие значения атмосферного давления и температуры окружающей среды. Этот датчик специально разработан для мобильных приложений, где малый размер и низкое энергопотребление очень важны. В данной статьи увидим, как подключить датчик атмосферного давления BMP280 к Arduino по I2C и SPI, какие библиотеки установить и приведём несколько примеров скетчей.
BMP280 основан на технологии пьезорезистивного датчика давления, обладающей высокой точностью, линейностью и стабильностью с устойчивостью к электромагнитной совместимости.
BMP280 может использоваться в различных приложениях, таких как улучшение систем навигации GPS, внутренняя навигация, таких как обнаружение пола и обнаружение лифта, наружная навигация, спортивные приложения, прогноз погоды и т. д. Еще одним применением данного модуля является определений высоты, которая зависит от давления и рассчитывается по международной барометрической формуле.
Установка библиотек
Для работы с датчиком BMP280 существуют различные библиотеки, упрощающие работу. К ним относятся BMP280_DEV, Adafruit_BMP280_Library. Для датчика BMP280 будет используется библиотека от Adafruit.
Adafruit Unified Sensor Driver — общий драйвер
- В Arduino IDE открываем менеджер библиотек: Скетч->Подключить библиотеку->Управлять библиотеками…
- В строке поиска вводим «Adafruit Unified Sensor», выбираем последнюю версию и кликаем Установить
- Библиотека установлена (INSTALLED)
Библиотека Arduino для датчиков BMP280
Чтобы начать считывать данные с датчиков, вам необходимо установить библиотеку Adafruit_BMP280 (код в репозитории github). Она доступна в менеджере библиотек Arduino, поэтому рекомендуется его использовать.
- В Arduino IDE открываем менеджер библиотек: Скетч->Подключить библиотеку->Управлять библиотеками…
- В строке поиска вводим «Adafruit BMP280», выбираем библиотеку от Adafruit, но можете использовать любую.
- Выбираем последнюю версию и кликаем Установить
- Выбираем пример: Файл->Примеры->Adafruit BMP280 Library->bmp280test
- Компилируем этот пример. Если получаем ошибку
fatal error: Adafruit_Sensor.h: No such file or directory
, нужно установить Adafruit Unified Sensor (смотрите выше)...\Documents\Arduino\bmp280-i2c\bmp280-i2c.ino:1:30: fatal error: Adafruit_Sensor.h: No such file or directory #include <Adafruit_Sensor.h> ^ compilation terminated. exit status 1 Ошибка компиляции для платы Arduino Pro or Pro Mini.
Подключение BMP280 к Arduino по I2C/TWI
Так как датчик может работать по I2C и SPI, подключение можно реализовать двумя методами. При подключении по I2C нужно соединить контакты SDA и SCL.
Схема подключения BMP280 к Arduino
Для подключения понадобятся сам датчик BMP280, плата Ардуино, соединительные провода. Схема подключения показана на рисунке ниже.
Землю с Ардуино нужно соединить с землей на датчике, напряжение 3.3 В — на 3.3 В, SDA — к пину А4, SCL — к А5. Контакты А4 и А5 выбираются с учетом их поддержки интерфейса I2C.
Существуют несколько модулей с этим датчиком. Первый вариант — это модуль для работы в 3.3 В логике, данные модули будут подешевле; второй вариант — для работы в 5.0 В логике, на нём присутствуют: линейный стабилизатор напряжения на 3.3 В и преобразователи уровней 3.3/5.0 В на линиях SCK/SCL и SDI(MOSI)/SDA. Первый подойдёт для ардуин работающих от 3.3 В и Raspberry Pi / Orange Pi / Banana Pi и т.д., а второй — для обычных ардуин на 5.0 В.
Подключение BMP280 с встроенными стабилизатором напряжения на 3.3 В и преобразователями уровней 3.3/5.0 В на линиях SCK/SCL и SDI(MOSI)/SDA к Arduino.
Arduino Mega | Arduino Uno/Nano/Pro Mini | BMP280 модуль | Цвет проводов на фото |
---|---|---|---|
GND | GND | GND | Черный |
5V | 5V | Vin | Красный |
20 (SDA) | A4 | SDA/SDI | Зелёный |
21 (SCL) | A5 | SCL/SCK | Жёлтый |
Подключение BMP280 без встроенного стабилизатора напряжения на 3.3 В к Arduino. В данном случае нужно использовать внешний преобразователь уровней на линиях SCK/SCL и SDI(MOSI)/SDA.
Arduino Mega | Arduino Uno/Nano/Pro Mini | BMP280 модуль | Цвет проводов на фото |
---|---|---|---|
GND | GND | GND | Черный |
3.3V | 3.3V | VCC/3.3V | Красный |
20 (SDA) | A4 | SDA/SDI | Зелёный |
21 (SCL) | A5 | SCL/SCK | Жёлтый |
Примеры скетча
После запуска вы можете инициализировать датчик с помощью:
if (!bmp.begin()) { Serial.println("Could not find a valid BMP280 sensor, check wiring!"); while (1); }
begin()
вернет True, если датчик был найден, и False, если нет. В случае с False, проверьте соединение датчика с платой Arduino!
Считать температуру и давление легко, просто вызовите функции:
bmp.readTemperature(); // Температура в градусах Цельсия. bmp.readPressure(); // Атмосферное давление в гПа
Копируйте и скомпилируйте нижеприведённый скетч в Arduino IDE.
#include <Adafruit_BMP280.h> Adafruit_BMP280 bmp280; void setup() { Serial.begin(9600); Serial.println(F("BMP280")); while (!bmp280.begin(BMP280_ADDRESS - 1)) { Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); delay(2000); } } void loop() { float temperature = bmp280.readTemperature(); float pressure = bmp280.readPressure(); float altitude = bmp280.readAltitude(1013.25); Serial.print(F("Temperature = ")); Serial.print(temperature); Serial.println(" *C"); Serial.print(F("Pressure = ")); Serial.print(pressure); Serial.println(" Pa"); Serial.print(F("Altitude = ")); Serial.print(altitude); Serial.println(" m"); Serial.println(); delay(2000); }
Результат
Температура рассчитывается в градусах Цельсия, вы можете преобразовать ее в градусы Фаренгейта, используя классическое уравнение F = C * 9/5 + 32.
Давление возвращается в единицах СИ Паскалей. 100 Паскалей = 1 гПа = 1 миллибар. Часто барометрическое давление сообщается в миллибарах или миллиметрах ртутного столба. Для дальнейшего использования 1 паскаль = 0,00750062 миллиметров ртутного столба или 1 миллиметр ртутного столба = 133,322 Паскаля. Таким образом, если вы возьмете значение паскаля, скажем, 100734 и разделите на 133,322, вы получите 755,57 миллиметров ртутного столба.
Также возможно превратить BMP280 в альтиметр. Если вы знаете давление на уровне моря, библиотека может рассчитать текущее атмосферное давление в высоту.
Подключение BMP280 к Arduino по SPI (аппаратный)
Поскольку это датчик с поддержкой SPI, можно использовать аппаратный или «программный» SPI для работы с датчиком.
Схема подключения BMP280 к Arduino
При подключении по SPI нужно соединить SCK/SCL с модуля к SCK (13й контакт на Ардуино), SDO с модуля к 12 выводу Ардуино, SDA/SDI — к 11 контакту, CSB (CS) — к любому цифровому пину, в данном случае к 10 контакту на Ардуино.
Подключение по SPI BMP280 с встроенными стабилизатором напряжения на 3.3 В и преобразователями уровней 3.3/5.0 В на линиях SCK и SDI(MOSI) к Arduino.
Arduino Mega | Arduino Uno/Nano/Pro Mini | BMP280 модуль | Цвет проводов на фото |
---|---|---|---|
GND | GND | GND | Черный |
5V | 5V | Vin | Красный |
52 (SCK) | 13 (SCK) | SCL/SCK | Зелёный |
50 (MISO) | 12 (MISO) | SDO | Оранжевый |
51 (MOSI) | 11 (MOSI) | SDA/SDI | Жёлтый |
48 (SS/CS) | 10 (SS/CS) | CS/CSB | Синий |
Примеры скетча
Вы можете использовать аппаратный SPI. С аппаратным SPI вы должны использовать аппаратные выводы SPI вашего Arduino — у каждого типа arduino разные выводы! В этом случае вы можете использовать любой контакт CS, но остальные три контакта фиксированы.
Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
Полный код примера:
#include <Adafruit_BMP280.h> #define BMP_CS 10 Adafruit_BMP280 bmp280SPI(BMP_CS); void setup() { Serial.begin(9600); Serial.println(F("bmp280SPI")); while (!bmp280SPI.begin()) { Serial.println(F("Could not find a valid bmp280SPI sensor, check wiring!")); delay(2000); } } void loop() { float temperature = bmp280SPI.readTemperature(); float pressure = bmp280SPI.readPressure(); float altitude = bmp280SPI.readAltitude(1013.25); Serial.print(F("Temperature = ")); Serial.print(temperature); Serial.println(" *C"); Serial.print(F("Pressure = ")); Serial.print(pressure); Serial.println(" Pa"); Serial.print(F("Altitude = ")); Serial.print(altitude); Serial.println(" m"); Serial.println(); delay(2000); }
Результат
Подключение BMP280 к Arduino по SPI (программный)
Под программным SPI понимается использование драйвера Arduino SPI для эмуляции аппаратного SPI с использованием «битовой синхронизации». Это позволяет подключить SPI-устройство к любым контактам Arduino.
Схема подключения BMP280 к Arduino
Подключение по SPI BMP280 с встроенными стабилизатором напряжения на 3.3 В и преобразователями уровней 3.3/5.0 В на линиях SCK и SDI(MOSI) к Arduino.
Arduino Mega | Arduino Uno/Nano/Pro Mini | BMP280 модуль | Цвет проводов на фото |
---|---|---|---|
GND | GND | GND | Черный |
5V | 5V | Vin | Красный |
52 (SCK) | 13 (SCK) | SCL/SCK | Зелёный |
50 (MISO) | 12 (MISO) | SDO | Оранжевый |
51 (MOSI) | 11 (MOSI) | SDA/SDI | Жёлтый |
48 (SS/CS) | 10 (SS/CS) | CS/CSB | Синий |
Примеры скетча
Вы можете создать объект BMP280 с любым программным SPI (где все четыре контакта могут быть любыми входами / выходами Arduino), используя:
Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK);
Полный код примера:
#include <Adafruit_BMP280.h> #define BMP_SCK 13 #define BMP_MISO 12 #define BMP_MOSI 11 #define BMP_CS 10 Adafruit_BMP280 bmp280SoftSPI(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK); void setup() { Serial.begin(9600); Serial.println(F("BMP280 SPI (программный)")); while (!bmp280SoftSPI.begin()) { Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); delay(2000); } } void loop() { float temperature = bmp280SoftSPI.readTemperature(); float pressure = bmp280SoftSPI.readPressure(); float altitude = bmp280SoftSPI.readAltitude(1013.25); Serial.print(F("Temperature = ")); Serial.print(temperature); Serial.println(" *C"); Serial.print(F("Pressure = ")); Serial.print(pressure); Serial.println(" Pa"); Serial.print(F("Altitude = ")); Serial.print(altitude); Serial.println(" m"); Serial.println(); delay(2000); }
Результат
Материалы
Arduino Test | Adafruit BMP280 Barometric Pressure + Temperature Sensor Breakout | Adafruit Learning System
BME280 — датчик давления, температуры и влажности
GitHub — adafruit/Adafruit_BMP280_Library: Arduino Library for BMP280 sensors
Барометр BMP180 и BMP280 (датчик атмосферного давления, высотомер) (Trema-модуль v2.0) — Описания, примеры, подключение к Arduino
Датчик Давления BMP-280 С Arduino Учебник
Такая херня. Копирую ,а у меня ничего не происходит.
То ли я тупой, то ли лыжи не едут
Все норм, запустилось с первого раза, самое интересное, adafuit test из примеров не хотел никак запускаться
как поменять показания давления в мм.рт.ст?
bata4d
There are many websites that are loved by slot players from year to year and there are also many fans of gambar rolet among all circles.
10 Facts About Address Collection That Make
You Feel Instantly A Good Mood 주소모름
What Freud Can Teach Us About Address Collection 링크 모음
Hi joke lovers!
Looking for basketball dad jokes? These are the MVPs of lame-but-lovable humor. basketball dad jokes No court required, just a love for laughs.
Make your jokes go pro with funny basketball puns that always keep the mood light—even in overtime.
Toda la información en el enlace — п»їhttps://ontheborder.com.au/the-history-of-tequila/#comment-2550
Wishing you lots of laughs!
¡Hola aficionados al casino
Una licencia de juego alternativa puede incluir requisitos de transparencia y auditorГa. https://casinossinlicenciaenespana.guru No todas son iguales, asГ que infГіrmate sobre su autoridad emisora. Algunos organismos son mГЎs estrictos que otros.
Los pagos en casinos sin licencia son mГЎs rГЎpidos y directos. Puedes recibir tus ganancias en minutos, sin pasar por largas verificaciones.
Consulta el enlace para más información — п»їhttps://casinossinlicenciaenespana.guru/
¡Por muchos instantes divertidos!
Kamagra Oral Jelly pas cher: kamagra gel — kamagra 100mg prix
https://kamagraprix.shop/# Kamagra pharmacie en ligne
Acheter Viagra Cialis sans ordonnance: Acheter Viagra Cialis sans ordonnance — Pharmacie en ligne Cialis sans ordonnance tadalmed.shop
Cialis sans ordonnance 24h: Achat Cialis en ligne fiable — cialis sans ordonnance tadalmed.shop
Acheter Cialis 20 mg pas cher: Tadalafil 20 mg prix sans ordonnance — Cialis sans ordonnance 24h tadalmed.shop
achat kamagra: Kamagra pharmacie en ligne — Kamagra Oral Jelly pas cher
?Hola participantes de casino
Si tienes pasaporte extranjero, puedes usarlo sin problemas en una casa de apuestas sin verificaciГіn. Algunas incluso lo aceptan como Гєnico documento vГЎlido para retiradas, sin que tengas que enviar mГЎs informaciГіn.
casas de apuestas sin verificaciГіn real — casas de apuestas sin dni
?Que tengas excelentes exitos!
vente de mГ©dicament en ligne: Livraison rapide — п»їpharmacie en ligne france pharmafst.com
¡Hola jugadores apasionados
La experiencia de usuario en estas plataformas suele ser mГЎs fluida, con menos interrupciones por verificaciones.
Sitios seguros de apuestas sin licencia — mejores casas de apuestas sin licencia
¡Por muchos brillantez cómica!
Achat mГ©dicament en ligne fiable: Pharmacies en ligne certifiees — п»їpharmacie en ligne france pharmafst.com
pharmacie en ligne pas cher: pharmacie en ligne pas cher — pharmacie en ligne sans ordonnance pharmafst.com
https://pharmafst.shop/# pharmacie en ligne avec ordonnance
pharmacie en ligne: Pharmacie en ligne France — pharmacie en ligne pharmafst.com
Achetez vos kamagra medicaments Kamagra pharmacie en ligne kamagra livraison 24h