话说在选型时,看到BME680这个标题时就被吸引到了,BME680 气体,湿度,压力,温度 传感器 Qwiic,STEMMA QT 平台评估扩展板。在通过查阅网页的介绍资料后,对BME680的功能有了更加深入的了解。BME680环境传感器是一款由博世推出的四合一MEMS环境传感器,可测量VOC(挥发性有机物)、温度、湿度、气压这四个参数,非常适用于监测空气质量,用于空气质量相关的应用方面是非常不错的。
https://www.digikey.cn/zh/products/detail/adafruit-industries-llc/3660/7915571
在模块到手后查阅资料及官方的Github,发现只能获取温度、湿度、气压等数据,而空气质量需要搭配Bosch BSEC空气质量算法库后才能输出。原本我打算是用STM32H743直接驱动该模块的,在折腾了几天后湿度温度气压等数据倒是好弄,但那个IAQ的lib库非常磨人。在查看BSEC的SDK包时发现其直接就支持ESP8266,正好手上有ESP8266(Node MCU 0.9),遂决定采用该模块来搭配BME680传感器使用Bosch BSEC空气质量算法库来获取温湿度、气压以及空气质量信息(IAQ、CO2 Equivalent、Breath VOC Equivalent)。
BSEC相关的文档,库,等资料,不得不说做的真的是非常的详尽
https://www.bosch-sensortec.com/software-tools/software/bme680-software-bsec/
BME680简介
BME680环境传感器是一款四合一MEMS环境传感器,可测量VOC(挥发性有机物)、温度、湿度、气压这四个参数,非常适用于监测空气质量。由于采用了MEMS技术,该传感器体积小、功耗低,因此也适用于低功耗场合,如可穿戴等。 DFRobot Gravity BME680环境传感器采用Gravity I2C接口,即插即用,连线简单方便;板载电源稳压芯片和电平信号转换芯片,兼容性好,可直接兼容3.3V和5V系统;预留了SPI接口,方便做扩展。本产品集成度高,可同时检测四个环境参数,是气象站、智能家居、物联网、可穿戴等场景的理想选择。 使用本产品,可迅速搭建出一套空气质量检测仪。当今空气污染越来越严重,有毒物质超标的家具屡屡出现,因此是时候为自己的健康把关了。
技术规格
• 输入电压:3.3V-5.0V
• 工作电流:5mA(开启VOC测量后,工作电流为25mA)
• 通信接口:I2C
• 预留接口:SPI
• 温度测量范围:-40℃~+85℃
• 温度测量精度:±1.0℃(0~65℃)
• 湿度测量范围:0-100%r.H.
• 湿度测量精度:±3%r.H.(20-80% r.H.,25℃)
• 气压测量范围:300-1100hPa
• 气压测量精度:±0.6hPa(300-1100hPa,0~65℃)
• IAQ(室内空气质量)范围:0-500(值越大,空气质量越差)
IAQ(室内空气质量)对照表
ESP8266开发板与BME680的硬件连接图,BME680模块和ESP8266板子正常连接后,将进入Arduino IDE配置工作。
一.Arduino IDE准备工作
GitHub - esp8266/Arduino:
ESP8266 core for Arduino
BSEC_Software_Library v1.8.1492
二.Arduino IDE开发板配置
1.在Arduino IDE中,转到“文件”>“首选项”;
2.在“附加开发板管理器网址”中输入下图所示地址,然后,单击“好”按钮;
http://arduino.esp8266.com/stable/package_esp8266com_index.json
3.回到Arduino主页,转到“工具”>“开发板”>“开发板管理器”;
4.搜索ESP8266,选择版本后点击安装按钮;
5.等待下载与安装。
6.下载完成后,回到Arduino主页,转到“工具”>“开发板”>“ESP8266 Boards(3.1.2)”;
7.选择NodeMCU 0.9(ESP-12 Module)
三.安装BSEC库并配置
1.要从BME680传感器获取IAQ读数,我们将使用BSEC_Software_Library库 。
BSEC 库的概念是为 BME680 提供更高级别的信号处理和融合,该库从传感器 API 接收补偿后的传感器值,由该库进行处理 BME680 信号并输出数据。
按照以下步骤在Arduino IDE中安装该库:
2.打开Arduino IDE,进入“工具”>“管理库”,等待下载库索引及更新;
3.在库管理搜索框中搜索“BSEC Software Library”并选择1.8.1492版本并安装。
在安装好库之后,我们可以直接来使用库中自带的示例代码,来新建工程
BME680环境传感器可以选择使用I2C接口或者SPI接口,在不同的接口模式及下各个引脚的定义及功能有一些差别。其具体分配及定义如下所示:从下表中我们可以知道当CSB引脚接高电平VDDIO时,采用的是I2C接口。此时I2C的设备地址的最后一位由SDO引脚的电平决定。所以设备地址计7位为0x76或0x77,计8位则是0xEC或0xEE。
当CSB引脚用作片选信号时,则使用SPI接口。SPI接口支持模式0(CPOL=0,CPHA=0)和模式3(CPOL=1,CPHA=1)。同时支持3线SPI和4线SPI。控制字节的最高位为0时表示写,为1时表示读。
打开basic的示例代码后,示例代码默认的是SDO接入低电平,由上面的列表可知,I2C模式下SDO电平状态决定设备地址。所以这里需要将I2C的地址改一下(0x77),不改的话,需要将SDO接入GND(0x76)。
修改完成后,检查所使用的开发板和COM端口是否与实际一致,并点击“验证”。
当验证成功,出现“Executable segment sizes:”,即可进行烧录,点击“上传”。
当成功上传到开发板后,以 115200 波特率打开串口监视器,在终端上看到先是打印BSEC库版本,其次打印数据标签,最后打印数据。
上传代码,串口开始输出数据
15个数据的对应关系: