简介
SGP40是一款sensirion新推的VOC传感器(SGP30的升级版),具有超长供货期(sensirion10年计划)、超低功耗(平均功耗低至 2.6 mA / 3.3V)、启动速度快(<60S)、无需校准等特性。最重要的是该传感器内置强大的VOC算法,可将不直观的VOC浓度转换为可直观指示空气质量好坏的VOC指数。
SGP40传感器与人类鼻子表现相似,反应的是室内voc相对于历史数据的强度变化,且Breakout版本体积非常小巧,因此十分适合集成到会长期使用的室内场景项目中,例如改装空气净化器、抽油烟机等。
我们提供了C类库和Python库,因此您可以任意选择搭配的主控。
VOC指数
- 0-100:优,无需通风
- 100-200:良好,无需通风
- 200-300:轻度污染,建议开窗通风
- 300-400:中度污染,建议开窗通风
- 400-500:重度污染,建议猛烈通风
- 该传感器提供的是空气质量趋势的变化,算法会根据历史数据不断调整典型空气的基线,传感器使用越久,趋势及变化的灵敏度与精准性越强
- 在普通空气环境中,传感器使用后可立即获得准确VOC指数;在高污染环境中,传感器使用约1h后可获得准确VOC指数,因此建议集成到长期使用的室内项目
- 更多关于VOC指数的相关信息请查阅手册:
GAS_AN_SGP40_VOC_Index_for_Experts_D1.pdf
特性
- 超低功耗(2.6mA)
- 片内温湿度补偿,无需校准
- 内置VOC算法,VOC指数可直观指示空气状态变化
应用场景
- 车内空气质量检测
- 室内空气质量检测
- 空气净化器
- 加湿器改造
- 家庭控制器
- 新风系统
- 厨房油烟机
- 自动开窗
技术规格
- 供电电压:3.3V~5 V
- 工作电流:2.6mA
- 预热时间:10秒
- 响应时间:2秒
- 通信方式:I2C
- I2C地址:0x59
- 工作温度范围:-10℃~50℃
- 存储温度范围:5℃~30℃
- 工作湿度范围:0%RH~90%RH(相对湿度)
- VOC指数范围:0~500
- 产品尺寸:18*11.5mm
注意:VOC指数是由检测到的空气中乙醇当量换算得出。测量范围为0-1000ppm乙醇当量。
引脚说明
序号 | 丝印 | 功能描述 |
---|---|---|
1 | VCC/VIN | 电源正极 |
2 | GND | 电源负极 |
3 | SCL | I2C时钟线 |
4 | SDA | I2C数据线 |
Arduino使用教程
该产品使用的是标准I2C线序,使用起来比较简单,按接线图所示将传感器与uno(或其它主板)相连接,该产品预热时间短,算法启动时间为10s。
⚠注意:产品使用的前五分钟,数据有一定误差,此时数据作为参考数据,约五分钟后,可以获得准确voc指数。
准备
- 硬件
- 1 x Arduino UNO控制板
- 1 x SGP40 空气质量传感器
- 若干 杜邦线
- 软件
- Arduino IDE, 点击下载Arduino IDE
- SGP40库文件和示例程序
关于如何安装库文件,点击链接
- 主要API接口函数列表
/**
* @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);
接线图
样例代码 - 读取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);
}
结果
树莓派使用教程
准备
-
硬件
- 树莓派4代B型(或类似)主控板 x 1
- SGP40空气质量传感器 x 1
- 若干杜邦线 x 1
-
软件
接线图
安装驱动
-
启动树莓派的I2C接口。如已开启,可跳过该步骤。
打开终端(Terminal),键入如下指令,并回车:
pi@raspberrypi:~ $ sudo raspi-config
然后用上下键选择“ 5 Interfacing Options ”, 按回车进入,选择 “ P5 I2C ”, 按回车确认“ YES ”即可。重启树莓派主控板。 -
安装Python依赖库与git,树莓派需要联网。如已安装,可跳过该步骤。
在终端中,依次键入如下指令,并回车:
pi@raspberrypi:~ $ sudo apt-get update
pi@raspberrypi:~ $ sudo apt-get install build-essential python-dev python-smbus git
-
下载SGP40驱动库。在终端中,依次键入如下指令,并回车:
pi@raspberrypi:~ $ cd Desktop/
pi@raspberrypi:~/Desktop $ git clone https://github.com/DFRobot/DFRobot_SGP40
运行样例代码
-
将模块与树莓派按照连线图相连。I2C地址默认为0x59
-
在终端中,键入如下指令并回车,运行样例代码:
pi@raspberrypi:~/Desktop $ cd /home/pi/Desktop/DFRobot_SGP40/Python/raspberrypi/examples/
pi@raspberrypi:~/Desktop/DFRobot_SGP40/Python/raspberrypi/examples $ python get_voc_index.py
结果
-
模块每隔1s打印1次VOC指数
常见问题
还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。