SGP40空气质量传感器

简介

   SGP40是一款sensirion新推的VOC传感器(SGP30的升级版),具有超长供货期(sensirion10年计划)、超低功耗(平均功耗低至 2.6 mA / 3.3V)、启动速度快(<60S)、无需校准等特性。最重要的是该传感器内置强大的VOC算法,可将不直观的VOC浓度转换为可直观指示空气质量好坏的VOC指数。
   SGP40传感器与人类鼻子表现相似,反应的是室内VOC相对于历史数据的强度变化,Gravity版本接线方便,体积较小。我们提供了C类库和Python库,因此您可以任意选择搭配的主控。

VOC指数

特性

应用场景

技术规格

注意:VOC指数是由检测到的空气中乙醇当量换算得出。测量范围为0-1000ppm乙醇当量。

引脚说明

序号 丝印 功能描述
1 VCC/+ 电源正极
2 GND/- 电源负极
3 SCL/C I2C时钟线
4 SDA/D I2C数据线

Arduino使用教程

该产品使用的是Gravity标准I2C接口,使用起来比较简单,按接线图所示将传感器与uno(或其它主板)相连接,该产品预热时间短,算法启动时间为10s。
⚠注意:产品使用的前五分钟,数据有一定误差,此时数据作为参考数据,约五分钟后,可以获得准确voc指数。

准备

关于如何安装库文件,点击链接

 /**
   * @brief  初始化函数
   * @param  duration 初始化时长,默认10秒(10000毫秒)
   * @return 返回true表示成功;返回false表示失败
   */
  bool begin(uint32_t duration = 10000);

  /**
   * @brief  设置当前环境的温度和相对湿度
   * @param  relativeHumidityRH  当前环境的相对湿度,范围:0-90,单位: %RH
   * @param  temperatureC  当前环境的温度,范围:-10~50, 单位: °C
   */
  void setRhT(float relativeHumidity = 50,float temperatureC=25);

  /**
   * @brief  获取VOC指数
   * @note   VOC指数可直观表示空气质量,值越大,空气质量越差。
   * @note       0-100,无需开窗通风
   * @note       100-200,无需开窗通风
   * @note       200-400,需要开窗通风
   * @note       400-500,需要立即开窗猛烈通风
   * @return 返回VOC指数,范围:0-500
   */
  uint16_t getVoclndex(void);

接线图

<File:SEN0394-CONNECT.jpg>

样例代码 - 读取VOC指数

上电10s后串口打印当前VOC指数。
芯片已设置片内补偿,用户无需校准即可使用。若需要获取更精确的数值,可以打开setRhT()函数,将外部湿度检测传感器获取到的环境相对湿度值RH%和温度计检测到的环境温度°C填入即可。


/*!
 * @file  getVocIndex.ino
 * @brief 读取环境VOC指数,范围:0-500
 * @n     实验现象:每秒读取一次环境VOC指数并在串口中打印VOC指数值
 * @copyright  Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
 * @licence     The MIT License (MIT)
 * @author [yangfeng]<feng.yang@dfrobot.com>
 * @version  V1.0
 * @date  2020-12-18
 * @get from https://www.dfrobot.com
 * @url  https://github.com/DFRobot/DFRobot_SGP40
 */
#include <DFRobot_SGP40.h>

/* 
 * 方法一:传入指定的I2C对象地址
 * #include <Wire.h>
 * DFRobot_SGP40    mySgp40(&Wire);

 * 方法二:使用默认的I2C对象&Wire
 * I2C 默认地址:0x59
 */

//#include <Wire.h>
//DFRobot_SGP40    mySgp40(&Wire);
DFRobot_SGP40    mySgp40;


void setup() {
  Serial.begin(115200);
  Serial.println("sgp40正在启动,10秒后开始读取数据...");
  /*
   * 传感器预热时间为10s。
   * duration:初始化等待时间。单位:毫秒。建议duration>=10000ms
   */
  while(mySgp40.begin(/*duration = */10000) !=true){
    Serial.println("芯片初始化失败,请检查接线是否正确");
    delay(1000);
  }
  Serial.println("----------------------------------------------");
  Serial.println("sgp40成功初始化!");
  Serial.println("----------------------------------------------");
  /* 
   * 设置当前环境中的相对湿度和温度
   * 传感器内部已进行温湿度校准,若需要得到更精确的voc指数,请打开注释
   * relativeHumidity:环境相对湿度,指空气中的水汽含量。范围:0-90,单位:%RH,例如:50%
   * temperatureC:环境温度。范围:-10~50,单位:°C,例如:20°C
   */
  //mySgp40.setRhT(/*relativeHumidity = */ 50, /*temperatureC = */ 20);

}

void loop() {
  /* 
   * 获取voc指数
   * voc指数可直接指示空气质量的好坏。数值越大,空气质量越差
   *    0-100,无需开窗通风
   *    100-200,无需开窗通风
   *    200-400,需要开窗通风
   *    400-500,需要立即开窗猛烈通风
   * 返回voc指数,范围:0-500
   */
  uint16_t index = mySgp40.getVoclndex();

  Serial.print("vocIndex = ");
  Serial.println(index);
  delay(1000);
}

结果

SGP40_result

树莓派使用教程

准备

接线图

SEN0394_connection_RPI

安装驱动

  1. 启动树莓派的I2C接口。如已开启,可跳过该步骤。 打开终端(Terminal),键入如下指令,并回车:
    pi@raspberrypi:~ $ sudo raspi-config
    然后用上下键选择“ 5 Interfacing Options ”, 按回车进入,选择 “ P5 I2C ”, 按回车确认“ YES ”即可。重启树莓派主控板。

  2. 安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。 在终端中,依次键入如下指令,并回车:
    pi@raspberrypi:~ $ sudo apt-get update
    pi@raspberrypi:~ $ sudo apt-get install build-essential python-dev python-smbus git

  3. 下载SGP40驱动库。在终端中,依次键入如下指令,并回车:
    pi@raspberrypi:~ $ cd Desktop/ pi@raspberrypi:~/Desktop $ git clone https://github.com/DFRobot/DFRobot_SGP40

运行样例代码

结果

常见问题

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接