Arduino——BMP280氣壓傳感器

實驗二十七:GY-BMP280-3.3 高精度大氣壓強傳感器模塊

博世Sensortec - BMP280 是一種專爲移動應用設計的絕對氣壓傳感器。該傳感器模塊採用極其緊湊的封裝。得益於小尺寸和低功耗特性,這種器件可用在如移動電話、GPS 模塊或手錶等電池供電型設備中。與上代產品相同,BMP180、BMP280 也基於Bosch 成熟的壓阻式壓力傳感器技術,具有高確度和線性度,以及長期穩定性和很高的 EMC 穩健性。多種設備工作選擇帶來了最高靈活性,可以在功耗、分辨率和濾波性能方面對設備進行優化。

BMP280是博世最新推出的數字氣壓傳感器,具有卓越的性能和低廉的價格,相對精度爲±0.12 hPa(相當於±1米),傳感器功耗僅有2.7μA。BMP280具有業界最小封裝,採用極其緊湊的8引腳金屬蓋LGA封裝,佔位面積僅爲2.0×2.5mm2,封裝高度爲0.95 mm。包括有壓力和溫度測量功能。該氣壓傳感器支持SPI和IIC通信接口,相比上一代的BMP180,精度已有相當大的提升,非常適合應用於低成本的多旋翼飛行器飛行控制器上,價格僅有目前流行的MS5611的四分之一。傳感器模塊它的小尺寸和2.74μA@ 1Hz的低功耗允許在電池驅動的設備中實現。門內導航,醫療保健以及GPS改進的新興應用需要高相對精度和低TCO。
————————————————
BMP280非常適用於地板水平檢測等應用,因爲傳感器具有±0.12 hPa的優異相對精度,相當於±1m高度差,偏移溫度係數(TCO)僅爲1.5 Pa / K(相當於12.6釐米/ K)。作爲廣泛實施的BMP180的繼承者,BMP280最初在2011年開始大量使用手機中的氣壓測量,BMP280在所有需要精確壓力測量的應用中實現了高性能。同時,BMP280具有更高的應用靈活性,新的濾波器模式和SPI接口,而且相對於BMP180,佔位面積縮小了63%。
————————————————

Adafruit_BMP280_Library,用於BMP280傳感器的Arduino庫

下載地址
https://github.com/adafruit/Adafruit_BME280_Library
https://github.com/mahfuz195/BMP280-Arduino-Library
https://github.com/adafruit/Adafruit_BMP280_Library/releases(最新版本1.0.3)
————————————————

還要下載這個庫–Adafruit_Sensor

https://github.com/adafruit/Adafruit_Sensor

需要的材料和硬件連接

注意的是這塊板子的額定電壓是3.3v,且同時支持兩種連接方式: I²C 和 SPI ,下面的連接方式是SPI的連接方式和程序。
————————————————

GY-BMP 280 Arduino UNO
VCC 3.3v
GND gnd
SCL 13
SDA 11
CSB 10
SDO 12

備註:不要使用5V,可能會損壞BMP280傳感器
————————————————

/*

【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)

實驗二十七:GY-BMP280-3.3 高精度大氣壓強傳感器模塊(高度與溫度計)

*/

 

#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 bmp(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);  

 

void setup() {

  Serial.begin(9600);

  Serial.println(F("BMP280 測試"));

  

  if (!bmp.begin()) {  

    Serial.println(F("找不到對應的傳感器"));

    while (1);

  }

}

 

void loop() {

    Serial.print(F("溫度 = "));

    Serial.print(bmp.readTemperature());

    Serial.println(" *C");

    

    Serial.print(F("氣壓 = "));

    Serial.print(bmp.readPressure());

    Serial.println(" Pa");

 

    Serial.print(F("海拔 = "));

    Serial.print(bmp.readAltitude(1013.25));

    Serial.println(" m");

    

    Serial.println();

    delay(2000);

}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章