|
在本篇文章中,我们将学习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专为对尺寸和低功耗有严格要求的移动应用和可穿戴设备而开发。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) 指数。
IAQ范围从0(清洁空气)到500(重污染空气)。在运行过程中,算法会自动校准并使其适应传感器运行的典型环境。校准过程会考虑最近的测量历史,以确保25的IAQ对应于“典型的良好”空气,而250的IAQ表示“典型的污染”空气。
使用I2C接口将BME680与Arduino连接 BME680集成环境传感器具有I2C和SPI接口。首先,我们将学习如何使用BME680的I2C引脚将其与Arduino开发板连接。连接图如下。
BME680和Arduino之间的连接相当简单。将BME680的VCC和GND引脚分别连接到Arduino的3.3V和GND引脚。另外,将BME680的I2C引脚,即SDA和SCL引脚分别连接到Arduino的A4和A5引脚。您可以使用跳线在面包板上组装电路,如下所示。
使用SPI接口将BME680与Arduino连接 在BME680和Arduino通过I2C接口连接之后,现在介绍SPI连接。 BME680通过SPI接口与Arduino的连接图如下。
BME680和Arduino之间的SPI连接相当简单。将BME680的VCC和GND引脚分别连接到Arduino开发板的3.3V和GND引脚。同样,将BME680的SCL、SDA、SDO、CS引脚分别连接到Arduino的数字引脚13、11、12、10。您可以使用跳线在面包板上组装电路,如下所示。
适用于Arduino的Adafruit BME680库 Adafruit开发的BME680库可以测量温度、湿度、压力、海拔、露点温度和气体。该库经过简化,只需几行代码,您就可以将BME680与Arduino连接起来。
该库需要另一个库进行编译,称为Adafruit Unified Sensor。您可以从以下链接下载该库。 Adafruit Unified Sensor库和Adafruit BME680库
代码 以下是BME680通过I2C和SPI连接至Arduino的代码。
bme680 i2c.rar
(831 Bytes, 下载次数: 21)
bme680 spi.rar
(1.32 KB, 下载次数: 12)
测试结果 您可以使用上面的I2C电路或者SPI电路,然后上传相应代码。打开串口监视器。 您将看到以下结果。
串口监视器将以摄氏度显示温度,以百分比显示湿度,以 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, 下载次数: 13)
上传代码后,串口监视器将显示以下参数,并每3秒更新一次: 1. 以毫秒为单位的时间戳 2. 以°C 为单位的原始温度 3. 以 hPa 为单位的压力 4. 原始相对湿度(%) 5. 来自气体传感器的原始数据,以欧姆为单位的电阻值 6. 室内空气质素指数 7. 室内空气质量准确度 8. 温度(°C) 9. 相对湿度(%) 10. 静态室内空气质量 11. 二氧化碳当量 12.呼吸VOC当量输出
BME680 IAQ指数的初始值为 25.00。 它会保持很长一段时间,几分钟后IAQ值才开始变化。以上就是本文的全部内容,如果有任何疑问,请随时在本帖下面回复。 |