(SKU:SEN0248)BME680 Environmental Sensor

来自DFRobot Product Wiki
跳转至: 导航搜索

[[文件:|300px|thumb|right|BME680 (SKU: DFR0248)]]

目录

简介

BME680是一款集成温度、湿度、气压、室内空气质量,四位一体的环境传感器。具有高精度,多功能,小尺寸等特点。DFRobot Gravity I2C BME680环境传感器采用Gravity-I2C接口设计,同时预留预留SPI接口,可以方便快捷的搭建产品原型,应用于环境监测,楼层高度检测,物联网控制等各种应用场景。
Gravity I2C BME680环境传感器使用BOSCH最新MEMS微机电传感器,具备良好的稳定性。气压测量在整个温区非常稳定的,偏置温度系数±1.3 pa/k,当温度变化时,1摄氏度的温度变化导致的误差仅在10.9厘米。这种稳定性,连同其多功能的特点,使得BME680可以适用于各种应用场景。

产品参数

  • 工作电压:3.3V-5V
  • 工作电流:5mA(开启室内空气质量测量,工作电流为25mA)
  • 通信接口:I2C and SPI
  • 温度测量范围:-40℃~+85℃
  • 温度测量误差:±0.5℃
  • 温度测量精度:0.01℃
  • 湿度测量范围:0-100%r.H.
  • 湿度测量误差:±3%r.H.
  • 湿度测量精度:0.1%r.H.
  • 气压测量范围:300-1100hPa
  • 气压测量精度:1.4Pa
  • 气压测量误差:±0.12hPa
  • 室内空气质量:0-500(值越大越差)
空气质量说明
  • 模块尺寸:30 × 22(mm)/1.81 x0.866(inches)
  • 安装孔位置:15(mm)/0.590(inches)
  • 安装孔尺寸:内径3.1mm/外径6mm

引脚说明

引脚说明
引脚说明
标号 名称 功能描述
+ VCC 3.3~5V
- GND GND
C SCL I2C-SCL
D SDA I2C-SDA


Arduino库函数功能列表

  • 创建一个bme对象并写入I2C地址
 DFRobot_BME680_I2C bme(0x77);
  • 初始化BME680和库
begin();
  • 开始数据转换
startConvert();
  • 读取转换的数据
update();
  • 获取温度,单位是℃,数据带有两个小数点
readTemperature();
  • 获取压力,单位是pa,数据带有两个小数点
readPressure();
  • 获取湿度,单位是%rh,数据带有两个小数点
readHumidity();
  • 获取气体电阻的电阻值,单位是ohm,数据带有两个小数点
readGasResistance();
  • 获取海拔高度,单位是m,数据带有两个小数点
readAltitude();
  • 获取海平面气压参照,传入海拔
readSeaLevel(float altitude);
  • 获取矫正后的海拔,传入海平面参照
readCalibratedAltitude(float seaLevel);


使用教程

准备

硬件

  • Arduino uno *1
  • BME680 Environmental Sensor *1

软件

示例中提供了I2C和SPI接口方式,根据不同的连线方式,选择不同的串行接口,示例如下:

I2C连接图

请务必注意线序,VCC接电源,GND接地
BME680 I2C连线图

SPI连接图

请务必注意线序,VCC接电源,GND接地
BME680 SPI连线图

读取数据

  • 将下列程序下载到Arduino控制板上

程序功能:读取传感器数据并串口打印(本示例采用IIC接口,SPI接口示例请使用DFRobot_BME680_SPI.ino,由于功能一样,不在wiki上展示这个代码)

#include "DFRobot_BME680_SPI.h"
#include "Wire.h"
#include "SPI.h"

/*use an accurate altitude to calibrate sea level air pressure*/
#define CALIBRATE_PRESSURE

DFRobot_BME680_I2C bme(0x77);  //0x77 I2C address

float seaLevel; 
void setup()
{
  Serial.begin(115200);
  while(!Serial);
  delay(1000);
  Serial.println();
  Serial.print(bme.begin());
  #ifdef CALIBRATE_PRESSURE
  bme.startConvert();
  delay(1000);
  bme.update();
  /*You can use an accurate altitude to calibrate sea level air pressure. 
   *And then use this calibrated sea level pressure as a reference to obtain the calibrated altitude.
   *In this case,525.0m is chendu accurate altitude.
   */
  seaLevel = bme.readSeaLevel(525.0);
  Serial.print("seaLevel :");
  Serial.println(seaLevel);
  #endif
}

void loop()
{
  bme.startConvert();
  delay(1000);
  bme.update();
  Serial.println();
  Serial.print("temperature(C) :");
  Serial.println(bme.readTemperature(), 2);
  Serial.print("pressure(Pa) :");
  Serial.println(bme.readPressure());
  Serial.print("humidity(%rh) :");
  Serial.println(bme.readHumidity(), 2);
  Serial.print("gas resistance(ohm) :");
  Serial.println(bme.readGasResistance());
  Serial.print("altitude(m) :");
  Serial.println(bme.readAltitude());
  #ifdef CALIBRATE_PRESSURE
  Serial.print("calibrated altitude(m) :");
  Serial.println(bme.reaCalibratedAltitude(seaLevel));
  #endif
}



结果

BME680 result.png

兼容性测试

MCU 测试通过 测试失败 未测试 特别标注
FireBeetle-Board328P
FireBeetle-ESP32
FireBeetle-ESP8266
Leonardo
FireBeetle-328P

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!


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


更多


DFshopping car1.png DFRobot商城购买链接

个人工具
名字空间

变换
操作
导航
工具箱