风筝
发表于: 2022-4-11 16:58:04 | 显示全部楼层

在本篇文章中,我们将学习BME680集成环境传感器与Arduino开发板的连接。BME680是一种气体传感器,可测量相对湿度、气压、环境温度、气体 (VOC)和IAQ。由于压力随高度变化,BME680可用于测量近似高度。使用一些与温度和湿度有关的数学方程,我们还可以推导出露点温度(Dew Point)。所有参数均可从Arduino Adafruit BME680库中获取。


BME680是BMP180和BME280的升级版本,并附带了一些额外功能。在本文,我们将使用BME680和Arduino实现气象站。除了气象站,我们还将测量空气质量指数(Air Quality Index,IAQ)。


所需的组件

●    Arduino Nano开发板

●    BME680传感器模块

●    3.7V锂电池

●    连接线

●    面包板


BME680集成环境传感器

BME680是一款数字4合1传感器,具有基于成熟传感原理的气体、湿度、压力和温度测量功能。 BME680气体传感器可以检测多种挥发性有机化合物,用来监测室内空气质量。该传感器具有高线性度和高精度。

BME680-Sensor-Breakout-Board.jpg


BME680专为对尺寸和低功耗有严格要求的移动应用和可穿戴设备而开发。BME680具有特定工作模式、优化功耗、长期稳定性和高EMC鲁棒性等特性。为了测量空气质量,BME680中的气体传感器可以检测多种气体,例如挥发性有机化合物 (VOC)。要了解有关 BME680 传感器的更多信息,您可以查看BME680数据手册


BME680规格和特点

1.  工作电压:1.7V至3.6V

2.  工作温度范围:-40~+85℃

3.  工作湿度范围:0-100% r.H.

4.  工作压力范围:300-1100hPa

5.   室内空气质量范围:0-500 PPM

6.  接口类型:I2C(最高3.4MHZ)/ SPI(3和4线,最高10MHz)

7.  I2C地址:0x76(默认)/ 0x77(可选)

8.  待机电流:0.29 至 0.8 uA

9.  休眠电流:0.15 至 1 uA

10.  VOC检测与测量(乙烷、异戊二烯、乙醇、丙酮、一氧化碳)


BME680引脚说明

大多数BME680模块都有6个引脚,如Grove BME680、BlueDot BME680或Pimoroni。引脚的整体功能保持不变。

1.  VCC:电源引脚需要 1.7V 到 3.6V 才能工作

2.  GND:接地引脚

3.  SCL:I2C 接口的串行时钟引脚/ SPI 通信的 SCK 引脚

4.  SDA:I2C 接口的串行数据引脚/ SPI 通信的 MOSI 引脚

5.  SDO:SPI 通信的 MISO 引脚

6.  CS:SPI 接口的片选引脚


更改BME680模块的默认I2C地址

BME680模块的默认I2C地址为0x76。但是您也可以更改I2C地址,以便您可以在同一个Raspberry Pi或Arduino上使用最多的多个模块。要将I2C地址更改为0x77,只需将SDO连接到GND。


BME680作为IAQ(室内空气质量)传感器

BME680是一种基于金属氧化物的传感器,通过吸附在其敏感层上来检测VOC。BME680对大多数污染室内空气的挥发性化合物(CO2 除外)有反应。BME680能够测量周围空气中VOC污染物的总和,例如油漆、家具或垃圾中的排气、烹饪、食物消耗和呼出气或出汗导致的高VOC值。


BME680将输出电阻值作为原始信号,它会随着VOC浓度的变化而变化。还原VOCs的浓度越高,电阻越低,反之亦然。由于该原始信号受VOC浓度以外的参数(例如湿度水平)的影响,因此原始值通过BSEC内部的智能算法转换为室内空气质量 (IAQ) 指数。

AQI.jpg


IAQ范围从0(清洁空气)到500(重污染空气)。在运行过程中,算法会自动校准并使其适应传感器运行的典型环境。校准过程会考虑最近的测量历史,以确保25的IAQ对应于“典型的良好”空气,而250的IAQ表示“典型的污染”空气。


