Skip to main content

Grove - 多通道气体传感器

Grove – 多通道气体传感器是一款环境检测传感器,内置 MiCS-6814 芯片,可以检测多种有害气体。由于其多通道设计,可以同时测量三种气体,因此可以帮助您监测多种气体的浓度。

该传感器属于 Grove 系统,您可以将其插入 Base shield 并直接与 Arduino 配合使用,无需任何跳线。它的接口是 I2C,因此将其插入 Base shield 的 I2C 端口,然后就可以开始使用了。

注意

传感器数值仅反映气体浓度在允许误差范围内的大致趋势,并不代表精确的气体浓度。检测空气中的某些成分通常需要更精确和昂贵的仪器,这是单个气体传感器无法做到的。如果您的项目旨在获得非常精确的气体浓度,那么我们不推荐使用这款气体传感器。

pir

tip

我们已经将产品升级为 多通道气体传感器 v2,提供了更详细的文档和更多的板载传感器模块。此外,我们还发布了 Seeed 气体传感器选择指南,它将帮助您选择最适合您需求的气体传感器。

使用前准备​

相关阅读​

我们建议您在使用气体传感器之前阅读这些知识,这将帮助您更多地了解 Arduino 和我们的产品,也会让您更容易使用开源硬件。

  • Arduino 入门指南
  • 什么是 Grove 系统
  • 为什么我需要 Base shield?

阅读完这些内容后,您将了解如何使用 Base shield 与 Grove 产品配合 Arduino 正常工作。让我们开始吧!

准备工作​

本教程将包括一些必要的产品:

  • Arduino UNO R3 或 Seeeduino v4
  • Base Shield
  • Grove - 多通道气体传感器

硬件概述​

pir

上图中标出了四个引脚

引脚标签描述
GND连接到地
VCC电源供电:3.3V - 5V
SDAI2C 数据
SCLI2C 时钟

电源供电范围是 3.3V 到 5V,因此该传感器可以与输出电压为 3.3V 的微控制器兼容。

特性​

  • 一个封装内有三个完全独立的传感元件
  • 内置 ATmega168PA
  • I2C 接口,可编程地址
  • 加热功率可关闭以实现低功耗
  • 可检测气体
    • 一氧化碳 CO 1 – 1000ppm
    • 二氧化氮 NO2 0.05 – 10ppm
    • 乙醇 C2H6OH 10 – 500ppm
    • 氢气 H2 1 – 1000ppm
    • 氨气 NH3 1 – 500ppm
    • 甲烷 CH4 >1000ppm
    • 丙烷 C3H8 >1000ppm
    • 异丁烷 C4H10 >1000ppm

框图​

pir

支持的平台

ArduinoRaspberry Pi

pir

pir

caution

上述提到的支持平台是模块软件或理论兼容性的指示。在大多数情况下,我们只为Arduino平台提供软件库或代码示例。不可能为所有可能的MCU平台提供软件库/演示代码。因此,用户必须编写自己的软件库。

电气特性​

项目条件最小值典型值最大值单位
电压-3.13.35.25V
纹波@最大功率-80100mV
加热功率---88mW
最大功率---150mW
ADC精度--10-位
I2C速率--100400kHz
VIL@I2C-0.5-0.99V
VIH@I2C2.31-5.25V

RED传感器性能​

RED传感器特性符号典型值最小值最大值单位
空气中感应电阻R0-1001500kΩ
典型CO检测范围FS-11000ppm
灵敏度因子SR-1.250-

pir

OX传感器性能​

OX传感器特性符号典型值最小值最大值单位
空气中感应电阻R0-0.820kΩ
典型NO2检测范围FS-0.0510ppm
灵敏度因子SR-2--

pir

NH3传感器性能​

NH3传感器特性符号典型值最小值最大值单位
空气中感应电阻R0-101500kΩ
典型NH3检测范围FS-1300ppm
灵敏度因子SR-1.515-

pir

入门指南​

warning

传感器需要预热至少10分钟才能获得稳定的数据。

硬件安装:

1.将Grove - 多通道气体传感器连接到Seeeduino。

pir

上传代码:

2.下载Arduino库和Grove/Xadow固件并安装到Arduino库中。

3.通过路径直接打开代码:文件 -> 示例 -> Mutichannel_Gas_Sensor-> ReadSensorValue_Grove。

ReadSensorValue_Grove的代码如下所示。

// Read Data from Grove - Multichannel Gas Sensor
#include <Wire.h>
#include "MutichannelGasSensor.h"

