nanoFramework.Iot.Device.Ccs811 1.2.613
前缀已保留
dotnet add package nanoFramework.Iot.Device.Ccs811 --version 1.2.613
NuGet\Install-Package nanoFramework.Iot.Device.Ccs811 -Version 1.2.613
<PackageReference Include="nanoFramework.Iot.Device.Ccs811" Version="1.2.613" />
paket add nanoFramework.Iot.Device.Ccs811 --version 1.2.613
#r "nuget: nanoFramework.Iot.Device.Ccs811, 1.2.613"
// Install nanoFramework.Iot.Device.Ccs811 as a Cake Addin #addin nuget:?package=nanoFramework.Iot.Device.Ccs811&version=1.2.613 // Install nanoFramework.Iot.Device.Ccs811 as a Cake Tool #tool nuget:?package=nanoFramework.Iot.Device.Ccs811&version=1.2.613
CCS811气体传感器
CCS811是一种超低功耗数字气体传感器解决方案,用于监控室内空气质量。CCS811集成了用于检测室内通常存在的低浓度挥发性有机化合物的气体传感器解决方案,并与微控制器单元(MCU)和模数转换器一起使用,以监控本地环境并提供通过标准I2C数字接口输出的等效二氧化碳或总挥发性有机化合物输出,作为室内空气质量的指示。
文档
设备信息
重要:
- CCS811需要在给出任何准确测量之前预热20分钟。一旦选择了一个模式,内部电阻将开始加热,请记住,准确的结果将在大约20分钟后出现
- 收到它时,设备需要每秒切换到读取模式大约48小时,因为它需要时间来稳定内部电阻
- 传感器会随着时间的推移自动校准。有一个基线概念。这个基线需要小心处理,并且不是所有设备都相同。它也会随着时间的推移而发展。
CCS811提供了3个引脚,以下是每个引脚的简要信息
- 地址引脚允许您选择第一个或第二个I2C地址。将其放置在地面上以选择第一个(0x5A)或将其放置在VCC上以选择第二个(0x5B)。
- 复位引脚有时存在。如果存在并且您希望使用它,这将执行完整的硬复位。
- 唤醒引脚用于选择芯片并唤醒它。如果您不想使用它,只需将其放置在地面上。
- 中断引脚允许中断。如果使用,将激活中断模式和事件。要能够使用嵌入式国值功能,需要激活此功能。
理解测量
- CCS811提供了二氧化碳与部分百万当量以及总挥发性有机物与部分十亿当量。这些当量是根据其自身内部机制计算的。
- 此外,您还有来自当前气传感器的原始数据读取,以微安培为单位,以及原始电压ADC。在线性模式下,ADC电压为1.65 V,读取1023。
重要 了解
为了在单片机上使用此传感器,您需要降低总线速度。此传感器使用一种名为I2C stretching的模式,并且可能在您的单片机上本机不受支持。因此,您必须将I2C时钟降低到最小值才能使其正常运行或使用低时钟的软件I2C。
使用
重要:在创建I2cDevice
之前,请确保您已正确设置I2C引脚,特别是针对ESP32。确保安装了nanoFramework.Hardware.ESP32 nuget
//////////////////////////////////////////////////////////////////////
// when connecting to an ESP32 device, need to configure the I2C GPIOs
// used for the bus
Configuration.SetPinFunction(21, DeviceFunction.I2C1_DATA);
Configuration.SetPinFunction(22, DeviceFunction.I2C1_CLOCK);
对于STM32等设备,请确保您正在使用您想要使用的I2C总线的预设引脚。
以下是如何使用传感器的说明。一个详细涵盖所有使用方法的全示例可以在samples目录中找到。
创建设备
要创建没有任何引脚的设备
var ccs811 = new Ccs811Sensor(I2cDevice.Create(new I2cConnectionSettings(1, Ccs811Sensor.I2cFirstAddress)));
要创建具有唤醒引脚和中断引脚的设备
var ccs811 = new Ccs811Sensor(I2cDevice.Create(new I2cConnectionSettings(1, Ccs811Sensor.I2cFirstAddress)), pinWake: 3, pinInterruption: 2);
注意:
- 如果使用软件I2C设备而不是硬件I2C,请调整总线号。如果在前面的部分中设置了软件I2C,则总线号为3。因此,实例化设备将是
var ccs811 = new Ccs811Sensor(I2cDevice.Create(new I2cConnectionSettings(3, Ccs811Sensor.I2cFirstAddress)));
要创建使用外部芯片组如FT4222以提供GPIO和I2C支持的设备,包括唤醒和中断引脚
var ftdiI2C = new Ft4222I2c(new I2cConnectionSettings(0, Ccs811Sensor.I2cFirstAddress));
var gpioController = new GpioController(PinNumberingScheme.Board, new Ft4222Gpio());
ccs811 = new Ccs811Sensor(ftdiI2C, gpioController, 3, 2, -1, false);
然后您可以显示设备的基本信息
Debug.WriteLine($"Hardware identification: 0x{ccs811.HardwareIdentification:X2}, must be 0x81");
Debug.WriteLine($"Hardware version: 0x{ccs811.HardwareVersion:X2}, must be 0x1X where any X is valid");
Debug.WriteLine($"Application version: {ccs811.ApplicationVersion}");
Debug.WriteLine($"Boot loader version: {ccs811.BootloaderVersion}");
选择测量模式
这需要在每秒恒定功率1次测量模式下启动测量。请记住有关数据准确性的重要注释。
ccs811.OperationMode = OperationMode.ConstantPower1Second;
一旦测量设置为除空闲以外的任何内容,您就可以查看下一节如何读取测量。
获取测量值
如果您已选择中断引脚,则将设置事件模式。如果没有,您必须检查是否有任何可用的测量。
未使用中断引脚的情况
基本示例展示了如何检查是否有任何数据准备就绪,然后读取气体传感器数据。
while (!ccs811.IsDataReady)
{
Thread.Sleep(10);
}
var error = ccs811.TryReadGasData(out VolumeConcentration eCO2, out VolumeConcentration eTVOC, out ElectricCurrent curr, out int adc);
Debug.WriteLine($"Success: {error}, eCO2: {eCO2.PartsPerMillion} ppm, eTVOC: {eTVOC.PartsPerBillion} ppb, Current: {curr.Microamperes} µA, ADC: {adc} = {adc * 1.65 / 1023} V.");
使用中断引脚的情况
您可以使用之前的方式或使用事件
// In the code after initialization
ccs811.MeasurementReady += Ccs811MeasurementReady;
// And a function to be called when a measurement is ready
private static void Ccs811MeasurementReady(object sender, MeasurementThresholdArgs args)
{
Debug.WriteLine($"Measurement Event: Success: {args.MeasurementSuccess}, eCO2: {args.EquivalentCO2.PartsPerMillion} ppm, " +
$"eTVOC: {args.EquivalentTotalVolatileOrganicCompound.PartsPerBillion} ppb, Current: {args.RawCurrentSelected.Microamperes} µA, " +
$"ADC: {args.RawAdcReading} = {args.RawAdcReading * 1.65 / 1023} V.");
}
设置阈值
此功能仅在启用中断引脚时可用。同时也需要激活事件。这是一个为eCO2设置400至600 ppm阈值的示例。请注意,阈值的最小值和最大值之间至少需要差异50。
ccs811.MeasurementReady += Ccs811MeasurementReady;
ccs811.SetThreshold(VolumeConcentration.FromPartsPerMillion(400), VolumeConcentration.FromPartsPerMillion(600));
随后,您将收到一个事件,其中第一个超过阈值的点数据。其他数据点不会引发事件。
调整温度和湿度
计算对温度和湿度敏感。建议使用准确的温度和相对湿度源传感器调整默认值。默认值是25°C的温度和50%的相对湿度。以下示例显示如何调整21.3°C和42.5%。
ccs811.SetEnvironmentData(Temperature.FromDegreesCelsius(21.3), Ratio.FromPercent(42.5));
读取和加载基线
基线用于根据原始数据计算eCO2和eTVOC。它不是旨在人类可读的。请参阅文档以了解更多关于这一概念的信息。
var baseline = ccs811.BaselineAlgorithmCalculation;
Debug.WriteLine($"Baseline calculation value: {baseline}, changing baseline");
// Please refer to documentation, baseline is not a human readable number
ccs811.BaselineAlgorithmCalculation = 50300;
Debug.WriteLine($"Baseline calculation value: {ccs811.BaselineAlgorithmCalculation}, changing baseline for the previous one");
ccs811.BaselineAlgorithmCalculation = baseline;
Debug.WriteLine($"Baseline calculation value: {ccs811.BaselineAlgorithmCalculation}");
CCS811样本
此示例应用程序包含流和菜单,允许您轻松测试CCS811的所有功能,并显示如何正确实现所有读取。
您可以通过以下方式测试它:
- 一个本地平台,如ESP32
您可以为以下引脚使用原始的GPIO支持,也可以不使用
- 地址引脚用于选择主(0x5A)或次(0x5B)I2C设备地址。
- 复位引脚有时存在,有时不存在。如果存在并且您想使用它,这将执行完整硬件复位。
- 唤醒引脚用于选择芯片并唤醒它。如果您不想使用它,只需将其放置在地面上。
- 中断引脚允许中断。如果使用,将激活中断模式和事件。要能够使用嵌入式国值功能,需要激活此功能。
您可以选择任何模式。
提供了各种测试和读取,包括更改温度和湿度校正。
您可以将其记录下来,然后很好地导入Excel。以下示例显示了随时间进行测量的情况。图中蓝色表示等价的ppm CO2,橙色表示等价的ppb TVOC。请注意,在这个图表上,测量始于大约11:35小时的准确性。
样本布线
重要 了解
为了让这个传感器在MCU上工作,您需要降低总线速度。此传感器使用一种称为I2C延时的模式,它可能在您的MCU上不可原生化支持。因此,您必须将I2C时钟降至最低以使其正常工作或使用具有低时钟的软件I2C
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.Runtime.Events (>= 1.11.18)
- nanoFramework.System.Buffers.Binary.BinaryPrimitives (>= 1.2.586)
- nanoFramework.System.Device.Gpio (>= 1.1.41)
- nanoFramework.System.Device.I2c (>= 1.1.16)
- nanoFramework.System.Diagnostics.Stopwatch (>= 1.2.586)
- nanoFramework.System.Math (>= 1.5.43)
- UnitsNet.nanoFramework.ElectricCurrent (>= 5.56.0)
- UnitsNet.nanoFramework.Length (>= 5.56.0)
- UnitsNet.nanoFramework.RelativeHumidity (>= 5.56.0)
- UnitsNet.nanoFramework.Temperature (>= 5.56.0)
- UnitsNet.nanoFramework.VolumeConcentration (>= 5.56.0)
NuGet包
此包未被任何NuGet包使用。
GitHub仓库
此包未被任何流行的GitHub仓库使用。
版本 | 下载 | 最后更新 |
---|---|---|
1.2.613 | 57 | 8/9/2024 |
1.2.601 | 54 | 7/26/2024 |
1.2.590 | 75 | 7/17/2024 |
1.2.573 | 76 | 6/19/2024 |
1.2.570 | 87 | 6/14/2024 |
1.2.560 | 80 | 5/29/2024 |
1.2.548 | 81 | 5/15/2024 |
1.2.536 | 116 | 4/15/2024 |
1.2.514 | 100 | 3/22/2024 |
1.2.494 | 107 | 2/28/2024 |
1.2.474 | 110 | 1/24/2024 |
1.2.462 | 119 | 1/5/2024 |
1.2.458 | 108 | 12/20/2023 |
1.2.436 | 146 | 11/10/2023 |
1.2.416 | 105 | 11/8/2023 |
1.2.403 | 132 | 10/6/2023 |
1.2.396 | 124 | 9/27/2023 |
1.2.384 | 133 | 9/6/2023 |
1.2.378 | 136 | 8/16/2023 |
1.2.369 | 135 | 8/2/2023 |
1.2.363 | 133 | 7/28/2023 |
1.2.357 | 143 | 7/19/2023 |
1.2.354 | 125 | 7/14/2023 |
1.2.345 | 148 | 6/21/2023 |
1.2.341 | 134 | 6/14/2023 |
1.2.337 | 130 | 6/7/2023 |
1.2.335 | 138 | 6/2/2023 |
1.2.329 | 143 | 5/26/2023 |
1.2.313 | 156 | 5/12/2023 |
1.2.302 | 162 | 5/10/2023 |
1.2.297 | 155 | 5/3/2023 |
1.2.273 | 232 | 3/17/2023 |
1.2.267 | 252 | 3/10/2023 |
1.2.263 | 241 | 3/8/2023 |
1.2.259 | 250 | 2/27/2023 |
1.2.256 | 259 | 2/24/2023 |
1.2.253 | 262 | 2/22/2023 |
1.2.222 | 304 | 1/9/2023 |
1.2.212 | 284 | 1/5/2023 |
1.2.208 | 309 | 1/3/2023 |
1.2.203 | 310 | 12/28/2022 |
1.2.159 | 367 | 11/14/2022 |
1.2.153 | 383 | 11/5/2022 |
1.2.141 | 389 | 10/25/2022 |
1.2.128 | 396 | 10/22/2022 |
1.2.125 | 399 | 10/12/2022 |
1.2.122 | 424 | 10/12/2022 |
1.2.114 | 395 | 10/8/2022 |
1.2.95 | 455 | 9/22/2022 |
1.2.87 | 511 | 9/15/2022 |
1.2.73 | 422 | 9/8/2022 |
1.2.63 | 425 | 9/3/2022 |
1.2.47 | 429 | 8/15/2022 |
1.2.40 | 423 | 8/6/2022 |
1.2.38 | 429 | 8/5/2022 |
1.2.28 | 436 | 8/1/2022 |
1.2.13 | 452 | 7/24/2022 |
1.2.10 | 444 | 7/23/2022 |
1.1.142.3202 | 474 | 7/7/2022 |
1.1.133.52556 | 469 | 6/30/2022 |
1.1.121.35854 | 484 | 6/26/2022 |
1.1.116.8772 | 458 | 6/24/2022 |
1.1.113.2032 | 480 | 6/23/2022 |
1.1.102.51394 | 452 | 6/15/2022 |
1.1.99.36719 | 455 | 6/14/2022 |
1.1.97.17326 | 489 | 6/13/2022 |
1.1.92.53000 | 451 | 6/8/2022 |
1.1.72.29765 | 446 | 5/31/2022 |
1.1.64.21380 | 456 | 5/26/2022 |
1.1.58.10097 | 449 | 5/23/2022 |
1.1.54.28879 | 446 | 5/23/2022 |
1.1.50.19867 | 438 | 5/19/2022 |
1.1.40 | 481 | 5/5/2022 |
1.1.3 | 489 | 4/15/2022 |
1.1.1 | 477 | 4/14/2022 |
1.0.300 | 476 | 3/31/2022 |
1.0.288-preview.114 | 117 | 3/25/2022 |
1.0.288-preview.113 | 115 | 3/25/2022 |
1.0.288-preview.104 | 101 | 3/22/2022 |
1.0.288-preview.103 | 101 | 3/21/2022 |
1.0.288-preview.100 | 117 | 3/19/2022 |
1.0.288-preview.99 | 113 | 3/18/2022 |
1.0.288-preview.98 | 110 | 3/18/2022 |
1.0.288-preview.94 | 116 | 3/15/2022 |
1.0.288-preview.93 | 106 | 3/15/2022 |
1.0.288-preview.90 | 109 | 3/11/2022 |
1.0.288-preview.87 | 114 | 3/10/2022 |
1.0.288-preview.86 | 115 | 3/8/2022 |
1.0.288-preview.77 | 115 | 2/27/2022 |
1.0.288-preview.75 | 110 | 2/26/2022 |
1.0.288-preview.73 | 122 | 2/25/2022 |
1.0.288-preview.65 | 115 | 2/18/2022 |
1.0.288-preview.63 | 109 | 2/16/2022 |
1.0.288-preview.61 | 118 | 2/12/2022 |
1.0.288-preview.59 | 104 | 2/11/2022 |
1.0.288-preview.58 | 114 | 2/10/2022 |
1.0.288-preview.53 | 104 | 2/9/2022 |
1.0.288-preview.51 | 114 | 2/8/2022 |
1.0.288-preview.48 | 129 | 2/4/2022 |
1.0.288-preview.41 | 124 | 1/31/2022 |
1.0.288-preview.29 | 126 | 1/28/2022 |
1.0.288-preview.20 | 131 | 1/27/2022 |
1.0.288-preview.19 | 131 | 1/27/2022 |
1.0.288-preview.18 | 124 | 1/27/2022 |
1.0.288-preview.5 | 132 | 1/24/2022 |
1.0.288-preview.3 | 123 | 1/21/2022 |
1.0.288-preview.1 | 127 | 1/21/2022 |
1.0.272 | 158 | 1/10/2022 |
1.0.259 | 333 | 12/9/2021 |
1.0.258 | 320 | 12/7/2021 |
1.0.221 | 157 | 10/19/2021 |
1.0.219 | 155 | 10/19/2021 |
1.0.218 | 189 | 10/18/2021 |
1.0.217 | 379 | 10/16/2021 |
1.0.208 | 388 | 10/12/2021 |
1.0.194 | 398 | 10/1/2021 |
1.0.191 | 368 | 9/29/2021 |
1.0.157 | 346 | 9/4/2021 |
1.0.155 | 360 | 8/31/2021 |
1.0.153 | 159 | 8/14/2021 |
1.0.151 | 166 | 8/6/2021 |
1.0.146 | 156 | 7/22/2021 |
1.0.143 | 215 | 7/21/2021 |
1.0.137 | 230 | 7/18/2021 |
1.0.136 | 229 | 7/17/2021 |
1.0.135 | 163 | 7/16/2021 |
1.0.134 | 167 | 7/15/2021 |
1.0.133 | 186 | 7/14/2021 |
1.0.130 | 153 | 7/6/2021 |
1.0.129 | 162 | 7/6/2021 |
1.0.127 | 176 | 7/5/2021 |
1.0.125 | 197 | 7/5/2021 |
1.0.122 | 212 | 6/30/2021 |
1.0.121 | 203 | 6/29/2021 |
1.0.119 | 223 | 6/28/2021 |
1.0.111 | 181 | 6/14/2021 |
1.0.105 | 174 | 5/29/2021 |
1.0.104 | 257 | 5/29/2021 |
1.0.97 | 176 | 5/28/2021 |
1.0.61 | 181 | 5/25/2021 |