NCIR2 Unit

该库是 Unit NCIR2 的驱动程序。

支持以下产品:

Unit NCIR2

UiFlow2 应用示例

红外温度显示

在 UiFlow2 中打开 m5cores3_ncir2_base_example.m5f2 项目。

该示例使用 M5Stack CoreS3 开发板搭配 NCIR2 红外温度传感器实时测量温度,并在屏幕上显示当前温度值以及低温和高温报警阈值。

UiFlow2 代码块:

m5cores3_ncir2_base_example.png

示例输出:

None

MicroPython 应用示例

红外温度显示

该示例使用 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")

示例输出:

None

API参考

NCIR2Unit

class unit.hbridge.NCIR2Unit

创建一个 NCIR2Unit 对象。

参数:
  • i2c (I2C | PAHUBUnit) – I2C 端口,

  • address (int) – NCIR2Unit 从机地址,默认为 0x5A。

UiFlow2 代码块:

init.png

MicroPython 代码块:

from unit import NCIR2Unit

unit_ncir2_0 = NCIR2Unit(i2c0, 0x5A)
get_temperature_value()

获取对象温度。

returns:

object 温度(单位:℃)

rtype:

float

UiFlow2 代码块:

get_temperature_value.png

MicroPython 代码块:

unit_ncir2_0.get_temperature_value()
get_emissivity_value()

获取当前发射率。

返回:

发射率。

返回类型:

float

UiFlow2 代码块:

get_emissivity_value.png

MicroPython 代码块:

unit_ncir2_0.get_emissivity_value()
set_emissivity_value(emissive)

设置发射率。

根据被测材料的不同,它会影响温度测量精度。

  • 黑体的发射率为 1.00(理想发射体)。

  • 闪亮的金属通常具有较低的发射率值(低于 0.1)。

  • 像电工胶带或人体皮肤这类深色、粗糙的表面通常具有较高的发射率(高于 0.95)。

Param:

int emissive:发射率,范围:0 ~ 1。

UiFlow2 代码块:

set_emissivity_value.png

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:高温报警阈值寄存器。

返回:

报警阈值。

返回类型:

float

UiFlow2 代码块:

get_temperature_threshold.png

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

set_temperature_threshold.png

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_HIGH_TEMP_REG:高温报警 RGB LED 值寄存器。

返回:

温度报警 RGB LED 值。

返回类型:

list, RGB color list in the format [R, G, B], values from 0 to 255.

UiFlow2 代码块:

get_temp_alarm_led.png

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_HIGH_TEMP_REG:高温报警 RGB LED 值寄存器。

参数:

rgb (int) – RGB 颜色值(24 位,范围:0 ~ 0xFFFFFF)。

UiFlow2 代码块:

set_temp_alarm_led.png

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:高温报警蜂鸣器频率寄存器。

返回:

蜂鸣器频率。

返回类型:

int

UiFlow2 代码块:

get_temp_buzzer_freq.png

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

set_temp_buzzer_freq.png

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)

返回类型:

int

UiFlow2 代码块:

get_temp_alarm_interval.png

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

set_temp_alarm_interval.png

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:高温报警占空比寄存器。

返回:

占空比。

返回类型:

int

UiFlow2 代码块:

get_temp_buzzer_duty.png

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:

温度报警蜂鸣器信号占空比,范围:0 ~ 255。

UiFlow2 代码块:

set_temp_buzzer_duty.png

MicroPython 代码块:

unit_ncir2_0.set_temp_buzzer_duty(duty_reg, duty)
get_buzzer_freq()

获取蜂鸣器信号的频率。

返回:

频率 (Hz)

返回类型:

int

UiFlow2 代码块:

get_buzzer_freq.png

MicroPython 代码块:

unit_ncir2_0.get_buzzer_freq()
set_buzzer_freq(freq)

设置蜂鸣器信号的频率。

Param:

int freq: 蜂鸣器信号频率,范围:20 ~ 20000 (Hz)。

UiFlow2 代码块:

set_buzzer_freq.png

MicroPython 代码块:

unit_ncir2_0.set_buzzer_freq(freq)
get_buzzer_duty()

获取蜂鸣器信号的占空比。

返回:

占空比

返回类型:

int

UiFlow2 代码块:

get_buzzer_duty.png

MicroPython 代码块:

unit_ncir2_0.get_buzzer_duty()
set_buzzer_duty(duty)

设置蜂鸣器信号的占空比。

Param:

int duty:占空比,范围:0 ~ 255。

UiFlow2 代码块:

set_buzzer_duty.png

MicroPython 代码块:

unit_ncir2_0.set_buzzer_duty(duty)
get_buzzer_control()

获取蜂鸣器控制状态

返回:

返回当前蜂鸣器控制状态

返回类型:

int

UiFlow2 代码块:

get_buzzer_control.png

MicroPython 代码块:

unit_ncir2_0.get_buzzer_control()
set_buzzer_control(ctrl)

设置蜂鸣器控制状态

Param:

int ctrl:控制值,0 表示关闭蜂鸣器,1 表示打开蜂鸣器

UiFlow2 代码块:

set_buzzer_control.png

MicroPython 代码块:

unit_ncir2_0.set_buzzer_control(ctrl)
get_rgb_led()

获取当前 RGB LED 的值

返回:

当前 RGB LED 值,格式为 [r, g, b]

返回类型:

list

UiFlow2 代码块:

get_rgb_led.png

MicroPython 代码块:

unit_ncir2_0.get_rgb_led()
set_rgb_led(rgb)

设置 RGB LED 值

Param:

int rgb:RGB 值,范围为 0 ~ 0xFFFFFF

UiFlow2 代码块:

set_rgb_led.png

MicroPython 代码块:

unit_ncir2_0.set_rgb_led(rgb)
get_button_status()

获取按钮状态

返回:

按键状态,为 0(未按下)或 1(按下)

返回类型:

bool

UiFlow2 代码块:

get_button_status.png

MicroPython 代码块:

unit_ncir2_0.get_button_status()
save_config_setting()

保存配置设置

UiFlow2 代码块:

save_config_setting.png

MicroPython 代码块:

unit_ncir2_0.save_config_setting()
get_chip_temperature()

获取芯片温度

返回:

芯片温度(摄氏度(°C))

返回类型:

float

UiFlow2 代码块:

get_chip_temperature.png

MicroPython 代码块:

unit_ncir2_0.get_chip_temperature()
get_device_spec(mode)

获取设备规格参数

返回:

设备规格

返回类型:

int

UiFlow2 代码块:

get_device_spec.png

MicroPython 代码块:

unit_ncir2_0.get_device_spec()
set_i2c_address(addr)

设置设备的 I2C 地址

Param:

int addr:I2C 地址范围:1 ~ 127。

UiFlow2 代码块:

set_i2c_address.png

MicroPython 代码块:

unit_ncir2_0.set_i2c_address(addr)