# DFRobot_CCS811
**Repository Path**: dfrobot/DFRobot_CCS811
## Basic Information
- **Project Name**: DFRobot_CCS811
- **Description**: CCS811空气质量传感器能够测量eCO2(equivalent CO2)和TVOC(Total Volatile Organic Compounds)浓度。可用于空气测量应用,例如:空气质量检测、空气净化器、新风系统等。 CCS811使用AMS独有的微热板技术,相比传统的气体传感器,功耗更低、预热时间更短、体积更小。内部集成ADC和MCU,可以对数据进行采集、计算,并且通过I2C返回数据。
- **Primary Language**: C++
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-02
- **Last Updated**: 2023-05-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# DFRobot_CCS811
- [English Version](./README.md)
CCS811空气质量传感器能够测量eCO2(equivalent CO2)和TVOC(Total Volatile Organic Compounds)浓度。可用于空气测量应用,例如:空气质量检测、空气净化器、新风系统等。
CCS811使用AMS独有的微热板技术,相比传统的气体传感器,功耗更低、预热时间更短、体积更小。内部集成ADC和MCU,可以对数据进行采集、计算,并且通过I2C返回数据。
CCS811支持多种模式:每1秒、10秒、1分钟、250毫秒测量一次以及休眠模式,这些模式在传感器测量期间进行了低功耗优化,因此CCS811适用于便携式应用。CCS811支持浓度报警,
当浓度超过用户设置的阈值时,INT引脚就会触发。
⚠注意:该芯片对I2C进行了时钟延展,有些控制器不支持时钟延展,例如树莓派。
**二氧化碳浓度参考**
二氧化碳浓度(ppm)|人体反映
------------------ | -----
<500 |正常 |
500-1000 |感到空气污浊 |
1000-2500 |感到困倦 |
2500-5000 |对健康不利 |
大于5000 |有中毒危险 |
**TVOC浓度参考**
TVOC浓度(ppb) | 人体反应 |
------------------ | -----
<50 | 正常 |
50-750 | 可能会急躁不安和不舒服 |
750-6000 | 可能会急躁不安、不舒服和头疼 |
大于6000 | 头痛和其他神经问题 |
* Arduino UNO
## 产品链接(https://www.dfrobot.com.cn/goods-2677.html)
SKU:SEN0315
## 目录
* [概述](#概述)
* [库安装](#库安装)
* [方法](#方法)
* [兼容性](#兼容性)
* [历史](#历史)
* [创作者](#创作者)
## 概述
1. 读取二氧化碳浓度(单位:ppm)
2. 读取TVOC浓度(单位:ppb)
3. 改变数据读取的采样间隔以改变功耗
4. 设置环境参数来校准读数
5. 支持中断测量
## 库安装
这里提供两种使用本库的方法:
1. 打开Arduino IDE,在状态栏中的Tools--->Manager Libraries 搜索"DFRobot_VEML6075"并安装本库.
2. 首先下载库文件,将其粘贴到\Arduino\libraries目录中,然后打开examples文件夹并在该文件夹中运行演示.
## 方法
```C++
/**
* @fn begin
* @brief 初始化函数
* @return 初始化结果
* @retval ERR_OK 初始化成功
* @retval ERR_DATA_BUS 总线数据错误
* @retval ERR_IC_VERSION 传感器id错误
*/
int begin();
/**
* @fn checkDataReady
* @brief 判断传感器数据是否准备就绪
* @return 检查结果
* @retval true 数据准备就绪
* @retval false 数据还未准备好
*/
bool checkDataReady();
/**
* @fn softReset
* @brief 复位传感器,清除所有配置数据。
*/
void softReset();
/**
* @fn setInTempHum
* @brief 设置环境参数
* @param temperature 设定温度值,单位:摄氏度,范围(-40~85℃)
* @param humidity 设置湿度值,单位:RH,范围(0~100)
*/
void setInTempHum(float temperature, float humidity);
/**
* @fn setMeasurementMode
* @brief 测量参数配置
* @param mode
* @n eClosed 空闲(在此模式下测量被禁用)
* @n eCycle_1s 恒功率模式,每秒测量室内空气质量
* @n eCycle_10s 每10秒测量一次脉冲加热模式的室内空气质量
* @n eCycle_60s 每60秒测量一次低功率脉冲加热模式的室内空气质量
* @n eCycle_250ms 恒功率模式,传感器每250ms测量一次1xx:预留模式(供以后使用)
* @param thresh 阈值中断模式
* @n 0 正常中断模式
* @n 1 达到或者超过阈值产生中断信号
* @param interrupt
* @n 0 禁止中断模式
* @n 1 当一个新的样本准备就绪时,int信号被触发(驱动低)
*/
void setMeasurementMode(eCycle_t mode, uint8_t thresh = 0, uint8_t interrupt = 0);
/**
* @fn setThresholds
* @brief 设置中断阈值
* @param lowToMed: 中断触发值范围从低到中
* @param medToHigh: 中断触发值范围中至高
*/
void setThresholds(uint16_t lowToMed, uint16_t medToHigh);
/**
* @fn getMeasurementMode
* @brief 获取当前配置参数
* @return configuration code, needs to be converted into binary code to analyze
* @n 第二位: 0 正常中断模式;1:当数据不在阈值内,中断模式触发nINT信号
* @n 第三位: 0 禁止中断; 1: 当一个新的样本准备就绪时,int信号被触发(驱动低)
* @n 第四到六位: 详情见 eCycle_t
*/
uint8_t getMeasurementMode();
/**
* @fn getCO2PPM
* @brief 获取当前的二氧化碳浓度
* @return 当前二氧化碳浓度,单位:ppm
*/
uint16_t getCO2PPM();
/**
* @fn getTVOCPPB
* @brief 得到当前TVOC浓度
* @return 当前TVOC浓度,单位:ppb
*/
uint16_t getTVOCPPB();
/**
* @fn readBaseLine
* @brief 获取当前基线数
* @return 当前基线数,16进制数
*/
uint16_t readBaseLine();
/**
* @fn writeBaseLine
* @brief 将基线数写入寄存器
* @param baseLine 基线数
*/
void writeBaseLine(uint16_t baseLine);
```
## 兼容性
MCU | Work Well | Work Wrong | Untested | Remarks
------------------ | :----------: | :----------: | :---------: | -----
Arduino uno | √ | | |
Mega2560 | √ | | |
Leonardo | √ | | |
ESP32 | √ | | |
micro:bit | √ | | |
## 历史
- 2021/10/22 - 1.0.1 版本
- 2019/07/19 - 1.0.0 版本
## 创作者
Written by yangfeng(feng.yang@dfrobot.com), 2021. (Welcome to our [website](https://www.dfrobot.com/))