TMOS Unit
支持以下产品:
MicroPython 应用示例
import os, sys, io
import M5
from M5 import *
from unit import TMOSUnit
from hardware import *
title0 = None
label0 = None
title1 = None
title2 = None
TMOSTest = None
label1 = None
label2 = None
label3 = None
i2c0 = None
tmos_0 = None
def tmos_0_presence_detect_event(arg):
global title0, label0, title1, title2, TMOSTest, label1, label2, label3, i2c0, tmos_0
label1.setText(str((str("Prescence Flag:") + str((tmos_0.get_presence_state())))))
label0.setText(str((str("Prescence:") + str((tmos_0.get_presence_value())))))
def tmos_0_motion_detect_event(arg):
global title0, label0, title1, title2, TMOSTest, label1, label2, label3, i2c0, tmos_0
label3.setText(str((str("Motion Flag:") + str((tmos_0.get_motion_state())))))
label2.setText(str((str("Motion:") + str((tmos_0.get_motion_value())))))
def tmos_0_presence_not_detected_event(arg):
global title0, label0, title1, title2, TMOSTest, label1, label2, label3, i2c0, tmos_0
label1.setText(str((str("Prescence Flag:") + str((tmos_0.get_presence_state())))))
def tmos_0_motion_not_detected_event(arg):
global title0, label0, title1, title2, TMOSTest, label1, label2, label3, i2c0, tmos_0
label3.setText(str((str("Motion Flag:") + str((tmos_0.get_motion_state())))))
def setup():
global title0, label0, title1, title2, TMOSTest, label1, label2, label3, i2c0, tmos_0
M5.begin()
Widgets.fillScreen(0x222222)
title0 = Widgets.Title("Title", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18)
label0 = Widgets.Label("Prescence:", 2, 65, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
title1 = Widgets.Title("Title", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18)
title2 = Widgets.Title("Title", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18)
TMOSTest = Widgets.Title("Title", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18)
label1 = Widgets.Label(
"Prescence Flag", 2, 98, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
)
label2 = Widgets.Label("Motion:", 2, 130, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
label3 = Widgets.Label("Motion Flag:", 2, 160, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000)
title0.setText("TMOS Test")
tmos_0 = TMOSUnit(i2c0, 0x5A)
tmos_0.set_callback(tmos_0_presence_detect_event, tmos_0.PRESENCE_DETECT)
tmos_0.set_callback(tmos_0_motion_detect_event, tmos_0.MOTION_DETECT)
tmos_0.set_callback(tmos_0_presence_not_detected_event, tmos_0.PRESENCE_NOT_DETECTED)
tmos_0.set_callback(tmos_0_motion_not_detected_event, tmos_0.MOTION_NOT_DETECTED)
label0.setText(str("Prescence:"))
label1.setText(str("Prescence Flag:"))
label2.setText(str("Motion:"))
label3.setText(str("Motion Flag:"))
print(tmos_0.get_gain_mode())
def loop():
global title0, label0, title1, title2, TMOSTest, label1, label2, label3, i2c0, tmos_0
M5.update()
tmos_0.tick_callback()
if __name__ == "__main__":
try:
setup()
while True:
loop()
except (Exception, KeyboardInterrupt) as e:
try:
from utility import print_error_msg
print_error_msg(e)
except ImportError:
print("please update to latest firmware")
UiFlow2 应用示例
class TMOSUnit
Constructors
- class TMOSUnit(i2c0, address)
创建一个 TMOSUnit 对象。
- 参数:
i2c – I2C 对象
address – I2C 地址,默认为 0x5A
UIFLOW2:

Methods
- TMOSUnit.get_data_ready() bool
获取 TMOSUnit(TAMBIENT、TOBJECT、TAMB_SHOCK、TPRESENCE、TMOTION)的数据更新状态。
- 返回:
TMOSUnit 的数据更新状态。
UIFLOW2:

- TMOSUnit.set_callback(self, handler, trigger: Literal[0, 1, 2, 3, 4, 5])
为不同触发条件设置回调函数。
- 参数:
handler – 要设置的回调函数。
trigger – 用于设置处理函数的事件触发器: -
ambient temperature:0 -motion:1 -presence:2 -ambient temperature not:3 -motion not:4 -presence not:5
UIFLOW2:

- TMOSUnit.tick_callback(self)
检查 TMOSUnit 的状态,并根据事件标志执行相应的回调函数。
该方法应定期调用,用于轮询传感器状态并处理检测到的任何事件。
它会检查以下标志位,并在标志位被设置时触发对应的回调函数:
ambient temperature(0):表示环境温度冲击事件。motion(1):表示检测到运动事件。presence(2):表示一次存在检测事件。ambient temperature not(3):表示未发生环境温度冲击事件。motion not(4):表示未发生运动检测事件。presence not(5):表示未发生存在检测事件。
与这些事件关联的回调函数通过
set_callback()方法进行设置。UIFLOW2:

- TMOSUnit.get_tambient_shock_threshold() int
获取 Tambient 冲击检测算法的环境温度冲击阈值。
- return:
TMOSUnit 的环境温度冲击阈值。
UIFLOW2:

- TMOSUnit.get_tambient_shock_hysteresis() int
获取环境温度冲击检测算法的迟滞值。
- return:
TMOSUnit 的环境温度冲击滞后。
UIFLOW2:

- TMOSUnit.set_gain_mode(val) None
设置 TMOS 的增益模式(注意:DEFAULT 模式灵敏度高,但容易导致传感器过饱和;WIDE 模式检测距离短,但可避免传感器饱和)
- 参数:
val (int) – 增益模式 选项: -
GAIN_WIDE_MODE:0 -GAIN_DEFAULT_MODE:7
UIFLOW2:

- TMOSUnit.set_motion_threshold(val)
设置运动检测算法的运动阈值。
- 参数:
val (int) – 运动阈值 (0x0~0x7FFF)
- 返回:
设置成功了吗?
UIFLOW2:

- TMOSUnit.set_presence_threshold(val) bool
设置存在检测算法的存在阈值。
- 参数:
val (int) – 存在检测阈值 (0x0~0x7FFF)
- 返回:
设置成功了吗?
UIFLOW2:

- TMOSUnit.set_tambient_shock_threshold(val) bool
设置环境温度冲击检测算法的环境温度冲击阈值。
- 参数:
val (int) – 环境温度冲击阈值 (0x0~0x7FFF)
- 返回:
设置成功了吗?
UIFLOW2:

- TMOSUnit.set_tambient_shock_hysteresis(val)
设置环境温度冲击检测算法的滞回值。
- 参数:
val (int) – 环境温度冲击回滞(0x0~0xFF)
UIFLOW2:

- TMOSUnit.set_lpf_p_bandwidth(val) None
设置用于存在检测的低通滤波器配置。
- 参数:
val (int) – 低通滤波器的配置值。选项: -
TMOSUnit.STHS34PF80_LPF_ODR_DIV_9:ODR/9,0 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_20:ODR/20,1 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_50:ODR/50,2 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_100:ODR/100,3 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_200:ODR/200,4 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_400:ODR/400,5 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_800:ODR/800,6
- TMOSUnit.set_lpf_a_t_bandwidth(val) None
设置用于环境温度冲击检测的低通滤波器配置。
- 参数:
val (int) – 低通滤波器的配置值。选项: -
TMOSUnit.STHS34PF80_LPF_ODR_DIV_9:ODR/9,0 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_20:ODR/20,1 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_50:ODR/50,2 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_100:ODR/100,3 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_200:ODR/200,4 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_400:ODR/400,5 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_800:ODR/800,6
- TMOSUnit.set_lpf_p_m_bandwidth(val) None
设置用于存在与运动检测的低通滤波器配置。
- 参数:
val (int) – 低通滤波器的配置值。选项: -
TMOSUnit.STHS34PF80_LPF_ODR_DIV_9:ODR/9,0 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_20:ODR/20,1 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_50:ODR/50,2 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_100:ODR/100,3 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_200:ODR/200,4 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_400:ODR/400,5 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_800:ODR/800,6
- TMOSUnit.set_lpf_m_bandwidth(val) None
设置用于运动检测的低通滤波器配置。
- 参数:
val (int) – 低通滤波器的配置值。选项: -
TMOSUnit.STHS34PF80_LPF_ODR_DIV_9:ODR/9,0 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_20:ODR/20,1 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_50:ODR/50,2 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_100:ODR/100,3 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_200:ODR/200,4 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_400:ODR/400,5 -TMOSUnit.STHS34PF80_LPF_ODR_DIV_800:ODR/800,6
- TMOSUnit.set_avg_tobj_num(val) None
设置用于对对象温度进行平均的采样次数。
- 参数:
val (int) – 用于配置要进行平均的采样数量。选项: -
TMOSUnit.STHS34PF80_AVG_TMOS_2:RMS 噪声:90,0 -TMOSUnit.STHS34PF80_AVG_TMOS_8:RMS 噪声:50,1 -TMOSUnit.STHS34PF80_AVG_TMOS_32:RMS 噪声:25,2 -TMOSUnit.STHS34PF80_AVG_TMOS_128:RMS 噪声:20,3 -TMOSUnit.STHS34PF80_AVG_TMOS_256:RMS 噪声:15,4 -TMOSUnit.STHS34PF80_AVG_TMOS_512:RMS 噪声:12,5 -TMOSUnit.STHS34PF80_AVG_TMOS_1024:RMS 噪声:11,6 -TMOSUnit.STHS34PF80_AVG_TMOS_2048:RMS 噪声:10,7
- TMOSUnit.set_avg_tamb_num(val) None
设置用于对环境温度进行平均的采样次数。
- 参数:
val (int) – 用于配置要进行平均的采样次数。选项: -
TMOSUnit.STHS34PF80_AVG_T_8:0 -TMOSUnit.STHS34PF80_AVG_T_4:1 -TMOSUnit.STHS34PF80_AVG_T_2:2 -TMOSUnit.STHS34PF80_AVG_T_1:3
- TMOSUnit.set_tmos_odr(val) None
设置 TMOS 的输出数据速率
- 参数:
val (int) – TMOS 输出数据速率 选项: -
TMOSUnit.STHS34PF80_TMOS_ODR_OFF:ODR 频率 (Hz):关机模式,0 -TMOSUnit.STHS34PF80_TMOS_ODR_AT_0Hz25:ODR 频率 (Hz):0.25,1 -TMOSUnit.STHS34PF80_TMOS_ODR_AT_0Hz50:ODR 频率 (Hz):0.5,2 -TMOSUnit.STHS34PF80_TMOS_ODR_AT_1Hz:ODR 频率 (Hz):1,3 -TMOSUnit.STHS34PF80_TMOS_ODR_AT_2Hz:ODR 频率 (Hz):2,4 -TMOSUnit.STHS34PF80_TMOS_ODR_AT_4Hz:ODR 频率 (Hz):4,5 -TMOSUnit.STHS34PF80_TMOS_ODR_AT_8Hz:ODR 频率 (Hz):8,6 -TMOSUnit.STHS34PF80_TMOS_ODR_AT_15Hz:ODR 频率 (Hz):15,7 -TMOSUnit.STHS34PF80_TMOS_ODR_AT_30Hz:ODR 频率 (Hz):30,8
- TMOSUnit.refresh_state() self
获取 TMOSUnit 的当前状态,包括人体存在检测、运动检测以及环境温度冲击检测。
- 返回:
具有更新状态标志的 TMOSUnit 实例。

















