Датчик атмосферного давления 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









