MQ Unit

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

支持以下产品:

MQ

UiFlow2应用示例

get MQ ADC value

在UiFlow2中打开 mq_core2_example.m5f2 项目.

此示例获取MQ Unit的 ADC 值并在屏幕上显示.

UiFlow2 代码块:

example.png

示例输出:

None

MicroPython 示例

get MQ ADC value

此示例获取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) – 工作模式.

选项:
  • 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 设置为开启时,读数有效时 LED 亮起,亮度与 ADC 值成正比,否则 LED 熄灭。

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()

获取加热器高低电平时间.

返回:

[high_level_time, low_level_time]

返回类型:

[int, int]

MicroPython 代码块:

times = mq_0.get_heat_time()
get_adc_value(precision)

获取ADC值.

参数:

precision (int) – 0 代表8位ADC数值,1 代表12位ADC数值.

返回:

ADC值.

返回类型:

int

UiFlow2 代码块:

get_adc_value.png

MicroPython 代码块:

value = mq_0.get_adc_value(1)
get_valid_tags()

检查ADC读数是否有效.

返回:

如果ADC读数有效,则返回 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位ADC数值,1 代表12位ADC数值.

返回:

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)