void setup()
{
Serial.begin(115200); // start serial for output
Serial.println("power on!");
gas.begin(0x04);//the default I2C address of the slave is 0x04 ; for verison 2 of the multichannel gas sensor the i2c address is 0x08
gas.powerOn();
Serial.print("Firmware Version = ");
Serial.println(gas.getVersion());
}

void loop()
{
float c;

c = gas.measure_NH3();
Serial.print("The concentration of NH3 is ");
if(c>=0) Serial.print(c);
else Serial.print("invalid");
Serial.println(" ppm");

c = gas.measure_CO();
Serial.print("The concentration of CO is ");
if(c>=0) Serial.print(c);
else Serial.print("invalid");
Serial.println(" ppm");

c = gas.measure_NO2();
Serial.print("The concentration of NO2 is ");
if(c>=0) Serial.print(c);
else Serial.print("invalid");
Serial.println(" ppm");

c = gas.measure_C3H8();
Serial.print("The concentration of C3H8 is ");
if(c>=0) Serial.print(c);
else Serial.print("invalid");
Serial.println(" ppm");

c = gas.measure_C4H10();
Serial.print("The concentration of C4H10 is ");
if(c>=0) Serial.print(c);
else Serial.print("invalid");
Serial.println(" ppm");

c = gas.measure_CH4();
Serial.print("The concentration of CH4 is ");
if(c>=0) Serial.print(c);
else Serial.print("invalid");
Serial.println(" ppm");

c = gas.measure_H2();
Serial.print("The concentration of H2 is ");
if(c>=0) Serial.print(c);
else Serial.print("invalid");
Serial.println(" ppm");

c = gas.measure_C2H5OH();
Serial.print("The concentration of C2H5OH is ");
if(c>=0) Serial.print(c);
else Serial.print("invalid");
Serial.println(" ppm");

delay(1000);
}

4.上传代码。记住要从Arduino环境的工具|开发板菜单中选择Seeeduino Uno,并选择Arduino正在使用的正确串口。

通过打开串口监视器,您可以看到从传感器读取的原始数据。

pir

tip

有关 Grove 模块的更多详细信息,请参考 Grove 系统

更新固件​

这个 Grove 模块有一个 ATmega168 MCU,已刷入出厂固件。版本已在 2016 年 11 月 11 日更新到 V2。 上传以下代码来检测您传感器的版本。

// 获取 Grove 多通道气体传感器的固件版本
#include <Wire.h>
#include "MutichannelGasSensor.h"

#define SENSOR_ADDR 0X04 // 默认为 0x04

void setup()
{
Serial.begin(115200);
gas.begin(SENSOR_ADDR);

unsigned char version = gas.getVersion();
Serial.print("Version = ");
Serial.println(version);
}

void loop()
{
// 无需执行任何操作
}

如果您传感器的版本是 V1,我们建议您将其升级到 V2 以获得更好的性能。

要更新固件,您需要:

  • 一个 Arduino UNO/Seeeduino V3/
  • 6 根杜邦线
  • 电烙铁

板子背面有一个 ICSP 焊盘,您需要将这些焊盘连接到 Arduino 板。

传感器Arduino
MISOD12
SCKD13
NRSTD10
GNDGND
MOSID11
VCC5V

pir

然后打开示例 UpdateFrimware 到您的 Arduino,打开串口监视器,您将看到一些打印的信息。 输入 'g' 开始。

pir

校准​

如果您总是得到不准确的值,请尝试校准传感器。 打开示例 calibration 并上传到您的 Arduino,打开串口监视器在校准时获取信息。

note

校准已在模块出厂前完成。如果您想重新校准,请确保空气条件新鲜。校准可能需要几分钟到半小时。

原理图在线查看器​

资源​

常见问题​

  • Q1. 如何更改模块的 I2C 地址

    • A1. 打开 I2C_Address 示例并运行它。
  • Q2. 我更改了 I2C 地址,但不幸的是我忘记了它是什么。

    • A2. 不用担心,运行 factory_setting 示例将其恢复为默认值。请注意,校准数据也会恢复为出厂设置。
  • Q3. 多通道气体传感器是否与 Wio GPS 和 Wio LTE 兼容?

    • *A3. 是的,请参考以下代码。

Wio GPS:

#include <Wire.h>
#include "MutichannelGasSensor.h"

#define WIOLTE_GROVE_PIN (12)
#define SENSOR_ADDR 0X04 // 默认为 0x04

