37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒於本人手頭積累了一些傳感器和模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里准備逐一動手試試做實驗,不管成功與否,都會記錄下來---小小的進步或是搞不定的問題,希望能夠拋磚引玉。
【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
實驗二十七:GY-BMP280-3.3 高精度大氣壓強傳感器模塊
BMP280
博世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芯片結構圖
BMP280非常適用於地板水平檢測等應用,因為傳感器具有±0.12 hPa的優異相對精度,相當於±1m高度差,偏移溫度系數(TCO)僅為1.5 Pa / K(相當於12.6厘米/ K)。作為廣泛實施的BMP180的繼承者,BMP280最初在2011年開始大量使用手機中的氣壓測量,BMP280在所有需要精確壓力測量的應用中實現了高性能。同時,BMP280具有更高的應用靈活性,新的濾波器模式和SPI接口,而且相對於BMP180,占位面積縮小了63%。
應用范圍
1、GPS 導航增強(例如改進初次定位時間、航位推算、斜率檢測)
2、室內導航(室內檢測、電梯檢測)
3、戶外導航,休閑和運動應用
4、天氣預報
5、健康保健應用(如肺活量測定)
6、垂直速度指示(如上升/下沉速度)
GY-BMP280-3.3 高精度大氣壓強傳感器模塊
是個低功耗數字復合傳感器,它可以測量環境溫度和大氣壓強。氣壓敏感元件是一個低噪高精度高分辨率絕對大氣壓力壓電式感應元件;溫度感測元件具有低噪高分辨率特性,溫度值可以對氣壓進行溫度補償自校正。通過配置采樣率寄存器,可以設置敏感元件的采樣率。非常適合空間有限的移動設備,如智能是手機、平板電腦、智能手表和可穿戴設備、天氣預報、垂直速度指示、飛控設備、室內室外導航、智能家居裝置。
模塊電原理圖
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的連接方式和程序。
左邊的是BMP280的6個接口,右邊是Arduino的6個接口,兩者用杜邦線連接即可。將USB線纜連接到電腦,選擇好合適的開發板以及端口,上傳並打開串口監視器,查看數值變化。
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); }
I²C 的連接方式和程序