(SKU:SEN0226)Gravity: I2C BMP280 气压温度传感器
来自DFRobot Product Wiki
目录 |
简介
DFRobot新推BMP280气压传感器,具有温度检测和大气压检测双重功能。支持Arduino代码控制,相对于旧版的BMP180,BMP280拥有更低的功耗,更高的分辨率以及更高的采样频率。
气压传感器通常用于大气压检测和温度检测,并且由于气压和海拔高度之间的关系,人们通常可以利用气压来检测海拔高度和相对的楼层高度。在导航方面,气压计也可以用来增强GPS定位效果或者配合IMU传感器,实现三维(3D)室内导航。
BMP280基于博世成熟的压电式压力传感器技术,具有高EMC稳健性,高精度,低功耗等特点。精度约为±0.12 hPa,相当于高度误差为±1 m,支持0~65℃温度检测。
注意:由于传感器对环境条件非常敏感,请勿用手指触摸。
应用领域
- 温度检测
- 大气压强检测
- 海拔高度检测
- 室内导航(楼层检测、电梯检测)
- 户外导航、休闲和运动的应用程序
- 医疗保健应用程序(如肺量测定法)
- 垂直速度指示(如上升/下沉速度)
技术规格
- 工作电压:3.3V/5V
- 工作电流:2.7uA @ 1Hz采样率
- 气压测量范围:300hPa~1100hPa (海拔+9000~-500m)
- 气压测量精度:0.16Pa(±1米)
- 温度测量范围:0℃~65℃
- 温度测量精度:0.01℃
- 工作温度:-40℃~+85℃
- 模块尺寸:30*22(mm)
- 接口类型:Gravity-I2C 4Pin接口
- 重量:12g
引脚说明
如图,模块通过I2C接口与Arduino通信,I2C接口说明(从上而下)
- SDA--I2C数据
- SCL--I2C时钟
- GND--电源负
- VCC--电源正(3.3/5V)
使用教程
- 目标:测出当前环境下的大气压强和温度值,计算出芯片的海拔高度
准备
- 硬件
- 1 x Arduino UNO控制板
- 1 x Gravity I2C BMP280 温度&气压计
- 若干 杜邦线
- 软件
- Arduino IDE 点击下载Arduino IDE
接线图
连接模块与UNO主板(通过I2C接口),按照如下图的方式连接。
样例代码
- 下载BMP280 库文件,如何安装库?
- 拷贝以下的代码烧录进单片机
/*! * read_data.ino * * Download this demo to test simple read from bmp280, connect sensor through IIC interface * Data will print on your serial monitor * * Copyright [DFRobot](http://www.dfrobot.com), 2016 * Copyright GNU Lesser General Public License * * version V1.0 * date 12/03/2019 */ #include "DFRobot_BMP280.h" #include "Wire.h" typedef DFRobot_BMP280_IIC BMP; // ******** use abbreviations instead of full names ******** BMP bmp(&Wire, BMP::eSdo_low); #define SEA_LEVEL_PRESSURE 1015.0f // sea level pressure // show last sensor operate status void printLastOperateStatus(BMP::eStatus_t eStatus) { switch(eStatus) { case BMP::eStatusOK: Serial.println("everything ok"); break; case BMP::eStatusErr: Serial.println("unknow error"); break; case BMP::eStatusErrDeviceNotDetected: Serial.println("device not detected"); break; case BMP::eStatusErrParameter: Serial.println("parameter error"); break; default: Serial.println("unknow status"); break; } } void setup() { Serial.begin(115200); bmp.reset(); Serial.println("bmp read data test"); while(bmp.begin() != BMP::eStatusOK) { Serial.println("bmp begin faild"); printLastOperateStatus(bmp.lastOperateStatus); delay(2000); } Serial.println("bmp begin success"); delay(100); } void loop() { float temp = bmp.getTemperature(); uint32_t press = bmp.getPressure(); float alti = bmp.calAltitude(SEA_LEVEL_PRESSURE, press); Serial.println(); Serial.println("======== start print ========"); Serial.print("temperature (unit Celsius): "); Serial.println(temp); Serial.print("pressure (unit pa): "); Serial.println(press); Serial.print("altitude (unit meter): "); Serial.println(alti); Serial.println("======== end print ========"); delay(1000); }
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。