[Gravity: I2C BMP280 温度&气压传感器]( "Gravity: I2C BMP280 温度&气压传感器")

简介

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

引脚说明

20170206161737.png

如图,模块通过I2C接口与Arduino通信,I2C接口说明(从上而下)

  • SDA--I2C数据
  • SCL--I2C时钟
  • GND--电源负
  • VCC--电源正(3.3/5V)

使用教程

  • 目标:测出当前环境下的大气压强和温度值,计算出芯片的海拔高度

准备

  • 硬件
    • 1 x Arduino UNO控制板
    • 1 x Gravity I2C BMP280 温度&气压计
    • 若干 杜邦线
  • 软件

接线图

连接模块与UNO主板(通过I2C接口),按照如下图的方式连接。

样例代码

IDE串口打印: Temperature,Pressure,Altitude

/*!
 * 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](https://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或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png [Link DFRobot商城购买链接]