NCIR2 Unit
这个库是 Unit NCIR2 的驱动
支持以下产品:
UiFlow2 Example
红外温度测量显示
在 UiFlow2 上打开 m5cores3_ncir2_base_example.m5f2 项目。
本案例基于 M5Stack CoreS3,使用 NCIR2 红外测温模块实现实时温度测量,并在屏幕上显示当前温度、低温和高温报警阈值。
UiFlow2 代码块:
示例输出:
无
MicroPython Example
红外温度测量显示
本案例基于 M5Stack CoreS3,使用 NCIR2 红外测温模块实现实时温度测量,并在屏幕上显示当前温度、低温和高温报警阈值。
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 * 8from hardware import I2C 9from hardware import Pin 10from unit import NCIR2Unit 11import time 12 13 14title0 = None 15label_temp = None 16label_la = None 17label_ha = None 18label_temp_val = None 19label_la_val = None 20label_ha_val = None 21i2c0 = None 22ncir2_0 = None 23last_time = None 24 25 26def setup(): 27 global \ 28 title0, \ 29 label_temp, \ 30 label_la, \ 31 label_ha, \ 32 label_temp_val, \ 33 label_la_val, \ 34 label_ha_val, \ 35 i2c0, \ 36 ncir2_0, \ 37 last_time 38 M5.begin() 39 Widgets.fillScreen(0x222222) 40 title0 = Widgets.Title("Temperature meassure", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu24) 41 label_temp = Widgets.Label("Temp: ", 10, 116, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24) 42 label_la = Widgets.Label( 43 "low temp alarm value: ", 10, 50, 1.0, 0x0000FF, 0x222222, Widgets.FONTS.DejaVu18 44 ) 45 label_ha = Widgets.Label( 46 "high temp alarm value: ", 10, 80, 1.0, 0xFF0000, 0x222222, Widgets.FONTS.DejaVu18 47 ) 48 label_temp_val = Widgets.Label(" ", 95, 116, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24) 49 label_la_val = Widgets.Label(" ", 232, 50, 1.0, 0x0000FF, 0x222222, Widgets.FONTS.DejaVu18) 50 label_ha_val = Widgets.Label(" ", 239, 80, 1.0, 0xFF0000, 0x222222, Widgets.FONTS.DejaVu18) 51 52 i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000) 53 ncir2_0 = NCIR2Unit(i2c0, 0x5A) 54 last_time = time.ticks_ms() 55 label_la_val.setText(str(ncir2_0.get_temperature_threshold(0x20))) 56 label_ha_val.setText(str(ncir2_0.get_temperature_threshold(0x22))) 57 58 59def loop(): 60 global \ 61 title0, \ 62 label_temp, \ 63 label_la, \ 64 label_ha, \ 65 label_temp_val, \ 66 label_la_val, \ 67 label_ha_val, \ 68 i2c0, \ 69 ncir2_0, \ 70 last_time 71 M5.update() 72 if (time.ticks_diff((time.ticks_ms()), last_time)) > 500: 73 last_time = time.ticks_ms() 74 label_temp.setText(str((str((ncir2_0.get_temperature_value)) + str(" C")))) 75 76 77if __name__ == "__main__": 78 try: 79 setup() 80 while True: 81 loop() 82 except (Exception, KeyboardInterrupt) as e: 83 try: 84 from utility import print_error_msg 85 86 print_error_msg(e) 87 except ImportError: 88 print("please update to latest firmware")
示例输出:
无
API应用
NCIR2Unit
- class unit.hbridge.NCIR2Unit
创建一个 NCIR2Unit 对象。
- 参数:
i2c (I2C | PAHUBUnit) – I2C 端口
address (int) – NCIR2Unit 从机地址,默认为 0x5A。
UiFlow2 代码块:

