Датчик атмосферного давления GY-BMP280-3.3 является улучшенной версией датчика BMP180 и отличается от него меньшими размерами, пониженным энергопотреблением, высокой точностью работы и наличием точной заводской калибровки и двумя последовательными интерфейсами: I2C и SPI.
В датчике предусмотрена фильтрация результатов измерений с настройкой таких параметров фильтрации:
Модуль может быть использован:
- в навигационных приборах;
- высотомер;
- в метеостанциях;
- вариометр — измерение скорости по вертикали;
- для квадрокоптеров.
От предыдущих моделей (BMP085 и BMP180) датчик отличается тремя режимами работы:
- SLEEP – режим пониженного энергопотребления
- FORCED – режим, аналогичный, режиму работы датчиков BMP085 и BMP180. По коменде контроллера датчик выходит из режима сна, производит измерения, выдает результаты измерения контроллеру и переходит в режим пониженного энергопотребления
- NORMAL – уникальный для этого датчика режим. Датчик самостоятельно просыпается, производит измерения давления и температуры и засыпает. Все временные параметры этого режима программируются независимо. Считывать данные в этом режиме можно в любое время.
В датчике предусмотрена фильтрация результатов измерений с настройкой таких параметров фильтрации:
- OVERSAMPLING для температуры (16,17,18,19,20 бит)
- OVERSAMPLING для давления (16,17,18,19,20 бит)
- TSB – время между между измерениями (0.5,62.5,125,250,500,1000,2000,4000 мс)
- FILTER_COEFFICIENT – коэффициент фильтрации
Подключение по I2C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#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); } |
Подключение по SPI
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#include <Wire.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include <Adafruit_BMP280.h> #define BMP_SCK 13 #define BMP_MISO 12 #define BMP_MOSI 11 #define BMP_CS 10 //Adafruit_BMP280 bme; // I2C Adafruit_BMP280 bme(BMP_CS); // hardware SPI //Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO, BMP_SCK); void setup() { Serial.begin(9600); Serial.println(F("BMP280 test")); if (!bme.begin()) { Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); while (1); } } void loop() { Serial.print(F("Temperature = ")); Serial.print(bme.readTemperature()); Serial.println(" *C"); Serial.print(F("Pressure = ")); Serial.print(bme.readPressure()); Serial.println(" Pa"); Serial.print(F("Approx altitude = ")); Serial.print(bme.readAltitude(1013.25)); // this should be adjusted to your local forcase Serial.println(" m"); Serial.println(); delay(2000); } |
Скачать библиотеку Adafruit_Sensor
Скачать библиотеку Adafruit_BMP280