0.00р.
Оформить заказВ этом небольшом уроке рассмотрим, как работать с датчиком давления, температуры и влажности BME280.
Модуль датчика BME280 считывает атмосферное давление, температуру и влажность. Поскольку давление меняется с высотой, с помощью этого датчика вы также можете оценить высоту.Датчик BME280 использует протокол связи I2C или SPI для обмена данными с микроконтроллером.
Модуль представлен несколькими конфигурациями, сегодня мы рассмотрим работу с модулем, который показан ниже.
Этот датчик взаимодействует с контроллером через протокол связи I2C, поэтому он очень прост в подключении. Четырехпиновая версия датчика подключается к плате по следующим пинам:
BME2080 | UNO |
Vin | 5V |
GND | GND |
SCL | A5 |
SDA | A4 |
Для сборки схемы понадобятся следующие компоненты:
Для корректной работы кода в первую очередь требуется установка библиотек Adafruit BME280 Library и Adafruit Unified Sensor. Их можно установить, использовав встроенный менеджер библиотек Arduino IDE по пути Инструменты / Управлять библиотеками. После открытия Менеджера достаточно скопировать названия библиотек в строку поиска и установить одноименные на свой компьютер.
После установки библиотеки BME280 и Adafruit_Sensor откройте среду Arduino и перейдите в раздел Файл / Примеры / Adafruit BME280 Library / bme280 test.
#include <wire.h> #include <spi.h> #include <adafruit_sensor.h> #include <adafruit_bme280.h> #define BME_SCK 13 #define BME_MISO 12 #define BME_MOSI 11 #define BME_CS 10 #define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME280 bme; // I2C //Adafruit_BME280 bme(BME_CS); // hardware SPI //Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI unsigned long delayTime; void setup() { Serial.begin(9600); Serial.println(F("BME280 test")); bool status; // настройки по умолчанию status = bme.begin(); if (!status) { Serial.println("Датчик BME280 не найден, проверьте подключение!"); while (1); } Serial.println("-- Тест --"); delayTime = 1000; Serial.println(); } void loop() { printValues(); delay(delayTime); } void printValues() { Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println(" *C"); // здесь содержится код для отображения температуры в Фаренгейтах // для его использования, нужно убрать кавычки /*Serial.print("Температура = "); Serial.print(1.8 * bme.readTemperature() + 32); Serial.println(" *F");*/ Serial.print("Давление = "); Serial.print(bme.readPressure() / 100.0F); Serial.println(" hPa"); Serial.print("Примерная высота = "); Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); Serial.println(" m"); Serial.print("Влажность = "); Serial.print(bme.readHumidity()); Serial.println(" %"); Serial.println(); }Дополнительный комментарий при загрузке кода может потребовать переменная #define SEALEVELPRESSURE_HPA (1013.25). Эта переменная сохраняет значение давления на уровне моря в гектопаскалях (эквивалентно милибару). Переменная используется для оценки высоты для данного давления путем сравнения ее с давлением на уровне моря. В этом примере используется значение по умолчанию, но для получения более точных результатов можно заменить это значение текущим давлением на уровне моря в вашей местности.