MicroPython 代码块:
from unit import NCIR2Unit unit_ncir2_0 = NCIR2Unit(i2c0, 0x5A)
- get_temperature_value()
获取物体温度。
- returns:
物体温度(单位:℃)。
- rtype:
float
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_temperature_value()
- get_emissivity_value()
获取当前发射率。
- 返回:
发射率
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_emissivity_value()
- set_emissivity_value(emissive)
设置发射率。
根据被测材料的不同,会影响温度测量的准确性。
黑体的发射率为 1.00(理想的辐射体)。
光亮金属通常具有较低的发射率值(低于 0.1)。
像电工胶带或人体皮肤这样的黑暗、粗糙表面通常具有较高的发射率(高于 0.95)。
- Param:
发射率:范围:0 ~ 1。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_emissivity_value(emissive)
- get_temperature_threshold(alarm_reg)
获取温度报警阈值。
- Param:
int alarm_reg: ALARM_LOW_TEMP_REG:低温报警阈值寄存器,ALARM_HIGH_TEMP_REG:高温报警阈值寄存器。
- 返回:
报警阈值。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_temperature_threshold(alarm_reg)
- set_temperature_threshold(alarm_reg, temp)
设置温度报警阈值。
- Param:
int alarm_reg: 温度报警寄存器,ALARM_LOW_TEMP_REG:低温报警阈值寄存器,ALARM_HIGH_TEMP_REG:高温报警阈值寄存器。
- Param:
float temp: 报警阈值。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_temperature_threshold(alarm_reg, temp)
- get_temp_alarm_led(alarm_reg)
获取温度报警 RGB LED 颜色值。
- Param:
int alarm_reg: 温度报警 RGB LED 寄存器,RGB_LOW_TEMP_REG: 低温报警 RGB LED 寄存器,高温报警 RGB LED 寄存器。
- 返回:
温度报警 RGB LED 值。
- 返回类型:
list, RGB color list in the format [R, G, B], values from 0 to 255.
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_temp_alarm_led(alarm_reg)
- set_temp_alarm_led(alarm_reg, rgb)
设置温度报警 RGB LED 颜色值。
- Param:
int alarm_reg: 温度报警 RGB LED 寄存器,RGB_LOW_TEMP_REG: 低温报警 RGB LED 寄存器,高温报警 RGB LED 寄存器。
- 参数:
rgb (int) – RG 颜色值(24位,范围:0~0xFFFFFF)。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_temp_alarm_led(alarm_reg, rgb)
- get_temp_buzzer_freq(alarm_reg)
获取温度报警蜂鸣器鸣响频率。
- Param:
int alarm_reg: 温度报警蜂鸣器频率寄存器,LOW_TEMP_FREQ_REG: 低温报警蜂鸣器频率寄存器,HIGH_TEMP_FREQ_REG:高温报警蜂鸣器频率寄存器。
- 返回:
蜂鸣器频率。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_temp_buzzer_freq(alarm_reg)
- set_temp_buzzer_freq(alarm_reg, freq)
设置温度报警蜂鸣器频率。
- Param:
int alarm_reg: 温度报警蜂鸣器频率寄存器,LOW_TEMP_FREQ_REG: 低温报警蜂鸣器频率寄存器,HIGH_TEMP_FREQ_REG:高温报警蜂鸣器频率寄存器。
- Param:
int freq: 蜂鸣器频率,范围:20 ~ 20000 Hz。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_temp_buzzer_freq(alarm_reg, freq)
- get_temp_alarm_interval(alarm_reg)
获取蜂鸣器报警间隔。
- Param:
int alarm_reg: 蜂鸣器报警间隔寄存器,LOW_ALARM_INTER_REG: 低温报警间隔寄存器,HIGH_ALARM_INTER_REG:高温报警间隔寄存器。
- 返回:
蜂鸣器报警间隔(单位:ms)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_temp_alarm_interval(alarm_reg)
- set_temp_alarm_interval(alarm_reg, interval)
设置蜂鸣器报警间隔。
- Param:
int alarm_reg: 蜂鸣器报警间隔寄存器,LOW_ALARM_INTER_REG: 低温报警间隔寄存器,HIGH_ALARM_INTER_REG:高温报警间隔寄存器。
- Param:
int interval: 报警间隔,范围:1 ~ 5000 (ms)。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_temp_alarm_interval(alarm_reg, interval)
- get_temp_buzzer_duty(duty_reg)
获取温度报警蜂鸣器控制信号占空比。
- 参数:
duty_reg (int) – 温度报警蜂鸣器控制信号占空比寄存器,LOW_ALARM_DUTY_REG: 低温报警占空比寄存器,HIGH_ALARM_DUTY_REG:高温报警占空比寄存器。
- 返回:
占空比。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_temp_buzzer_duty(duty_reg)
- set_temp_buzzer_duty(duty_reg, duty)
设置温度报警蜂鸣器控制信号占空比。
- 参数:
duty_reg (int) – 温度报警蜂鸣器控制信号占空比寄存器,LOW_ALARM_DUTY_REG: 低温报警占空比寄存器,HIGH_ALARM_DUTY_REG:高温报警占空比寄存器。
- Param:
int duty: 温度报警蜂鸣器控制信号占空比,范围:0 ~ 255。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_temp_buzzer_duty(duty_reg, duty)
- get_buzzer_freq()
获取蜂鸣器控制信号频率。
- 返回:
频率(Hz)
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_buzzer_freq()
- set_buzzer_freq(freq)
设置蜂鸣器控制信号频率。
- Param:
int freq: 蜂鸣器控制信号频率,范围:20 ~ 20000(Hz)。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_buzzer_freq(freq)
- get_buzzer_duty()
获取蜂鸣器控制信号占空比。
- 返回:
占空比
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_buzzer_duty()
- set_buzzer_duty(duty)
设置蜂鸣器控制信号占空比。
- Param:
int duty: 占空比,范围:0 ~ 255。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_buzzer_duty(duty)
- get_buzzer_control()
获取蜂鸣器控制状态。
- 返回:
返回蜂鸣器控制状态。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_buzzer_control()
- set_buzzer_control(ctrl)
设置蜂鸣器控制状态。
- Param:
int ctrl: 控制值,0 为关闭蜂鸣器,1 为打开蜂鸣器。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_buzzer_control(ctrl)
- get_rgb_led()
获取当前 RGB LED 颜色值。
- 返回:
当前 RG LED 颜色值,格式:[r, g, b]。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_rgb_led()
- set_rgb_led(rgb)
设置 RGB LED 颜色值。
- Param:
int rgb: RGB 值,范围:0 ~ 0xFFFFFF。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_rgb_led(rgb)
- get_button_status()
获取按键状态。
- 返回:
按键状态,为 0(未按下)或 1(按下)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_button_status()
- save_config_setting()
保存配置。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.save_config_setting()
- get_chip_temperature()
获取芯片温度。
- 返回:
芯片温度(℃)。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_chip_temperature()
- get_device_spec(mode)
获取设备规格
- 返回:
设备规格
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.get_device_spec()
- set_i2c_address(addr)
设置设备 I2C 地址
- Param:
int addr: I2C 地址,范围:1 ~ 127。
UiFlow2 代码块:

MicroPython 代码块:
unit_ncir2_0.set_i2c_address(addr)