使用I2C接口将BME680与Arduino连接

BME680集成环境传感器具有I2C和SPI接口。首先,我们将学习如何使用BME680的I2C引脚将其与Arduino开发板连接。连接图如下。

BME680-Arduino-1.jpg


BME680和Arduino之间的连接相当简单。将BME680的VCC和GND引脚分别连接到Arduino的3.3V和GND引脚。另外,将BME680的I2C引脚,即SDA和SCL引脚分别连接到Arduino的A4和A5引脚。您可以使用跳线在面包板上组装电路,如下所示。

Arduino-Nano-bme680.jpg


使用SPI接口将BME680与Arduino连接

在BME680和Arduino通过I2C接口连接之后,现在介绍SPI连接。 BME680通过SPI接口与Arduino的连接图如下。

BME680-Arduino-SPI.jpg


BME680和Arduino之间的SPI连接相当简单。将BME680的VCC和GND引脚分别连接到Arduino开发板的3.3V和GND引脚。同样,将BME680的SCL、SDA、SDO、CS引脚分别连接到Arduino的数字引脚13、11、12、10。您可以使用跳线在面包板上组装电路,如下所示。

BME680-Arduino-SPI-1.jpg


适用于Arduino的Adafruit BME680库

Adafruit开发的BME680库可以测量温度、湿度、压力、海拔、露点温度和气体。该库经过简化,只需几行代码,您就可以将BME680与Arduino连接起来。


该库需要另一个库进行编译,称为Adafruit Unified Sensor。您可以从以下链接下载该库。

Adafruit Unified Sensor库和Adafruit BME680


代码

以下是BME680通过I2C和SPI连接至Arduino的代码。 bme680 i2c.rar (831 Bytes, 下载次数: 19)

bme680 spi.rar (1.32 KB, 下载次数: 11)


测试结果

您可以使用上面的I2C电路或者SPI电路,然后上传相应代码。打开串口监视器。 您将看到以下结果。

serial-cap.jpg


串口监视器将以摄氏度显示温度,以百分比显示湿度,以 hPa 为单位的大气压力,以米为单位的高度,以摄氏度为单位的露点温度和以电阻值表示的气体。 该传感器用于获得所谓的气体电阻值(Gas Resistance),然后根据湿度和空气中气体含量读数的组合计算空气质量指数 (IAQ)。


使用Adafruit BME680的Arduino Code无法计算出室内空气质量。 因此,您需要使用其他一些库来计算空气质量指数 (IAQ),下面将对此进行说明。


使用BSEC Arduino库计算BME680 IAQ值

BSEC fusion库已被概念化,可为BME680提供更高级别的信号处理和融合。该库从传感器API接收补偿的传感器值。它处理BME680信号以提供请求的传感器输出。


IAQ指数是湿度的函数,湿度占25%,气体浓度占75%。BSEC库支持32、16和8 位MCU平台 。不幸的是,Arduino UNO、Nano、Pro Mini 等不支持该库。该库仅支持Arduino MEGA 2560、Arduino Zero和Arduino Due等。从下面给定的链接下载库并将其与支持的Arduino板一起使用。

BME680 BSEC 库


IAQ代码

复制以下代码并将其上传到支持的Arduino中。

bme680 iaq.rar (1.09 KB, 下载次数: 11)


上传代码后,串口监视器将显示以下参数,并每3秒更新一次:

1. 以毫秒为单位的时间戳

2. 以°C 为单位的原始温度

3. 以 hPa 为单位的压力

4. 原始相对湿度(%)

5. 来自气体传感器的原始数据,以欧姆为单位的电阻值

6. 室内空气质素指数

7. 室内空气质量准确度

8. 温度(°C)

9. 相对湿度(%)

10. 静态室内空气质量

11. 二氧化碳当量

12.呼吸VOC当量输出

BME680-Arduino-BSEC.jpg


BME680 IAQ指数的初始值为 25.00。 它会保持很长一段时间,几分钟后IAQ值才开始变化。以上就是本文的全部内容,如果有任何疑问,请随时在本帖下面回复。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-23 18:05 , Processed in 0.049278 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表