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-1001500
典型CO检测范围FS-11000ppm
灵敏度因子SR-1.250-

pir

OX传感器性能

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

pir

NH3传感器性能

NH3传感器特性符号典型值最小值最大值单位
空气中感应电阻R0-101500
典型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...