MQ Unit

这是 MQ Unit 的驱动库,用于从 MQ 传感器获取数据。

支持以下产品:

MQ

UiFlow2 应用示例

获取 MQ ADC 值

在 UiFlow2 中打开 mq_core2_example.m5f2 项目。

该示例获取 MQ Unit 的 ADC 值,并将其显示在屏幕上。

UiFlow2 代码块:

example.png

示例输出:

None

MicroPython 应用示例

获取 MQ ADC 值

该示例获取 MQ Unit 的 ADC 值,并将其显示在屏幕上。

MicroPython 代码块:

 1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import os, sys, io
 6import M5
 7from M5 import *
 8import m5ui
 9import lvgl as lv
10from hardware import I2C
11from hardware import Pin
12from unit import MQUnit
13
14
15page0 = None
16label0 = None
17label1 = None
18label2 = None
19i2c0 = None
20mq_0 = None
21
22
23valid = None
24
25
26def setup():
27    global page0, label0, label1, label2, i2c0, mq_0, valid
28
29    M5.begin()
30    Widgets.setRotation(1)
31    m5ui.init()
32    page0 = m5ui.M5Page(bg_c=0xFFFFFF)
33    label0 = m5ui.M5Label(
34        "Valid Flag:",
35        x=1,
36        y=76,
37        text_c=0x000000,
38        bg_c=0xFFFFFF,
39        bg_opa=0,
40        font=lv.font_montserrat_16,
41        parent=page0,
42    )
43    label1 = m5ui.M5Label(
44        "ADC 8bits:0",
45        x=1,
46        y=111,
47        text_c=0x000000,
48        bg_c=0xFFFFFF,
49        bg_opa=0,
50        font=lv.font_montserrat_16,
51        parent=page0,
52    )
53    label2 = m5ui.M5Label(
54        "ADC 12bits:0",
55        x=1,
56        y=145,
57        text_c=0x000000,
58        bg_c=0xFFFFFF,
59        bg_opa=0,
60        font=lv.font_montserrat_16,
61        parent=page0,
62    )
63
64    i2c0 = I2C(0, scl=Pin(33), sda=Pin(32), freq=100000)
65    mq_0 = MQUnit(i2c0, 0x11)
66    mq_0.set_mq_mode(1)
67    page0.screen_load()
68
69
70def loop():
71    global page0, label0, label1, label2, i2c0, mq_0, valid
72    M5.update()
73    valid = mq_0.get_valid_tags()
74    if valid:
75        label0.set_text(str((str("Valid Flag:") + str(valid))))
76        label1.set_text(str((str("ADC 8bits:") + str((mq_0.get_adc_value(0))))))
77        label2.set_text(str((str("ADC 12bits:") + str((mq_0.get_adc_value(1))))))
78    else:
79        label0.set_text(str("Valid Flag: Wait heating"))
80
81
82if __name__ == "__main__":
83    try:
84        setup()
85        while True:
86            loop()
87    except (Exception, KeyboardInterrupt) as e:
88        try:
89            m5ui.deinit()
90            from utility import print_error_msg
91
92            print_error_msg(e)
93        except ImportError:
94            print("please update to latest firmware")

示例输出:

None

API参考

MQUnit

class unit.mq.MQUnit(i2c, address=17)

基类:object

创建一个 MQUnit 对象。

参数:
  • i2c (I2C) – MQ Unit 连接到的 I2C 总线。

  • address (int) – 设备的 I2C 地址。默认值为 0x11。

UiFlow2 代码块:

init.png

MicroPython 代码块:

from hardware import I2C
from unit import MQUnit

i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000)
tof_0 = MQUnit(i2c0)
set_mq_mode(mode=1)

设置 MQ 传感器的工作模式。

参数:

mode (int) – 工作模式值。

Option:
  • 0:测量关闭

  • 1:连续加热模式

  • 2:引脚电平切换模式

UiFlow2 代码块:

set_mq_mode.png

MicroPython 代码块:

mq_0.set_mq_mode(1)
get_mq_mode()

获取 MQ 传感器的当前工作模式。

返回:

当前工作模式值。

返回类型:

int

UiFlow2 代码块:

get_mq_mode.png

MicroPython 代码块:

mode = mq_0.get_mq_mode()
set_led_status(status)

设置 LED 状态。

参数:

status (int) – 当 LED 被设置为开启时,在检测到有效标签时会点亮,且亮度与 ADC 值成正比;未检测到标签时则熄灭。

MicroPython 代码块:

mq_0.set_led_status(1)
get_led_status()

获取 LED 状态。

返回:

如果 LED 状态为开启则返回 True,否则返回 False。

返回类型:

bool

MicroPython 代码块:

led_on = mq_0.get_led_status()
set_heat_time(high_level_time=30, low_level_time=5)

设置加热器高电平和低电平时间。

参数:
  • high_level_time (int) – 高加热等级的持续时间。

  • low_level_time (int) – 低档加热持续时间。

UiFlow2 代码块:

set_heat_time.png

MicroPython 代码块:

mq_0.set_heat_time(30, 5)
get_heat_time()

获取加热器高电平和低电平持续时间。

返回:

[高电平时间, 低电平时间]

返回类型:

[int, int]

MicroPython 代码块:

times = mq_0.get_heat_time()
get_adc_value(precision)

获取 ADC 值。

参数:

precision (int) – 0 表示 8-bit,1 表示 12-bit。

返回:

ADC 值。

返回类型:

int

UiFlow2 代码块:

get_adc_value.png

MicroPython 代码块:

value = mq_0.get_adc_value(1)
get_valid_tags()

检查是否检测到有效标签。

返回:

如果检测到有效标签,则为 True;否则为 False。

返回类型:

bool

UiFlow2 代码块:

get_valid_tags.png

MicroPython 代码块:

valid = mq_0.get_valid_tags()
get_ntc_adc_value(precision)

获取内部 NTC 的 ADC 值。

参数:

precision (int) – 0 表示 8-bit,1 表示 12-bit。

返回:

NTC ADC 值。

返回类型:

int

MicroPython 代码块:

ntc = mq_0.get_ntc_adc_value(1)
get_ntc_res_value()

获取内部 NTC 电阻值。

返回:

电阻值。

返回类型:

int

MicroPython 代码块:

res = mq_0.get_ntc_res_value()
get_voltage(channle)

从特定通道获取电压值。

参数:

channle (int) – 通道编号。

返回:

电压值。

返回类型:

int

MicroPython 代码块:

voltage = mq_0.get_voltage(0)
get_firmware_version()

获取固件版本。

返回:

固件版本。

返回类型:

int

UiFlow2 代码块:

get_firmware_version.png

MicroPython 代码块:

ver = mq_0.get_firmware_version()
get_i2c_address()

获取当前 I2C 地址。

返回:

MQ Unit I2C 地址,默认值为 0x11。

返回类型:

int

UiFlow2 代码块:

get_i2c_address.png

MicroPython 代码块:

addr = mq_0.get_i2c_address()
set_i2c_address(addr)

设置新的 I2C 地址。

参数:

addr (int) – 新 I2C 地址(0x08~0x77)。

UiFlow2 代码块:

set_i2c_address.png

MicroPython 代码块:

mq_0.set_i2c_address(0x3A)