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

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

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 设置为开启时,读数有效时 LED 亮起,亮度与 ADC 值成正比,否则 LED 熄灭。
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()
检查ADC读数是否有效.
- 返回:
如果ADC读数有效,则返回 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_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()


