本文最后更新于 546 天前,其中的信息可能已经有所发展或是发生改变。
引言
我用的模块是 GY-BM E/P 280,百度了一圈没有发现特别靠谱的教程,后来还是从 Adafruit 的网站上发现了它的 Arduino 库文件。它其实就是 BMP280 气压温度传感器的中国加工的板子,传感器用的是 BME280,最后的那个 E 其实就是英文环境“Environment”的首字母,它可以测量气压、温度和湿度。这样想想是不是以后就可以不用 NTC 热敏电阻和其他传感器来测环境参数了?(当然它们有它们的好处)
需要的材料和硬件连接
需要注意的是这块板子的额定电压是 3.3v,且同时支持两种连接方式: I²C 和 SPI ,其中 I²C 我并没有测试成功,所以下面的所有连接方式都是 SPI 的连接方式和程序。
左边的是 BMP280 的 6 个接口,右边是 Arduino 的 6 个接口,两者用杜邦线连接即可。将 USB 线缆连接到电脑,选择好合适的开发板以及端口,上传并打开串口监视器,查看数值变化。
GY-BM E/P 280 | Arduino UNO/nano/mega/leonardo etc |
---|---|
VCC | 3.3v |
GND | gnd |
SCL | 13 |
SDA | 11 |
CSB | 10 |
SDO | 12 |
测试程序
- 原始的库文件以及示例程序:adafruit/Adafruit_BMP280_Library https://github.com/adafruit/Adafruit_BMP280_Library 需要注意的是: 将 Adafruit_BMP280.h 文件中的 Line 37 改成 #define BMP280_ADDRESS (0x76)
- 改装过的
/*
需要 Adafruit_Sensor.h & Adafruit_BMP280.h
VCC---3.3v
GND---gnd
SCL---13
SDA---11
CSB---10
SDO---12
*/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h> //需要导入两个Adafruit的库,可以在github上搜索
#include <Adafruit_BMP280.h>
#define BMP_SCK 13 //硬件连接,不需要改动
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10
//Adafruit_BMP280 bmp; // I2C
//Adafruit_BMP280 bmp(BMP_CS); // hardware SPI
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)); // this should be adjusted to your local forcase
Serial.println(" m");
Serial.println();
delay(2000);
}