TVOC Unit

TVOCUnit 是一款用于测量总挥发性有机化合物(TVOC)和等效二氧化碳(eCO2)的硬件模块。它基于 SGP30 传感器,并通过 I2C 接口进行通信。该类支持配置和测量操作。

支持以下产品:

TVOCUnit

MicroPython 应用示例

 1# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import os, sys, io
 6import M5
 7from M5 import *
 8from hardware import *
 9from unit import TVOCUnit
10import time
11
12
13label3 = None
14title0 = None
15label0 = None
16label1 = None
17label2 = None
18i2c0 = None
19tvoc_0 = None
20
21
22def setup():
23    global label3, title0, label0, label1, label2, i2c0, tvoc_0
24
25    M5.begin()
26    Widgets.fillScreen(0x222222)
27    label3 = Widgets.Label("label3", 0, 193, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
28    title0 = Widgets.Title(
29        "TVOCUnit CoreS3 Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18
30    )
31    label0 = Widgets.Label("label0", 0, 44, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
32    label1 = Widgets.Label("label1", 0, 95, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
33    label2 = Widgets.Label("label2", 0, 146, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
34
35    i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000)
36    tvoc_0 = TVOCUnit(i2c0)
37
38
39def loop():
40    global label3, title0, label0, label1, label2, i2c0, tvoc_0
41    M5.update()
42    label0.setText(str((str("TVOC:") + str((tvoc_0.tvoc())))))
43    label1.setText(str((str("CO2:") + str((tvoc_0.co2eq())))))
44    label2.setText(str((str("Ethanol:") + str((tvoc_0.raw_ethanol())))))
45    label3.setText(str((str("H2:") + str((tvoc_0.raw_h2())))))
46    time.sleep(1)
47
48
49if __name__ == "__main__":
50    try:
51        setup()
52        while True:
53            loop()
54    except (Exception, KeyboardInterrupt) as e:
55        try:
56            from utility import print_error_msg
57
58            print_error_msg(e)
59        except ImportError:
60            print("please update to latest firmware")

UiFlow2 应用示例

example.png

tvoc_cores3_example.m5f2

class TVOCUnit

Constructors

class TVOCUnit(i2c, address)

使用指定的 I2C 接口和地址初始化 TVOCUnit。

参数:
  • i2c – 用于与传感器通信的 I2C 接口或 PAHUBUnit 对象。

  • address (int) – TVOC Unit 的 I2C 地址。默认为 0x58。

UiFlow2

init.png

Methods

TVOCUnit.available()

检查 TVOC/eCO2 单元是否可用。

TVOCUnit.set_baseline_co2_tvoc(co2eq, tvoc)

设置 CO2 和 TVOC 测量的基线值。

参数:
  • co2eq (int) – 要设置的 CO2 当量基线值。

  • tvoc (int) – 要设置的 TVOC 基线值。

UiFlow2

set_baseline_co2_tvoc.png

TVOCUnit.set_relative_humidity(humidity_per, temp_c)

设置相对湿度和温度,以实现准确的空气质量测量。

参数:
  • humidity_per (float) – 相对湿度,以百分比(%)表示。

  • temp_c (float) – 环境温度,单位为摄氏度 (°C)。

UiFlow2

set_relative_humidity.png

TVOCUnit.iaq_init()

为传感器初始化 IAQ(室内空气质量)算法。

TVOCUnit.measure_iaq()

测量 CO2 当量 (CO2eq) 和 TVOC 值。

TVOCUnit.get_iaq_baseline()

获取 CO2eq 和 TVOC 的 IAQ 算法基线值。

TVOCUnit.set_iaq_baseline(co2eq, tvoc)

设置先前记录的 IAQ 算法基线值,用于 CO2eq 和 TVOC。

参数:
  • co2eq – CO2 当量基线值。

  • tvoc – TVOC 基线值。

TVOCUnit.set_absolute_humidity(absolute_humidity)

设置传感器的绝对湿度补偿。若要禁用,请将该值设置为 0。

参数:

absolute_humidity – 要设置的绝对湿度值。

TVOCUnit.measure_test()

运行片上自检。

TVOCUnit.get_feature_set()

获取传感器的功能集。

TVOCUnit.measure_raw()

返回原始 H2 和 Ethanol 信号,用于部件验证和测试。

TVOCUnit.get_serial()

获取传感器序列 ID。

TVOCUnit.co2eq()

获取以百万分率 (ppm) 表示的二氧化碳当量 (CO2eq)。

UiFlow2

co2eq.png

TVOCUnit.baseline_co2eq()

获取 CO2eq 的基线值。

UiFlow2

baseline_co2eq.png

TVOCUnit.tvoc()

获取以十亿分之一(ppb)为单位的总挥发性有机化合物(TVOC)。

UiFlow2

tvoc.png

TVOCUnit.baseline_tvoc()

获取 TVOC 的基线值。

UiFlow2

baseline_tvoc.png

TVOCUnit.raw_h2()

获取原始 H2 信号值。

UiFlow2

raw_h2.png

TVOCUnit.raw_ethanol()

获取原始 Ethanol 信号值。

UiFlow2

raw_ethanol.png

TVOCUnit.convert_r_to_a_humidity(temp_c, r_humidity_perc, fixed_point)

根据传感器的公式将相对湿度转换为绝对湿度。

参数:
  • temp_c – 环境温度,单位为摄氏度 (°C)。

  • r_humidity_perc – 相对湿度,以百分比(%)表示。

  • fixed_point (bool) – 是否以 8.8 定点格式返回该值。默认为 True。