MQ Unit
这是 MQ Unit 的驱动库,用于从 MQ 传感器获取数据。
支持以下产品:
UiFlow2 应用示例
获取 MQ ADC 值
在 UiFlow2 中打开 mq_core2_example.m5f2 项目。
该示例获取 MQ Unit 的 ADC 值,并将其显示在屏幕上。
UiFlow2 代码块:
示例输出:
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 代码块:

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 代码块:

MicroPython 代码块:
mq_0.set_mq_mode(1)
- get_mq_mode()
获取 MQ 传感器的当前工作模式。
- 返回:
当前工作模式值。
- 返回类型:
UiFlow2 代码块:

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。
- 返回类型:
MicroPython 代码块:
led_on = mq_0.get_led_status()
- set_heat_time(high_level_time=30, low_level_time=5)
设置加热器高电平和低电平时间。
UiFlow2 代码块:

MicroPython 代码块:
mq_0.set_heat_time(30, 5)
- get_heat_time()
获取加热器高电平和低电平持续时间。
MicroPython 代码块:
times = mq_0.get_heat_time()
- get_adc_value(precision)
获取 ADC 值。
UiFlow2 代码块:

MicroPython 代码块:
value = mq_0.get_adc_value(1)
- get_valid_tags()
检查是否检测到有效标签。
- 返回:
如果检测到有效标签,则为 True;否则为 False。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
valid = mq_0.get_valid_tags()
- get_ntc_adc_value(precision)
获取内部 NTC 的 ADC 值。
MicroPython 代码块:
ntc = mq_0.get_ntc_adc_value(1)
- get_ntc_res_value()
获取内部 NTC 电阻值。
- 返回:
电阻值。
- 返回类型:
MicroPython 代码块:
res = mq_0.get_ntc_res_value()
- get_voltage(channle)
从特定通道获取电压值。
MicroPython 代码块:
voltage = mq_0.get_voltage(0)
- get_firmware_version()
获取固件版本。
- 返回:
固件版本。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
ver = mq_0.get_firmware_version()
- get_i2c_address()
获取当前 I2C 地址。
- 返回:
MQ Unit I2C 地址,默认值为 0x11。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
addr = mq_0.get_i2c_address()