void setup()
{
SerialUSB.begin(115200);
pinMode(WIOLTE_GROVE_PIN, OUTPUT);
digitalWrite(WIOLTE_GROVE_PIN, HIGH);
delay(2000);
gas.begin(SENSOR_ADDR); //
}

void loop()
{
float R0_NH3, R0_CO, R0_NO2;
float Rs_NH3, Rs_CO, Rs_NO2;
float ratio_NH3, ratio_CO, ratio_NO2;

R0_NH3 = gas.getR0(0);
R0_CO = gas.getR0(1);
R0_NO2 = gas.getR0(2);

Rs_NH3 = gas.getRs(0);
Rs_CO = gas.getRs(1);
Rs_NO2 = gas.getRs(2);

ratio_NH3 = Rs_NH3/R0_NH3;
ratio_CO = Rs_CO/R0_CO;
ratio_NO2 = Rs_NH3/R0_NO2;

SerialUSB.println("R0:");
SerialUSB.print(R0_NH3);
SerialUSB.print('\t');
SerialUSB.print(R0_CO);
SerialUSB.print('\t');
SerialUSB.println(R0_NO2);

SerialUSB.println("Rs:");
SerialUSB.print(Rs_NH3);
SerialUSB.print('\t');
SerialUSB.print(Rs_CO);
SerialUSB.print('\t');
SerialUSB.println(Rs_NO2);

SerialUSB.println("ratio:");
SerialUSB.print(ratio_NH3);
SerialUSB.print('\t');
SerialUSB.print(ratio_CO);
SerialUSB.print('\t');
SerialUSB.println(ratio_NO2);

SerialUSB.println("------------------------");
delay(1000);
}

Wio LTE:

#include <Wire.h>
#include "MutichannelGasSensor.h"

#define WIOLTE_GROVE_PIN (26)
#define SENSOR_ADDR 0X04 // 默认为 0x04

void setup()
{
// SerialUSB.begin(115200);
pinMode(WIOLTE_GROVE_PIN, OUTPUT);
digitalWrite(WIOLTE_GROVE_PIN, HIGH);
delay(2000);
gas.begin(SENSOR_ADDR); //
}

void loop()
{
float R0_NH3, R0_CO, R0_NO2;
float Rs_NH3, Rs_CO, Rs_NO2;
float ratio_NH3, ratio_CO, ratio_NO2;

R0_NH3 = gas.getR0(0);
R0_CO = gas.getR0(1);
R0_NO2 = gas.getR0(2);

Rs_NH3 = gas.getRs(0);
Rs_CO = gas.getRs(1);
Rs_NO2 = gas.getRs(2);

ratio_NH3 = Rs_NH3/R0_NH3;
ratio_CO = Rs_CO/R0_CO;
ratio_NO2 = Rs_NH3/R0_NO2;

SerialUSB.println("R0:");
SerialUSB.print(R0_NH3);
SerialUSB.print('\t');
SerialUSB.print(R0_CO);
SerialUSB.print('\t');
SerialUSB.println(R0_NO2);

SerialUSB.println("Rs:");
SerialUSB.print(Rs_NH3);
SerialUSB.print('\t');
SerialUSB.print(Rs_CO);
SerialUSB.print('\t');
SerialUSB.println(Rs_NO2);

SerialUSB.println("ratio:");
SerialUSB.print(ratio_NH3);
SerialUSB.print('\t');
SerialUSB.print(ratio_CO);
SerialUSB.print('\t');
SerialUSB.println(ratio_NO2);

SerialUSB.println("------------------------");
delay(1000);
}

项目​

智能作物:在传统农业中实施物联网!:我们与自然的使命是保护它,通过 Helium 借助物联网设计和实施技术和监测方法。

技术支持与产品讨论​

可升级为工业传感器​

使用 SenseCAP S2110 控制器和 S2100 数据记录器,您可以轻松将 Grove 转换为 LoRaWAN® 传感器。Seeed 不仅帮助您进行原型设计,还为您提供了使用 SenseCAP 系列坚固的工业传感器扩展项目的可能性。

IP66 外壳、蓝牙配置、与全球 LoRaWAN® 网络的兼容性、内置 19 Ah 电池以及来自 APP 的强大支持使 SenseCAP S210x 成为工业应用的最佳选择。该系列包括土壤湿度、空气温湿度、光照强度、CO2、EC 传感器以及 8 合 1 气象站。为您下一个成功的工业项目尝试最新的 SenseCAP S210x。

Loading Comments...