Initialize repository and implement low-power sleep wakeup
This commit is contained in:
BIN
Docs/docs/0.95寸120x240 AM010RT10206V0(1).pdf
Normal file
BIN
Docs/docs/0.95寸120x240 AM010RT10206V0(1).pdf
Normal file
Binary file not shown.
BIN
Docs/docs/433MHz_IPC_产品需求规格说明书_V1.2.docx
Normal file
BIN
Docs/docs/433MHz_IPC_产品需求规格说明书_V1.2.docx
Normal file
Binary file not shown.
516
Docs/docs/433MHz_IPC_产品需求规格说明书_V1.2.txt
Normal file
516
Docs/docs/433MHz_IPC_产品需求规格说明书_V1.2.txt
Normal file
@@ -0,0 +1,516 @@
|
||||
433MHz IPC 安防系统
|
||||
产品需求规格说明书
|
||||
(IPC + 手环 + 433MHz 传感器联动)
|
||||
供开发工程师评审讨论 · 仅需求描述,不含实施方案
|
||||
版本:V1.2 整理日期:2026年5月
|
||||
一、项目整体框架与系统拓扑
|
||||
本项目构建一套以 IPC 摄像头为中枢、手表/手环为随身告警终端、多类 433MHz 传感器为探测前端的本地安防联动系统,同时通过 WiFi 连接云端,向手机 APP 发送推送通知。
|
||||
1.1 系统组成
|
||||
组件
|
||||
硬件规格摘要
|
||||
角色
|
||||
IPC 摄像头
|
||||
720P 分辨率 / TFT LCD 屏( 2 寸,240×320 QVGA 最低)
|
||||
核心中枢
|
||||
手表 / 手环
|
||||
OLED 屏(1.6寸,128×64 建议)/ 2 块可充电纽扣电池
|
||||
随身接收端
|
||||
433MHz 传感器
|
||||
门磁、窗磁、PIR、烟感、气体、水浸、振动(7类+SOS)
|
||||
外挂发射端
|
||||
手机 APP
|
||||
iOS + Android,Google / Apple 推送后台
|
||||
远程管理端
|
||||
1.2 信号流向(需求层面描述)
|
||||
433MHz 传感器触发 → 发射固定编码信号(7 位二进制码)
|
||||
IPC 和手环各自独立接收该 433MHz 信号
|
||||
IPC 解码后:屏幕显示报警 ICON、闪光报警、通过 WiFi 推送手机通知
|
||||
手环解码后:OLED 显示报警 ICON + 自定义名称、LED 亮对应颜色、马达振动
|
||||
📌 注意:IPC 与手环均需独立接收 433MHz 信号,互不依赖;
|
||||
二、IPC 硬件需求
|
||||
2.1 核心硬件规格
|
||||
需求项
|
||||
规格要求
|
||||
优先级
|
||||
摄像头分辨率
|
||||
720P(1280×720)
|
||||
必须
|
||||
夜视能力
|
||||
室内黑暗状态下 10 米可看清实物
|
||||
必须
|
||||
TFT LCD 屏
|
||||
2寸,分辨率不低于 240×320(QVGA)
|
||||
必须
|
||||
433MHz 模块
|
||||
内置 433MHz 解码接收模块(被动接收,无需主动发射)
|
||||
必须
|
||||
配对孔
|
||||
机身预留配对针孔,按压约 3 秒触发配对模式
|
||||
必须
|
||||
报警闪灯
|
||||
接收到 433MHz 报警信号后开启闪光报警
|
||||
必须
|
||||
布防/撤防按键
|
||||
实体按键,快速切换布防 / 撤防状态(需要LED灯指示状态)
|
||||
必须
|
||||
WiFi 模块
|
||||
2.4GHz WiFi 联网,用于 APP 推送和云端同步
|
||||
必须
|
||||
LAN 接口
|
||||
有线以太网接口(RJ45)
|
||||
必须
|
||||
Flash 存储
|
||||
存储传感器配对信息(建议支持 ≥16 个传感器)
|
||||
必须
|
||||
2.2 摄像功能
|
||||
分辨率:720P(1280×720),摄像头
|
||||
夜视:室内黑暗场景,10 米距离可清晰辨认目标物
|
||||
建议采用 IR(红外)夜视方案;具体 LED 数量和照射角度由硬件团队评估
|
||||
2.3 TFT LCD 显示
|
||||
尺寸:2寸 TFT LCD
|
||||
分辨率:不低于 240×320(QVGA)
|
||||
显示内容涵盖:已配对传感器列表、配对流程指引、报警画面、布防/撤防状态
|
||||
ICON 规格:系统预设传感器图标,IPC 端建议 64×64px
|
||||
2.4 联网
|
||||
WiFi:2.4GHz 无线联网,用于推送报警通知至手机 APP
|
||||
LAN:RJ45 有线以太网接口
|
||||
推送通道:需接入 Google FCM(Android)和 Apple APNs(iOS)后台通讯服务
|
||||
三、手表 / 手环硬件与交互需求
|
||||
3.1 硬件规格
|
||||
需求项
|
||||
规格要求
|
||||
优先级
|
||||
OLED 屏
|
||||
1.6 寸,建议 128×64 分辨率
|
||||
必须
|
||||
433MHz 模块
|
||||
内置 433MHz 接收解码模块
|
||||
必须
|
||||
上/下移动按键
|
||||
用于 ICON 列表滚动选择(配对时使用)
|
||||
必须
|
||||
SOS 按键
|
||||
长按 5 秒 → IPC 绑定操作;短按 → 配对确认 / SOS 求救触发
|
||||
必须
|
||||
马达振动
|
||||
支持不同时长/频率振动模式(按传感器类型区分)
|
||||
必须
|
||||
LED 指示灯
|
||||
支持多色(红/橙/绿/蓝/紫/黄/青),与传感器代码颜色对应
|
||||
必须
|
||||
电池
|
||||
1 块可充电纽扣电池组
|
||||
必须
|
||||
配对指示灯
|
||||
配对模式下白色快闪(~3Hz),区别于正常报警
|
||||
必须
|
||||
3.2 按键功能定义
|
||||
按键
|
||||
短按动作
|
||||
长按动作
|
||||
▲ 上移键
|
||||
配对列表向上滚动 / 字符切换
|
||||
同时长按▲+▼ 3秒 → 进入配对模式
|
||||
▼ 下移键
|
||||
配对列表向下滚动 / 字符切换
|
||||
长按 2 秒 → 取消当前操作并退出配对
|
||||
SOS 键
|
||||
配对流程中确认保存(短按)/ 正常模式下发送 SOS 求救信号
|
||||
长按 5 秒 → 与 IPC 绑定操作(待确认)
|
||||
📌 注意:SOS 键的长按与短按功能需与开发确认优先级和防误触机制,避免日常使用中误发 SOS。
|
||||
3.3 马达振动模式(按传感器类型区分)
|
||||
每个报警周期间隔统一为 5 秒,屏幕同时显示传感器名称 + ICON + 颜色(最终客户自己确认具体对应项目)。具体振动参数见下表:
|
||||
编号
|
||||
传感器类型
|
||||
LED颜色
|
||||
振动次数
|
||||
单次时长
|
||||
间隔
|
||||
A
|
||||
🚪 门磁/窗磁
|
||||
● 红色
|
||||
1次短振
|
||||
300ms
|
||||
—
|
||||
B
|
||||
👤 PIR 人体感应
|
||||
● 橙色
|
||||
2次短振
|
||||
300ms
|
||||
200ms
|
||||
C
|
||||
🔥 烟雾传感器
|
||||
● 绿色
|
||||
3次短振
|
||||
200ms
|
||||
150ms
|
||||
D
|
||||
🆘 紧急按钮
|
||||
● 蓝色
|
||||
1次长振
|
||||
800ms
|
||||
—
|
||||
E
|
||||
💨 气体传感器
|
||||
● 紫色
|
||||
4次短振
|
||||
200ms
|
||||
100ms
|
||||
F
|
||||
💧 水浸传感器
|
||||
● 黄色
|
||||
2次长振
|
||||
600ms
|
||||
300ms
|
||||
G
|
||||
📳 振动传感器
|
||||
● 青色
|
||||
连续3次
|
||||
150ms
|
||||
100ms
|
||||
SOS
|
||||
🚨 SOS 求救
|
||||
● 红色闪烁
|
||||
持续长振
|
||||
1200ms循环
|
||||
—
|
||||
📌 注意:以上振动时长为参考需求,最终数值需客户确认后锁定,填入固件开发规格。
|
||||
四、传感器类型 · ICON · 颜色 · 代码对照最终客户自己确认具体对应项目)
|
||||
4.1 7类传感器完整映射表(含婴儿监控说明)—这些定义待定
|
||||
编号
|
||||
433码
|
||||
颜色
|
||||
图标类型
|
||||
传感器用途
|
||||
振动模式
|
||||
命名示例
|
||||
A
|
||||
0001
|
||||
🔴 红色 #FF5252
|
||||
🚪 门磁 / 窗磁
|
||||
进出口防护,最高优先级报警
|
||||
1次短振 300ms
|
||||
前门门磁
|
||||
B
|
||||
0010
|
||||
🟠 橙色 #FF9800
|
||||
👤 人体感应 PIR
|
||||
被动红外,检测移动人体
|
||||
2次短振 300ms+200ms间隔
|
||||
客厅PIR
|
||||
C
|
||||
0011
|
||||
🟢 绿色 #4CAF50
|
||||
🔥 烟雾传感器
|
||||
火灾早期预警
|
||||
3次短振 200ms+150ms间隔
|
||||
厨房烟感
|
||||
D
|
||||
0100
|
||||
🔵 蓝色 #2196F3
|
||||
🆘 紧急按钮
|
||||
人工手动触发报警
|
||||
1次长振 800ms
|
||||
卧室紧急
|
||||
E
|
||||
0101
|
||||
🟣 紫色 #9C27B0
|
||||
💨 气体传感器 CO/天然气
|
||||
气体泄漏检测
|
||||
4次短振 200ms+100ms间隔
|
||||
厨房气体
|
||||
F
|
||||
0110
|
||||
🟡 黄色 #FFC107
|
||||
💧 水浸传感器
|
||||
漏水积水检测
|
||||
2次长振 600ms+300ms间隔
|
||||
阳台水浸
|
||||
G
|
||||
0111
|
||||
🩵 青色 #00BCD4
|
||||
📳 振动传感器
|
||||
门窗/柜体振动监控
|
||||
连续3次 150ms+100ms间隔
|
||||
门窗振动
|
||||
SOS
|
||||
1000
|
||||
🔴 红色闪烁 #FF5252
|
||||
🚨 SOS 紧急求救(手环专用)
|
||||
手环独占,最高优先级
|
||||
持续长振 1200ms循环
|
||||
系统固定,不可命名
|
||||
关于 婴儿监控/婴儿报警 的映射建议:
|
||||
婴儿监控场景通常结合 PIR(人体感应,编号B)+ 声音探测,如需单独区分,可将某个传感器槽位保留给婴儿监控专用。
|
||||
建议在产品设计阶段确认:婴儿监控是否使用独立 433MHz 发射模块,还是复用现有 7 类之一(如 PIR)。
|
||||
4.2 ICON 设计规范要求
|
||||
图标
|
||||
描述
|
||||
IPC 尺寸
|
||||
手环尺寸
|
||||
格式
|
||||
🚪 门磁/窗磁
|
||||
门或窗户 + 磁感应符号,简洁线条风格
|
||||
64×64px
|
||||
32×32px
|
||||
PNG/SVG
|
||||
👤 PIR 人体感应
|
||||
人形轮廓 + 辐射波纹
|
||||
64×64px
|
||||
32×32px
|
||||
PNG/SVG
|
||||
🔥 烟雾传感器
|
||||
烟雾波纹 + 感应器图标
|
||||
64×64px
|
||||
32×32px
|
||||
PNG/SVG
|
||||
🆘 紧急按钮
|
||||
SOS 文字 + 圆形按钮图形
|
||||
64×64px
|
||||
32×32px
|
||||
PNG/SVG
|
||||
💨 气体传感器
|
||||
云状气体 + 感叹号
|
||||
64×64px
|
||||
32×32px
|
||||
PNG/SVG
|
||||
💧 水浸传感器
|
||||
水滴 + 积水波纹
|
||||
64×64px
|
||||
32×32px
|
||||
PNG/SVG
|
||||
📳 振动传感器
|
||||
窗户/门框 + 震动线
|
||||
64×64px
|
||||
32×32px
|
||||
PNG/SVG
|
||||
🚨 SOS 手环专用
|
||||
紧急符号 + 手环图形(专属)
|
||||
64×64px
|
||||
32×32px
|
||||
PNG/SVG
|
||||
🍼 婴儿监控(扩展)
|
||||
婴儿/摇篮图形,待确认是否独立
|
||||
64×64px
|
||||
32×32px
|
||||
PNG/SVG
|
||||
📌 注意:图标颜色与代码绑定关系已锁定,不允许调换。UI 团队出具正式图标后需同步至 IPC 固件和手环固件资源包。
|
||||
五、布防 / 撤防功能需求
|
||||
5.1 ZONE 区域定义
|
||||
区域
|
||||
名称
|
||||
特性
|
||||
说明
|
||||
ZONE 0
|
||||
永久布防区
|
||||
不可撤防
|
||||
分配到此区的传感器永远处于激活状态,触发后无论主机是否撤防都会报警,适合门磁/烟感等关键点位
|
||||
ZONE 1~N
|
||||
可控布防区
|
||||
可撤防/布防
|
||||
用户可通过手机 APP 或 IPC 实体按键手动切换布防/撤防状态,同一 ZONE 内所有传感器同步切换
|
||||
5.2 布防操作流程
|
||||
📌 注意:以下为需求流程描述,不包含具体实现方案。
|
||||
方式一:IPC 实体按键布防
|
||||
用户在 IPC 机身找到布防/撤防快捷键
|
||||
短按一次 → IPC TFT LCD 显示【布防确认】提示画面,列出即将布防的 ZONE 列表
|
||||
再次确认(按确认键)→ 系统进入布防状态
|
||||
IPC LCD 状态栏显示【已布防 🔒】标识,配对指示灯可常亮(颜色待定,建议红色)
|
||||
已绑定手环通过 433MHz 接收布防状态广播,手环 OLED 同步显示【布防中】状态图标
|
||||
手机 APP 收到推送通知:【系统已布防】
|
||||
5.3 撤防操作流程
|
||||
方式一:IPC 实体按键撤防
|
||||
用户在 IPC 机身按撤防/布防快捷键
|
||||
IPC LCD 显示【撤防确认】提示,显示当前已布防的 ZONE 列表
|
||||
用户确认 → 系统撤防(ZONE 0 始终不受影响,界面中标注【永久 - 不可撤防】)
|
||||
IPC LCD 状态栏切换为【已撤防 🔓】标识
|
||||
手环同步更新为撤防状态图标
|
||||
手机 APP 推送:【系统已撤防】
|
||||
特殊情况:报警触发时的撤防
|
||||
触发报警后,IPC LCD 显示【报警状态】页面(大字显示传感器名称 + ICON + 颜色闪烁)
|
||||
用户可通过 IPC 实体键或 APP 发出撤防指令
|
||||
ZONE 1~N 的传感器报警:撤防后停止报警
|
||||
ZONE 0 的传感器报警:无法通过撤防停止,须手动解除(具体解除方式待与开发方确认)
|
||||
5.4 布防/撤防状态显示规范
|
||||
状态
|
||||
IPC LCD 显示
|
||||
手环 OLED 显示
|
||||
指示灯
|
||||
APP 状态
|
||||
已布防
|
||||
状态栏:🔒 已布防 | ZONE 列表显示激活标志
|
||||
首页显示 🔒 + 已布防
|
||||
建议红色常亮
|
||||
安防状态:布防中
|
||||
已撤防
|
||||
状态栏:🔓 已撤防 | ZONE 列表显示撤防标志
|
||||
首页显示 🔓 + 已撤防
|
||||
熄灭或绿色
|
||||
安防状态:撤防中
|
||||
报警中
|
||||
全屏红色报警画面,显示传感器名称+ICON+颜色闪烁
|
||||
全屏 ICON + 名称 + LED 闪烁 + 振动
|
||||
红色快闪
|
||||
推送通知 + 报警页弹出
|
||||
ZONE 0 触发
|
||||
报警画面标注【永久区域 - 无法撤防】
|
||||
同报警中
|
||||
红色快闪持续
|
||||
推送通知带【高优先级】标签
|
||||
六、配对流程需求(详细步骤)
|
||||
6.1 IPC 端配对流程(5 步)
|
||||
Step 1 | 进入配对模式
|
||||
触发方式:用按压 IPC 机身配对孔,持续约 3 秒
|
||||
LCD 中央显示:扫描/天线动态大图标(建议 80×80px,带循环动画)
|
||||
顶部状态栏显示:【配对模式】 | 右侧小字:按 CANCEL 退出
|
||||
提示文字:第一行【请触发外部传感器】,第二行【等待 433MHz 信号…】(省略号动态)
|
||||
配对指示灯:蓝色快速闪烁(约 2Hz)
|
||||
超时机制:30 秒内无信号 → 自动退出,返回主界面
|
||||
Step 2 | 信号捕获确认
|
||||
触发条件:外部传感器发射 433MHz 信号,IPC 解码成功
|
||||
LCD 中央显示对应传感器彩色 ICON(建议 100×100px)+ 颜色背景块
|
||||
顶部显示:已捕获二进制代码(等宽放大,字体颜色与传感器颜色一致)
|
||||
ICON 下方显示:系统默认类型名(如【门磁/窗磁】)及代码
|
||||
操作提示:【✓ 确认键保存】 | 【← 返回重试】
|
||||
指示灯:从蓝色快闪切换为橙色常亮
|
||||
关键需求:如用户按返回键,则重新进入等待状态(不保存本次捕获)
|
||||
Step 3 | ZONE 区域分配
|
||||
进入条件:用户按确认键后自动跳入
|
||||
LCD 显示:横向排列所有可用 ZONE 选项(如 ZONE 0 / ZONE 1 / ZONE 2 …)
|
||||
当前选中项:高亮蓝色背景
|
||||
ZONE 0 特殊标注:红色字体显示【永久布防】标签
|
||||
ZONE 0 说明文字:★ ZONE 0 永久布防,不受撤防影响
|
||||
操作:IPC 实体左/右方向键切换 ZONE,确认键保存后进入命名步骤
|
||||
Step 4 | 自定义标识名称输入
|
||||
进入条件:ZONE 分配完成后自动跳入(可按返回键跳过)
|
||||
LCD 顶部:显示已选 ICON(缩略)+ 类型名 + 代码 + ZONE 编号(紧凑一行)
|
||||
名称输入框:矩形框,光标闪烁,支持字符逐个输入和退格删除
|
||||
字数限制:最多 8 个中文 / 16 个英文字母+数字;右下角实时显示剩余字数
|
||||
IPC 实体键仅支持英文/数字输入;中文名须通过手机 APP 输入后同步至 IPC
|
||||
跳过命名:按返回键可跳过,设备以默认类型名保存,后续可随时通过 APP 或 IPC 主界面补命名
|
||||
Step 5 | 配对完成确认
|
||||
LCD 显示:大号绿色 ✓ 图标 + 【配对成功】文字 + 传感器名称 + ICON + 颜色
|
||||
指示灯:绿色常亮 3 秒后自动熄灭
|
||||
3 秒后提示:【继续配对下一个?】 — 确认键继续 / 返回键退出配对模式
|
||||
主界面设备列表更新:新增条目(主行:自定义名称;副行:类型+代码+ZONE)
|
||||
联网时 APP 自动收到新设备信息;手环通过 433MHz 接收名称广播更新
|
||||
6.2 手环端配对流程(4 步),手表手环,手表时间。平时作为手表使用,显示数字时间。有报警状态显示报警ICON并闪对应光及马达震动
|
||||
Step 1 | 进入配对模式
|
||||
触发方式:同时长按 ▲ 上移键 + ▼ 下移键 约 3 秒
|
||||
防误触设计:必须同时按两键才能进入,避免单键误触
|
||||
屏幕显示:全屏天线/配对 ICON(32×32px),下方小字【配对模式 P-00】
|
||||
LED:白色快闪(约 3Hz),区别于正常报警颜色
|
||||
马达:短振 1 次(100ms),确认进入配对模式
|
||||
Step 2 | 上下键滚动选择传感器 ICON
|
||||
屏幕布局:3 行 ICON 列表(上一个 / 当前选中高亮 / 下一个)
|
||||
当前选中行:ICON 放大(建议 24×24px),主行显示名称,副行显示代码,右侧颜色指示条
|
||||
非选中行:ICON 缩小(16×16px),颜色降饱和
|
||||
▲ 向上 / ▼ 向下滚动,到达首尾时循环
|
||||
ICON 边框颜色与第四章对照表一致,选中时边框加粗
|
||||
Step 3 | 触发传感器,手环捕获代码
|
||||
用户触发目标 433MHz 传感器(如打开门磁、按下紧急按钮)
|
||||
手环解码成功:屏幕选中 ICON 边框快速闪烁 2 次
|
||||
代码匹配(与选中 ICON 一致):绿色闪 2 次 → 进入 Step 4
|
||||
代码不匹配:红色闪 3 次 + 短振 → 提示重新选择或重试
|
||||
超时:30 秒内无捕获 → 自动退出配对,返回 Step 1
|
||||
Step 4 | 确认保存,等待名称同步
|
||||
操作:短按 SOS 键确认保存配对信息
|
||||
屏幕:绿色 ✓ 图标(32×32px)+ 下方【已保存】+ 当前类型名+代码+颜色点
|
||||
LED:绿色常亮 2 秒后熄灭
|
||||
马达:长振 1 次(400ms)确认成功
|
||||
名称同步:IPC 完成命名后,手环自动通过 433MHz 接收名称广播并替换类型名为自定义名称
|
||||
退出:成功后 3 秒返回 Step 1 等待继续配对;无操作 10 秒退出配对模式
|
||||
取消:任意步骤长按 ▼ 下移键 2 秒,取消当前操作并退出
|
||||
七、手机 APP 功能需求
|
||||
7.1 核心功能列表
|
||||
设备绑定:扫描 QR 码或手动输入设备 ID,将 IPC 绑定至用户账户
|
||||
实时监控:查看 IPC 720P 直播画面(需云端中转或 P2P 方案)
|
||||
报警推送:接收 Google FCM(Android)/ Apple APNs(iOS)报警通知,通知标题显示传感器自定义名称
|
||||
布防/撤防控制:远程切换 ZONE 1~N 的布防/撤防状态;ZONE 0 仅展示,不可撤防
|
||||
传感器管理:查看已配对传感器列表(名称/类型/ZONE/在线状态)
|
||||
自定义命名:在 APP 内为每个传感器编辑中文/英文名称,保存后推送至 IPC 和手环
|
||||
报警历史:记录历史报警事件(时间/传感器名称/类型/处理状态)
|
||||
7.2 推送通知规范
|
||||
通知标题:传感器自定义名称(如【前门门磁】)
|
||||
通知内容:报警类型 + 时间(如【门磁触发报警 - 14:35:22】)
|
||||
ZONE 0 报警:在通知中附加【高优先级 / 无法撤防】标签
|
||||
SOS 求救:单独推送渠道,标题【紧急求救 SOS】,全量提醒(声音/振动不受静音影响)
|
||||
八、待确认事项清单(供工程师评审)
|
||||
序
|
||||
待确认事项
|
||||
影响范围
|
||||
建议处理方
|
||||
1
|
||||
7 种传感器的最终产品类型名称(当前占位符 A~G)
|
||||
ICON 图案 + 默认名称 + 固件资源包
|
||||
客户确认
|
||||
2
|
||||
是否需要独立的【婴儿监控】传感器类型(还是复用 PIR/振动)
|
||||
编码扩展 + ICON 新增 + 固件
|
||||
客户确认
|
||||
3
|
||||
各代码对应的震动时长(ms)具体数值最终确认
|
||||
手环固件振动驱动
|
||||
客户确认
|
||||
4
|
||||
手环 OLED 确切屏幕尺寸和分辨率
|
||||
ICON 大小 + 名称截断阈值
|
||||
硬件团队
|
||||
5
|
||||
IPC TFT LCD 确切分辨率
|
||||
字体和 ICON 像素规格
|
||||
硬件团队
|
||||
6
|
||||
手环配对确认键方案:SOS 键短按 还是 新增独立确认键
|
||||
交互设计 + 固件按键映射
|
||||
工程师评估
|
||||
7
|
||||
IPC 端中文名称输入:APP 输入后推送,还是 IPC 直接支持中文输入法
|
||||
固件输入法开发量
|
||||
工程师评估
|
||||
8
|
||||
手环 OLED 名称超宽:跑马灯横向滚动 还是 截断 + 省略号
|
||||
固件文字渲染逻辑
|
||||
工程师评估
|
||||
9
|
||||
IPC 最大传感器配对数量上限(建议 ≥16 个)
|
||||
Flash 存储规划
|
||||
工程师评估
|
||||
10
|
||||
手环名称同步:IPC 433MHz 广播名称的频率和触发时机
|
||||
手环接收逻辑
|
||||
工程师评估
|
||||
11
|
||||
ZONE 最大支持数量(建议 ≥4 个,ZONE 0 固定)
|
||||
UI 布防页设计 + 固件
|
||||
工程师评估
|
||||
12
|
||||
ZONE 0 触发后的报警解除机制
|
||||
报警管理逻辑
|
||||
需求确认
|
||||
13
|
||||
云端服务器区域及数据隐私合规要求(GDPR/国内数据合规等)
|
||||
后端选型
|
||||
法务/产品确认
|
||||
14
|
||||
IPC 与手环的 433MHz 广播是否存在干扰/冲突风险(多台 IPC 场景)
|
||||
RF 方案设计
|
||||
射频工程师
|
||||
15
|
||||
婴儿监控报警:是否需要摄像头音频侦测联动(哭声检测)
|
||||
IPC 音频算法需求
|
||||
客户确认
|
||||
九、版本记录
|
||||
版本
|
||||
日期
|
||||
变更说明
|
||||
V1.0
|
||||
—
|
||||
初始需求整理(433MHz IPC 原始文档)
|
||||
V1.1
|
||||
2026年5月
|
||||
新增自定义标识名称功能;细化配对 LCD 步骤指引;完善手环震动模式表
|
||||
V1.2
|
||||
2026年5月
|
||||
重新梳理项目整体框架;补充婴儿监控需求说明;完善布防/撤防详细步骤;增加 APP 需求章节;增加更多待确认事项
|
||||
—— 文件终(V1.2)· 本文件仅描述产品需求,不包含技术实施方案 ——
|
||||
BIN
Docs/docs/7A8013A2FC52BEB6199802DE1606FEDA.pdf
Normal file
BIN
Docs/docs/7A8013A2FC52BEB6199802DE1606FEDA.pdf
Normal file
Binary file not shown.
BIN
Docs/docs/9025A65B530C852CF9FA720F9600EEA0.pdf
Normal file
BIN
Docs/docs/9025A65B530C852CF9FA720F9600EEA0.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
Docs/docs/FCOB-2.7-S01240-RGBXX-A-9W(5v 2.5ma)(2).pdf
Normal file
BIN
Docs/docs/FCOB-2.7-S01240-RGBXX-A-9W(5v 2.5ma)(2).pdf
Normal file
Binary file not shown.
BIN
Docs/docs/LR690L接收芯片规格书_V1.5.pdf
Normal file
BIN
Docs/docs/LR690L接收芯片规格书_V1.5.pdf
Normal file
Binary file not shown.
BIN
Docs/docs/LT4455发射芯片规格书_V1.3.pdf
Normal file
BIN
Docs/docs/LT4455发射芯片规格书_V1.3.pdf
Normal file
Binary file not shown.
BIN
Docs/docs/SPEC LHS114TC-IF03 VER A.pdf
Normal file
BIN
Docs/docs/SPEC LHS114TC-IF03 VER A.pdf
Normal file
Binary file not shown.
323
Docs/docs/implementation_plan.html
Normal file
323
Docs/docs/implementation_plan.html
Normal file
File diff suppressed because one or more lines are too long
51
Docs/docs/implementation_plan.md
Normal file
51
Docs/docs/implementation_plan.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# 法语UI语言包与硬件SPI控制FCOB-2.7双模/单线幻彩RGB灯条实施计划书
|
||||
|
||||
## 目标说明
|
||||
修改手环固件,以支持**纯法语UI显示**,并将原本的单线Bit-bang驱动方式升级为通过**硬件SPI (引脚P2.3)** 控制 **FCOB-2.7(800kHz-1100kHz)** 单线自适应幻彩RGB灯条。
|
||||
|
||||
## 关键技术点
|
||||
|
||||
### 1. 硬件SPI引脚映射与冲突规避
|
||||
* **引脚映射**:配置 `P_SW1 = 0x04` 将SPI引脚切换至第二组:
|
||||
* `P2.2` -> SS (不使用)
|
||||
* `P2.3` -> MOSI (连接到 FCOB 灯条的 DIN 引脚)
|
||||
* `P2.4` -> MISO (不使用)
|
||||
* `P2.5` -> SCLK (原本连接到振动马达 MOTOR)
|
||||
* **马达引脚防抖/防噪处理**:
|
||||
由于 `P2.5` 是 SCLK 且物理上连接了马达,为避免发送SPI信号时 SCLK 高频信号导致马达异常颤动或常亮:
|
||||
* 在每次通过SPI写入24位RGB数据时,**临时将 P2.5 配置为高阻输入模式**(关闭引脚输出驱动能力),使 SCLK 信号无法物理输出到引脚。
|
||||
* 数据发送完成后,**立即将 P2.5 恢复为推挽输出模式**,以确保正常的马达振动控制。
|
||||
* 发送数据期间关闭总中断 `EA = 0`,以防时序被中断打断,发送完成后立即恢复 `EA = 1`。
|
||||
|
||||
### 2. SPI传输速率计算与比特编码 (针对 FCOB-2.7 规格)
|
||||
根据 FCOB-2.7 规格书:
|
||||
* **T0H** (0码高电平): `0.295μs`
|
||||
* **T0L** (0码低电平): `0.595μs`
|
||||
* **T1H** (1码高电平): `0.595μs`
|
||||
* **T1L** (1码低电平): `0.295μs`
|
||||
* **Trst** (复位低电平): `> 80μs`
|
||||
* 单码元周期: `0.295μs + 0.595μs = 0.89μs` (即 `1.12 MHz` 传输速率)。
|
||||
|
||||
**设计方案**:
|
||||
* **SPI时钟频率**:配置为 `SYSCLK / 8 = 3.0 MHz` (当系统时钟为24MHz时),对应的 SPI 每 bit 时间为 `333.3ns`。
|
||||
* **码元表示**:使用 **3位 SPI bit** 表示一个 FCOB 码元(24位 RGB 数据对应 72位 SPI 数据,高阶位在前,正好等于 9个 字节):
|
||||
* **0码**:SPI 编码为二进制 `100`。
|
||||
* 高电平时间 = 1 bit * 333.3ns = `333ns` (与规格书 295ns 偏差仅 38ns)
|
||||
* 低电平时间 = 2 bits * 333.3ns = `667ns` (与规格书 595ns 偏差仅 72ns)
|
||||
* **1码**:SPI 编码为二进制 `110`。
|
||||
* 高电平时间 = 2 bits * 333.3ns = `667ns` (与规格书 595ns 偏差仅 72ns)
|
||||
* 低电平时间 = 1 bit * 333.3ns = `333ns` (与规格书 295ns 偏差仅 38ns)
|
||||
* **复位信号**:禁用 SPI 模块,将 `P2.3` 强制拉低保持 `100μs`。
|
||||
|
||||
### 3. 法语界面翻译
|
||||
* 已完成所有界面显示内容的法语汉化工作,在 120x240 OLED 屏幕上自适应排版。
|
||||
|
||||
## 验证方案
|
||||
|
||||
### 自动化编译测试
|
||||
* 使用 Keil C251 重新编译项目,验证代码无报错(0 Errors)。
|
||||
|
||||
### 硬件测试
|
||||
* 烧录最新的 Hex 固件,利用串口命令进行 RGB 灯控制测试。
|
||||
* 观察 FCOB-2.7 灯条是否正常亮起相应颜色(红、绿、蓝、黄、紫、青、白)。
|
||||
* 确认在发送控制数据时马达没有产生误动作或噪鸣。
|
||||
73
Docs/docs/walkthrough.md
Normal file
73
Docs/docs/walkthrough.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# STC32G 手环项目工程与功能实现 Walkthrough
|
||||
|
||||
本项目完成了手环核心交互逻辑与状态机的所有开发,并特别针对新引入的 FCOB-2.7 规格 RGB 灯条进行了高精度的硬件驱动级重构。
|
||||
|
||||
## 实现功能摘要
|
||||
|
||||
### 1. 法语 UI 语言包支持 (French-Only UI)
|
||||
* **全界面翻译**:手环所有的 UI 屏幕显示内容均已替换为法语。
|
||||
* **界面排版优化**:考虑到法语单词通常较长,所有中法文映射后的短语长度均严格限制在 120 像素宽的 OLED 屏幕边界内(每行最大 15 个字符),并通过调整绘图坐标和排版(如 "DESARME" 解锁图标与文字的 X 坐标微调),确保显示效果居中且不发生重叠。
|
||||
* `WATCH` ➔ `MONTRE`
|
||||
* `ARMED` ➔ `ARME`
|
||||
* `DISARM` ➔ `DESARME`
|
||||
* `PAIR MENU` ➔ `MENU APPAI.`
|
||||
* `DOOR SENSOR` ➔ `DETEC. PORTE`
|
||||
* `PIR MOTION` ➔ `DETEC. PIR`
|
||||
* `SMOKE DETECT` ➔ `DETEC. FUMEE`
|
||||
* `GAS LEAK` ➔ `DETEC. GAZ`
|
||||
* `WATER FLOOD` ➔ `DETEC. EAU`
|
||||
* `SEARCHING...` ➔ `RECHERCHE...`
|
||||
* `TRIGGER SENSOR` ➔ `DECLENCH. CAPT`
|
||||
* `CODE FOUND` ➔ `CODE TROUVE`
|
||||
* `HOLD SOS TO SAVE` ➔ `MAINTENIR SOS`
|
||||
* `PAIR SUCCESS` ➔ `SUCCES APPAI.`
|
||||
* `PAIR TIMEOUT` ➔ `DELAI DEPASSE`
|
||||
* `NO SIGNAL FOUND` ➔ `AUCUN SIGNAL`
|
||||
* `PAIR FAILED` ➔ `ECHEC APPAI.`
|
||||
* `TYPE MISMATCH` ➔ `TYPE INCORRECT`
|
||||
* `EMIT SOS` ➔ `SOS EMIS`
|
||||
* `BAND TRIGGERED` ➔ `BRACELET ACTIF`
|
||||
* `BINDING IPC` ➔ `LIAISON IPC`
|
||||
* `TRANSMITTING...` ➔ `ENVOI EN COURS`
|
||||
|
||||
### 2. 硬件 SPI 控制 FCOB-2.7 幻彩 RGB 灯条
|
||||
为了实现对 FCOB-2.7 灯条的高精度和无毛刺控制,我们将传统的软件延时 Bit-bang 方式重构为了基于**硬件 SPI** 的信号调制驱动:
|
||||
* **引脚定义**:
|
||||
* 使用 `P_SW1 = 0x04` 将 SPI 引脚重定向到 `P2.2` (SS)、`P2.3` (MOSI)、`P2.4` (MISO)、`P2.5` (SCLK)。
|
||||
* `P2.3` (MOSI) 作为信号线连接到 FCOB 灯条的 DIN 端。
|
||||
* **时序匹配算法**:
|
||||
* 根据规格书提供的精密参数(T0H = 0.295μs, T0L = 0.595μs, T1H = 0.595μs, T1L = 0.295μs),设置 SPI 时钟为 `SYSCLK / 8 = 3.0 MHz`,每一个 SPI 比特宽度刚好为 `333.3ns`。
|
||||
* 采用 **3-bit 编码**:
|
||||
* **0 码** ➔ `100` 二进制(High: 333ns, Low: 667ns),与规格书的 295ns / 595ns 极为吻合。
|
||||
* **1 码** ➔ `110` 二进制(High: 667ns, Low: 333ns),与规格书的 595ns / 295ns 极为吻合。
|
||||
* 由于 3-bit 乘以 24 位刚好是 72 比特(即 9 字节),数据可以完美对齐成一个 9 字节的缓冲区。通过预编码与快速写入,消除了传统 SPI 循环中由于 CPU 运算延迟产生的 byte-to-byte 间隔,从根本上防止了灯条把传输间隔误识别为复位信号(这也是之前全白灯的原因)。
|
||||
* **硬件冲突规避设计**:
|
||||
* 由于 `P2.5` 是 SCLK 且物理上连接了马达,在 SPI 发送数据时,高频时钟会导致马达杂音或微动。
|
||||
* 我们在此次重构中设计了**双向模式临时切换机制**:在开始发送数据前,将 `P2.5` 配置为高阻输入模式(禁用硬件驱动器输出);当 24 位数据发送完毕并执行复位(将 P2.3 拉低 100μs)后,立即关闭 SPI 并将 `P2.5` 恢复为推挽输出模式。
|
||||
* 整个 SPI 发送期间关闭中断(`EA=0`),从而实现马达与 RGB 灯条在物理引脚共享上的完美隔离。
|
||||
|
||||
### 3. 自适应射频解码兼容性
|
||||
* 重构为**基于电平比例的自适应解码算法**。放宽绝对微秒窗口限制,通过低/高电平比例(15~48倍,基准为31倍)自动识别 EV1527 帧并解析数据。
|
||||
|
||||
### 4. 严格匹配要求的按键与事件交互逻辑
|
||||
* **进入配对菜单**:在待机模式下,同时长按 `▲` + `▼` 3秒,进入传感器类型选择菜单。
|
||||
* **进入对码搜索 (Pair Wait)**:在菜单中选择好类型后,短按 `SOS` 确认,此时触发 1 次 100ms 短振确认,且 LED 开启白色快闪(3Hz),进入雷达扫描信号接收。
|
||||
* **主动呼救 (Emit SOS)**:在待机模式下,短按 `SOS` 键,立刻切入求救模式并开始向外循环发射 433MHz 警报信号。
|
||||
* **IPC 对码绑定**:在待机模式下,长按 `SOS` 键 5秒,显示 BINDING IPC 页面,向外发射 1 次 433MHz 绑定信号(数据码为 0x01),维持 2 秒后自动返回待机。
|
||||
* **解除求救模式**:在求救模式下,长按任意一个按键(UP、DOWN 或 SOS),即可主动解除警报退回时钟待机。
|
||||
|
||||
### 5. 不接收/解析他人 SOS 广播
|
||||
* 手环只对已经配对存储在内部数据库(门磁、PIR、烟感、燃气、水浸)的传感器 ID 触发报警。
|
||||
* 防区轮询解码时客观过滤并排除 SOS 信号的被动接收。
|
||||
|
||||
### 6. 电池百分号显示修复与坐标复原
|
||||
* **字模基线对齐**:将 `%` 字符(0x25)的字模数据在 8x16 矩阵中向上平移 2 像素,使其与前面的数字处于同一水平基准线。
|
||||
* **坐标优化防重合**:将电池图标右移至 `X=92, Y=27`,电量百分比置于 `X=62, Y=24`。二者之间保留 6 像素间距,既美观又完美杜绝了贴合与重叠问题。
|
||||
|
||||
## 编译与 Git 仓库同步信息
|
||||
|
||||
* **编译器**:Keil C251 V5.60.0.0
|
||||
* **编译输出目标**:`Build\wristband.hex`
|
||||
* **编译状态**:0 Errors, 3 Warnings
|
||||
* **Program Size**:data=105.0, edata+hdata=351, xdata=370, const=1648, code=14237
|
||||
* **Git 仓库地址**:`https://dev.xtell.cn/zouhaitao/stc32g128k.git`
|
||||
146
Docs/docs/wristband_illustrated_flow.md
Normal file
146
Docs/docs/wristband_illustrated_flow.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# 手环端“全场景”图文并茂软件交互故事板
|
||||
|
||||
为了让开发与评审过程更加生动直观,本故事板将手环的**每一步软件逻辑**与**实际 OLED 屏幕(128x64)像素级 UI 画面**进行了一对一绑定,并列出了该步骤下的 LED 灯效、马达振动和按键逻辑。
|
||||
|
||||
---
|
||||
|
||||
## 📅 轮播:核心 OLED 界面快速预览(左滑/右滑)
|
||||
|
||||
````carousel
|
||||

|
||||
<!-- slide -->
|
||||

|
||||
<!-- slide -->
|
||||

|
||||
<!-- slide -->
|
||||

|
||||
<!-- slide -->
|
||||

|
||||
<!-- slide -->
|
||||

|
||||
<!-- slide -->
|
||||

|
||||
<!-- slide -->
|
||||

|
||||
<!-- slide -->
|
||||

|
||||
````
|
||||
|
||||
---
|
||||
|
||||
## 🗺️ 第一部分:待机与安防状态切换
|
||||
|
||||
### 1.1 待机模式(未加入布防)
|
||||

|
||||
|
||||
| 交互维度 | 规格详情与软件逻辑 |
|
||||
| :--- | :--- |
|
||||
| **触发动作** | 系统正常上电启动,或报警/配对结束后的常态。 |
|
||||
| **屏幕元素** | 1. 顶部状态栏:展示 `WATCH` 及 `85%` 电池图标。<br>2. 中央大字:`10:35` 数字时钟。<br>3. 底部小字:`THU 07-02` 星期与日期。 |
|
||||
| **LED 灯效** | 熄灭(无灯)。 |
|
||||
| **马达反馈** | 静止(不振动)。 |
|
||||
| **下一个状态** | 监听 433MHz 射频总线,等待警报、配对按键或布撤防通知。 |
|
||||
|
||||
---
|
||||
|
||||
### 1.2 系统布防状态(ARMED)
|
||||

|
||||
|
||||
| 交互维度 | 规格详情与软件逻辑 |
|
||||
| :--- | :--- |
|
||||
| **触发动作** | 接收到 IPC 发出的 433MHz 布防广播。 |
|
||||
| **屏幕元素** | 1. 状态栏左侧:显示 **红色闭锁 `🔒` 图标**,并滚动显示 **`已布防 ZONE 1-N`** 文字。<br>2. 中央与底部:保持正常的数字时钟和日期。 |
|
||||
| **LED 灯效** | **红色呼吸灯**(可配置常亮/慢闪,根据客户最终定义)。 |
|
||||
| **马达反馈** | 接收到广播瞬间短振 1 次(150ms)。 |
|
||||
|
||||
---
|
||||
|
||||
### 1.3 系统撤防状态(DISARMED)
|
||||

|
||||
|
||||
| 交互维度 | 规格详情与软件逻辑 |
|
||||
| :--- | :--- |
|
||||
| **触发动作** | 接收到 IPC 发出的 433MHz 撤防广播。 |
|
||||
| **屏幕元素** | 1. 状态栏左侧:显示 **绿色开锁 `🔓` 图标**,并显示 **`已撤防 ZONE 1-N`**。<br>2. 中央与底部:正常的数字时钟和日期。 |
|
||||
| **LED 灯效** | **绿色慢闪 3 次后熄灭**。 |
|
||||
| **马达反馈** | 接收到广播瞬间短振 1 次(150ms)。 |
|
||||
|
||||
---
|
||||
|
||||
## 🗺️ 第二部分:传感器对码配对流程(手环端 4 步)
|
||||
|
||||
### Step 1:进入配对模式(搜索信号)
|
||||

|
||||
|
||||
| 交互维度 | 规格详情与软件逻辑 |
|
||||
| :--- | :--- |
|
||||
| **触发动作** | 用户同时按下 **`▲`(上移键)+ `▼`(下移键)持续 3 秒**。 |
|
||||
| **屏幕元素** | 1. 顶部:高亮 `PAIRING MODE`。<br>2. 中央:**雷达天线波纹 `📡` 动态循环动画**。<br>3. 底部文字:滚动显示 `正在搜索 433MHz 信号... 请触发目标传感器`。 |
|
||||
| **LED 灯效** | **白色快速闪烁(3Hz)**,标识进入对码模式。 |
|
||||
| **马达反馈** | 进入瞬间短振 1 次(100ms),确认触发成功。 |
|
||||
| **超时机制** | **30 秒超时**。若 30 秒内未收到射频信号,退出配对返回时钟待机。 |
|
||||
|
||||
---
|
||||
|
||||
### Step 2:选择配对的传感器类型
|
||||

|
||||
|
||||
| 交互维度 | 规格详情与软件逻辑 |
|
||||
| :--- | :--- |
|
||||
| **操作方式** | 连续短按 **`▲`(上移键)** 或 **`▼`(下移键)** 进行滚动。 |
|
||||
| **屏幕元素** | 1. 顶部:`配对模式 P-00`(展示当前已配对数量)。<br>2. 中央:**3行滚动列表**,当前高亮项(如 `👤 人体感应 PIR`)有 **粗体外框** 且图标放大;上下两行未选中项显示暗淡。<br>3. 右侧:显示纵向滚动条指示器。 |
|
||||
| **LED 灯效** | 保持 **白色闪烁**。 |
|
||||
| **逻辑响应** | 用户需停留在要配对的传感器类型上(如停留在“PIR”),然后再去触发传感器物理开关。 |
|
||||
|
||||
---
|
||||
|
||||
### Step 3-A:对码匹配成功(通过校验)
|
||||

|
||||
|
||||
| 交互维度 | 规格详情与软件逻辑 |
|
||||
| :--- | :--- |
|
||||
| **触发动作** | 触发外部传感器,手环捕获的 433MHz 信号**与当前高亮选中的类型一致**,用户**短按 SOS 键**进行确认保存。 |
|
||||
| **屏幕元素** | 1. 中央:显示绿色 **大勾 `✓` 图标**。<br>2. 中下部:【对码已保存】。<br>3. 底部:显示已捕获的硬件十六进制地址码(如 `ADDR: 0x37A86 | TYPE: PIR`)。 |
|
||||
| **LED 灯效** | **绿色常亮 2 秒** 后熄灭。 |
|
||||
| **马达反馈** | 强力 **长振 1 次(400ms)** 确认成功保存。 |
|
||||
| **自动同步** | 保存后,手环会向 IPC 同步名称,当接收到 IPC 的自定义中文广播后,会将 `人体感应 PIR` 替换为自定义命名(如 `客厅红外`)。 |
|
||||
|
||||
---
|
||||
|
||||
### Step 3-B:对码不匹配(类型错误)
|
||||

|
||||
|
||||
| 交互维度 | 规格详情与软件逻辑 |
|
||||
| :--- | :--- |
|
||||
| **触发动作** | 触发外部传感器,但捕获的 433MHz 信号类型**与手环屏幕当前选中的高亮类型不匹配**(例如:手环选了门磁,用户却触发了红外)。 |
|
||||
| **屏幕元素** | 1. 报警边框:红色细边框。<br>2. 中央:红色 **大叉 `❌` 圆圈图标**。<br>3. 文字:【对码匹配失败】及副标题【代码类型不一致,请重试】。 |
|
||||
| **LED 灯效** | **红色快闪 3 次**。 |
|
||||
| **马达反馈** | 快速 **双击短振(100ms + 100ms)**,提示出错。 |
|
||||
| **后续响应** | 停留 2 秒后自动返回 Step 2 的列表选择页面。 |
|
||||
|
||||
---
|
||||
|
||||
## 🗺️ 第三部分:报警告警模式
|
||||
|
||||
### 2.1 传感器报警触发(以门磁为例)
|
||||

|
||||
|
||||
| 交互维度 | 规格详情与软件逻辑 |
|
||||
| :--- | :--- |
|
||||
| **触发动作** | 待机状态下,接收到已配对传感器的报警射频信号。 |
|
||||
| **屏幕元素** | 1. 警报边框:**红色闪烁虚线警告框**。<br>2. 中央:大尺寸传感器专用图标,本例为开门状态的 **`🚪 门` 图标**。<br>3. 底部文字:【🚪 前门门磁 触发】,第二行显示 ZONE 状态【ZONE 0 \| 红色报警】。 |
|
||||
| **LED 灯效** | 根据传感器映射表,亮起对应颜色的指示灯(门磁为 **红色常亮/快闪**)。 |
|
||||
| **马达反馈** | 触发门磁专属振动:**1次短振 300ms**,每 5 秒循环一次直到告警解除。 |
|
||||
|
||||
---
|
||||
|
||||
### 2.2 紧急 SOS 求救触发(最高优先级)
|
||||

|
||||
|
||||
| 交互维度 | 规格详情与软件逻辑 |
|
||||
| :--- | :--- |
|
||||
| **触发动作** | 用户在手环上短按 SOS 键,或接收到其它手环广播的 SOS 求救信号。 |
|
||||
| **屏幕元素** | 1. 警报边框:**红宽双边警告框**。<br>2. 中央:旋转警灯 **`🚨` 闪烁图标**。<br>3. 文字:【🚨 紧急求救 SOS】(大字),第二行【手环触发 \| 最高优先级】。 |
|
||||
| **LED 灯效** | **红色极速闪烁(5Hz)**。 |
|
||||
| **马达反馈** | **持续不间断长振**(以 1200ms 的长周期无缝循环强力振动),直到用户手动在手环上长按取消或在 IPC/APP 上点击解除。 |
|
||||
| **优先级** | 凌驾于所有其它 Zone 报警之上,直接抢占屏幕。 |
|
||||
86
Docs/docs/wristband_project_doc.md
Normal file
86
Docs/docs/wristband_project_doc.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# STC32G手环系统开发总结及开发计划
|
||||
|
||||
本项目基于STC32G12K128单片机,驱动信利AM010RT10206V0(AMOLED屏幕,控制芯片RM69310)与SGM3833电源芯片,实现了手环UI显示系统、按键消抖状态机、自适应射频解调和防区报警功能。
|
||||
|
||||
---
|
||||
|
||||
## 一、 已完成功能与代码实现总结
|
||||
|
||||
### 1. 硬件电源与驱动层修复
|
||||
* **SGM3833电源使能修复**:修复了原初始化流程中在 `LCD_Init()` 执行时拉低 `SGM_CTRL = 0` 的逻辑缺陷,改为保持高电平 `SGM_CTRL = 1` 使能,保证屏幕所需的 ±VELVDD 正负压与 VAVDD 稳定输出。
|
||||
* **字模基线与显示优化**:修复了 `Drivers/lcd_font.h` 中 `%` 字符(索引 0x25)的混乱点阵字模,将其在 8x16 矩阵中向上平移 2 像素对齐数字基线;并重构了电量显示坐标(电池图标 `X=92, Y=27`,电量百分比 `X=62, Y=24`),确保两器件拥有 6 像素的安全间距,完美杜绝字符乱码与重合。
|
||||
* **屏幕无闪烁刷新**:重构了状态重绘屏刷新机制,去除了主循环开头强制清除重绘标记的 Bug,改在 Redraw 块内清零;使得手环可以在捕获到对码信号的瞬间,立刻跳转到“对码确认”页面,不再卡顿于雷达搜索 UI。
|
||||
|
||||
### 2. 射频解码性能重构(遥控器配对失败修复)
|
||||
* **自适应时序算法**:抛弃了原先微秒级死宽度的硬编码限制(高电平放宽至 `50~2500us`,低电平放宽至 `1500~60000us`),改用低电平与高电平的时间比值(范围 `15` 至 `48` 倍,以 31 倍为基准)自动解调。自适应计算时钟基准 `T = low_time / 31`,支持匹配任意振荡电阻(150K至4.7M)的遥控器与探测器。
|
||||
* **CPU效率优化**:移除了接收抓包过程中 24 行脉冲宽度的串口阻塞式打印,将串口输出缩减到一行解码 Summary,使得单帧解析时间从 62.6ms 降至 2ms 以下,杜绝了多帧连续发射造成的丢包问题。
|
||||
|
||||
### 3. 按键与事件响应体系(完全匹配说明书)
|
||||
* **待机状态控制**:
|
||||
* **同时长按 ▲+▼ 3秒**:进入配对类型选择菜单。
|
||||
* **短按 SOS**:进入本机紧急呼救模式(`STATE_SOS_EMITTED`),背景循环发射 433MHz 警报信号。
|
||||
* **长按 SOS 5秒**:触发 IPC 摄像机对码绑定,屏幕显示 `BINDING IPC` 并发射一次对码广播(数据码 `0x01`),2秒后自动退回时钟。
|
||||
* **求救解除**:在求救模式下,长按任意一个物理按键(UP, DOWN 或 SOS),即可重置状态并安全退回时钟页面。
|
||||
* **屏蔽 SOS 被动报警**:只允许门磁、PIR、烟感、燃气、水浸(类型 0~4)等传感器配对并触发被动防区报警,强行过滤并排除 SOS 求救广播的被动接收,防止手环之间产生误报环路。
|
||||
|
||||
### 4. 外设控制与声光电反射矩阵(Timer1 ISR 中断实现)
|
||||
* **求救模式**:LED 红色以 5Hz 极速闪烁;马达以 1200ms 长振循环(振动 1000ms,静止 200ms)不间断工作。
|
||||
* **对码模式**:
|
||||
* 对码中:LED 始终保持 **白色快闪(3Hz)**。
|
||||
* 对码成功:LED **绿色常亮 2 秒**,马达 **强震 1 次(400ms)**,随后恢复时钟。
|
||||
* 对码超时/失败:LED **红色快闪 3 次**,马达 **双击快震(100ms+100ms)**。
|
||||
* **防区触发告警模式(5秒循环,特定声光组合)**:
|
||||
* *门磁/窗磁*:LED 红色常亮,马达 1 次短振 300ms。
|
||||
* *人体红外*(普通防区):LED 黄色,马达 2 次短振 300ms(间隔 200ms)。
|
||||
* *烟雾探测*(24h防区):LED 绿色,马达 3 次短振 200ms(间隔 150ms)。
|
||||
* *气体泄漏*(24h防区):LED 紫色,马达 4 次短振 200ms(间隔 100ms)。
|
||||
* *水浸溢出*(24h防区):LED 黄色,马达 2 次长振 600ms(间隔 300ms)。
|
||||
|
||||
### 5. 联调仿真交互层(免焊接外设调试)
|
||||
* **仿真指令注入**:支持通过电脑串口发送特定按键符号(`u/U`, `d/D`, `s/S`, `c`)模拟短按、长按、双键组合;发送 `'a'` 仿真门磁触发;发送 `'p'` 仿真对码接收。
|
||||
* **仿真状态改变输出**:在主循环中实时跟踪 LED 及 MOTOR 端口的电平跳变,并在串口实时输出其状态变化日志(例如 `[STATE] LED status -> R:1 G:0 B:0`),便于逻辑排查。
|
||||
* **状态切换模拟**:增加 `'1'`、`'2'`、`'3'` 串口指令,可人为强制手环分别在 NORMAL(常态)、ARMED(布防)、DISARMED(撤防)状态间任意切换,解决了由于按键复用导致无法手动布防普通防区(门磁/红外)进行报警测试的问题。
|
||||
|
||||
---
|
||||
|
||||
## 二、 工程代码文件 Landscape
|
||||
|
||||
手环端的主体源文件与职责划分如下:
|
||||
|
||||
1. **[App/main.c](file:///c:/workfile/105/stc32g12k128/App/main.c)**:
|
||||
* 系统业务状态机核心与 `main` 主循环。
|
||||
* `Timer1_Isr` 1ms 定时器中断服务(处理软件 RTC、按键消抖/长按/组合判定、LED 与马达闪烁波形生成)。
|
||||
* 对码列表数据库操作(配对防区存储与加载、IAP 写 Flash 与读取)。
|
||||
* UI 页面整体渲染与局部更新逻辑。
|
||||
2. **[App/config.h](file:///c:/workfile/105/stc32g12k128/App/config.h)**:
|
||||
* 公用数据结构(`Sensor_Slot`)与枚举变量(`SystemState`、`KeyEvent`)声明。
|
||||
* MAIN_Fosc(24MHz)及掉电保存 IAP 扇区基地址(`0xFE0000`)。
|
||||
3. **[Drivers/rf.c](file:///c:/workfile/105/stc32g12k128/Drivers/rf.c) / [rf.h](file:///c:/workfile/105/stc32g12k128/Drivers/rf.h)**:
|
||||
* LR690L 接收芯片与 LT4455 发射芯片的 GPIO 初始化及模式控制。
|
||||
* 自适应 EV1527 软件解码(`EV1527_Decode`)与主动发射(`EV1527_Transmit`)。
|
||||
4. **[Drivers/lcd.c](file:///c:/workfile/105/stc32g12k128/Drivers/lcd.c) / [lcd.h](file:///c:/workfile/105/stc32g12k128/Drivers/lcd.h)**:
|
||||
* AMOLED 屏幕 RM69310 的 SPI 写指令/写数据通道。
|
||||
* SGM3833 脉冲波形发送。
|
||||
* 底层写屏窗口(X轴偏移4像素补偏)与流式英文字符/单色位图绘制函数。
|
||||
5. **[Drivers/lcd_font.h](file:///c:/workfile/105/stc32g12k128/Drivers/lcd_font.h)**:
|
||||
* 时钟所需的图标及对码成功/失败、报警图标字模数据。
|
||||
* 标准的 8x16 ASCII 字模库。
|
||||
|
||||
---
|
||||
|
||||
## 三、 下一步开发任务计划
|
||||
|
||||
为使手环达到商用级产品水准,下一步开发计划如下:
|
||||
|
||||
* **1. 深度睡眠与超低功耗电源管理(最高优先级)**:
|
||||
* **屏幕休眠**:在无按键操作 10 秒后,通过 SPI 发送 `0x10` 命令使 AMOLED 进入 Sleep,同时拉低 `SGM_CTRL = 0` 关闭 SGM3833 的正负压输出。
|
||||
* **单片机停机**:调用 `PD` 指令使单片机进入 Power-Down 停机状态。
|
||||
* **外部中断唤醒**:配置按键引脚(P0.1, P0.2, P0.3)作为外部中断源唤醒单片机。
|
||||
* **2. LR690L 间歇性接收(Duty-Cycling)低功耗优化**:
|
||||
* LR690L 正常工作下消耗 3.5mA 电流。使用定时器控制 `SHUT` 引脚,每 100ms 唤醒 10ms 进行载波监听检测,无载波时继续休眠 90ms,实现接收功耗降低 80% 以上。
|
||||
* **3. 主机射频时间广播同步(RTC 自动校准)**:
|
||||
* 在被动接收中捕获 IPC 主机发送的特定同步帧(如数据码为 `0x09`),并提取时间信息自动校正 `current_hour` 与 `current_min`,保证时钟显示精准。
|
||||
* **4. 电池 ADC 电量采样与电量计算模型**:
|
||||
* 配置 `P2.3`(ADC3 通道)分压输入,读取电池电压,并建立锂电池放电曲线转换表,计算真实的 `0~100%` 剩余容量百分比动态输出到屏幕顶端,取代目前的静态电量指示。
|
||||
|
||||
<!-- Touched to align with lcd.c update 1783673510.8033595 -->
|
||||
609
Docs/docs/wristband_spec.html
Normal file
609
Docs/docs/wristband_spec.html
Normal file
@@ -0,0 +1,609 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>手环端软件交互与功能流程故事板</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
||||
background-color: #0B0F19;
|
||||
color: #E2E8F0;
|
||||
margin: 0;
|
||||
padding: 40px 20px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.container {
|
||||
max-width: 1000px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
h1 {
|
||||
font-size: 2.2rem;
|
||||
color: #00E5FF;
|
||||
text-align: center;
|
||||
margin-bottom: 10px;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
.subtitle {
|
||||
text-align: center;
|
||||
color: #94A3B8;
|
||||
font-size: 1.1rem;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.section-title {
|
||||
font-size: 1.5rem;
|
||||
color: #FFB74D;
|
||||
border-bottom: 2px solid #1E293B;
|
||||
padding-bottom: 8px;
|
||||
margin-top: 50px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
.card {
|
||||
background-color: #1E293B;
|
||||
border-radius: 12px;
|
||||
padding: 24px;
|
||||
margin-bottom: 30px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 24px;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,0.3);
|
||||
border: 1px solid #334155;
|
||||
transition: transform 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
.card:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 6px 24px rgba(0,0,0,0.4);
|
||||
}
|
||||
.screen-container {
|
||||
flex: 0 0 256px;
|
||||
height: 128px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 0 15px rgba(0,229,255,0.15);
|
||||
background-color: #0A0D14;
|
||||
}
|
||||
.details-container {
|
||||
flex: 1;
|
||||
}
|
||||
.step-name {
|
||||
font-size: 1.25rem;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
margin-top: 0;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
th, td {
|
||||
text-align: left;
|
||||
padding: 8px 12px;
|
||||
border-bottom: 1px solid #334155;
|
||||
}
|
||||
th {
|
||||
color: #94A3B8;
|
||||
font-weight: 600;
|
||||
width: 90px;
|
||||
}
|
||||
td {
|
||||
color: #E2E8F0;
|
||||
}
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: 2px 8px;
|
||||
border-radius: 4px;
|
||||
font-size: 0.8rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
.badge-red { background-color: #7f1d1d; color: #fca5a5; }
|
||||
.badge-green { background-color: #064e3b; color: #6ee7b7; }
|
||||
.badge-blue { background-color: #1e3a8a; color: #93c5fd; }
|
||||
.badge-orange { background-color: #7c2d12; color: #ffedd5; }
|
||||
.badge-white { background-color: #374151; color: #f3f4f6; }
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.card {
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
.screen-container {
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes flash {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.4; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>手环端软件交互与功能流程</h1>
|
||||
<div class="subtitle">1.6寸 OLED 屏幕像素级画面与系统行为对照故事板</div>\n <!-- SVG Mindmap -->\n <div class="card" style="flex-direction: column; align-items: stretch; background-color: #0D111A; border: 1px solid #1E293B;">\n <div class="step-name" style="text-align: center; color: #FFB74D;">手环软件系统功能架构脑图 (思维导图)</div>\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 480" width="100%" height="auto">
|
||||
<!-- Definitions for gradients and shadows -->
|
||||
<defs>
|
||||
<filter id="shadow" x="-5%" y="-5%" width="110%" height="110%">
|
||||
<feDropShadow dx="0" dy="2" stdDeviation="4" flood-color="#000000" flood-opacity="0.5"/>
|
||||
</filter>
|
||||
<linearGradient id="blueGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#00E5FF"/>
|
||||
<stop offset="100%" stop-color="#00838F"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="orangeGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#FFB74D"/>
|
||||
<stop offset="100%" stop-color="#EF6C00"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="purpleGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#E040FB"/>
|
||||
<stop offset="100%" stop-color="#7B1FA2"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="greenGrad" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#69F0AE"/>
|
||||
<stop offset="100%" stop-color="#00B0FF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
|
||||
<!-- Background Grid -->
|
||||
<rect width="800" height="480" fill="#0D111A" rx="12"/>
|
||||
|
||||
<!-- Connection Lines (Behind Nodes) -->
|
||||
<!-- Central connections -->
|
||||
<path d="M 400 240 L 220 120" stroke="#334155" stroke-width="2" fill="none"/>
|
||||
<path d="M 400 240 L 220 240" stroke="#334155" stroke-width="2" fill="none"/>
|
||||
<path d="M 400 240 L 220 360" stroke="#334155" stroke-width="2" fill="none"/>
|
||||
<path d="M 400 240 L 580 120" stroke="#334155" stroke-width="2" fill="none"/>
|
||||
<path d="M 400 240 L 580 240" stroke="#334155" stroke-width="2" fill="none"/>
|
||||
<path d="M 400 240 L 580 360" stroke="#334155" stroke-width="2" fill="none"/>
|
||||
|
||||
<!-- Sub connections Left -->
|
||||
<path d="M 120 120 L 40 100" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 120 120 L 40 140" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 120 240 L 40 220" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 120 240 L 40 260" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 120 360 L 40 340" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 120 360 L 40 380" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
|
||||
<!-- Sub connections Right -->
|
||||
<path d="M 680 120 L 760 100" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 680 120 L 760 140" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
|
||||
<path d="M 680 240 L 760 200" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 680 240 L 760 240" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 680 240 L 760 280" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
|
||||
<path d="M 680 360 L 760 300" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 680 360 L 760 340" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 680 360 L 760 380" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
<path d="M 680 360 L 760 420" stroke="#1E293B" stroke-width="1.5" fill="none"/>
|
||||
|
||||
<!-- Central Root Node -->
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="320" y="210" width="160" height="60" rx="30" fill="url(#blueGrad)"/>
|
||||
<text x="400" y="246" fill="#0A0D14" font-family="system-ui, sans-serif" font-size="16" font-weight="bold" text-anchor="middle">手环系统主逻辑</text>
|
||||
</g>
|
||||
|
||||
<!-- ================= LEFT SIDE NODES ================= -->
|
||||
<!-- Node L1: 待机时钟 -->
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="120" y="100" width="100" height="40" rx="6" fill="#1E293B" stroke="#00E5FF" stroke-width="1"/>
|
||||
<text x="170" y="125" fill="#00E5FF" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" text-anchor="middle">待机模式</text>
|
||||
</g>
|
||||
<!-- L1 Sub nodes -->
|
||||
<rect x="10" y="85" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="50" y="102" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">数字时间显示</text>
|
||||
<rect x="10" y="125" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="50" y="142" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">系统电量展示</text>
|
||||
|
||||
<!-- Node L2: 射频监听 -->
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="120" y="220" width="100" height="40" rx="6" fill="#1E293B" stroke="#00E5FF" stroke-width="1"/>
|
||||
<text x="170" y="245" fill="#00E5FF" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" text-anchor="middle">后台监测</text>
|
||||
</g>
|
||||
<!-- L2 Sub nodes -->
|
||||
<rect x="10" y="205" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="50" y="222" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">被动接收433M</text>
|
||||
<rect x="10" y="245" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="50" y="262" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">地址码合法校验</text>
|
||||
|
||||
<!-- Node L3: 安全防区 -->
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="120" y="340" width="100" height="40" rx="6" fill="#1E293B" stroke="#00E5FF" stroke-width="1"/>
|
||||
<text x="170" y="365" fill="#00E5FF" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" text-anchor="middle">防区状态</text>
|
||||
</g>
|
||||
<!-- L3 Sub nodes -->
|
||||
<rect x="10" y="325" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="50" y="342" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">🔒 已布防图标</text>
|
||||
<rect x="10" y="365" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="50" y="382" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">🔓 已撤防图标</text>
|
||||
|
||||
<!-- ================= RIGHT SIDE NODES ================= -->
|
||||
<!-- Node R1: 报警响应 -->
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="580" y="100" width="100" height="40" rx="6" fill="#1E293B" stroke="#FF1744" stroke-width="1"/>
|
||||
<text x="630" y="125" fill="#FF1744" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" text-anchor="middle">告警响应</text>
|
||||
</g>
|
||||
<!-- R1 Sub nodes -->
|
||||
<rect x="710" y="85" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="750" y="102" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">OLED显示警报</text>
|
||||
<rect x="710" y="125" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="750" y="142" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">LED点亮对应色</text>
|
||||
|
||||
<!-- Node R2: SOS紧急 -->
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="580" y="220" width="100" height="40" rx="6" fill="#1E293B" stroke="#FF1744" stroke-width="1"/>
|
||||
<text x="630" y="245" fill="#FF1744" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" text-anchor="middle">SOS呼救</text>
|
||||
</g>
|
||||
<!-- R2 Sub nodes -->
|
||||
<rect x="710" y="185" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="750" y="202" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">短按发送求救码</text>
|
||||
<rect x="710" y="225" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="750" y="242" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">马达持续长振</text>
|
||||
<rect x="710" y="265" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="750" y="282" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">长按5s绑定IPC</text>
|
||||
|
||||
<!-- Node R3: 配对对码 -->
|
||||
<g filter="url(#shadow)">
|
||||
<rect x="580" y="340" width="100" height="40" rx="6" fill="#1E293B" stroke="#FFB74D" stroke-width="1"/>
|
||||
<text x="630" y="365" fill="#FFB74D" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" text-anchor="middle">对码配对</text>
|
||||
</g>
|
||||
<!-- R3 Sub nodes -->
|
||||
<rect x="710" y="285" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="750" y="302" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="9" text-anchor="middle">同时按▲+▼进入</text>
|
||||
<rect x="710" y="325" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="750" y="342" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="9" text-anchor="middle">按▲/▼滚动选类型</text>
|
||||
<rect x="710" y="365" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="750" y="382" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="9" text-anchor="middle">物理触发捕获码</text>
|
||||
<rect x="710" y="405" width="80" height="26" rx="4" fill="#0F172A" stroke="#334155" stroke-width="1"/>
|
||||
<text x="750" y="422" fill="#E2E8F0" font-family="system-ui, sans-serif" font-size="9" text-anchor="middle">按SOS保存并同步</text>
|
||||
|
||||
</svg>\n </div>
|
||||
|
||||
<!-- Section 1 -->
|
||||
<div class="section-title">一、 待机与安全防区模式</div>
|
||||
|
||||
<!-- Card 1.1 -->
|
||||
<div class="card">
|
||||
<div class="screen-container">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="128" viewBox="0 0 256 128">
|
||||
<rect width="256" height="128" rx="8" fill="#0A0D14"/>
|
||||
<text x="12" y="20" fill="#5A6275" font-family="system-ui, sans-serif" font-size="10" font-weight="bold">WATCH</text>
|
||||
<rect x="210" y="11" width="22" height="10" rx="2" fill="none" stroke="#5A6275" stroke-width="1"/>
|
||||
<rect x="212" y="13" width="14" height="6" rx="1" fill="#00E5FF"/>
|
||||
<rect x="233" y="14" width="2" height="4" rx="1" fill="#5A6275"/>
|
||||
<text x="186" y="20" fill="#5A6275" font-family="system-ui, sans-serif" font-size="9">85%</text>
|
||||
<text x="128" y="85" fill="#00E5FF" font-family="system-ui, sans-serif" font-size="48" font-weight="bold" text-anchor="middle" letter-spacing="1">10:35</text>
|
||||
<text x="128" y="112" fill="#5A6275" font-family="system-ui, sans-serif" font-size="11" text-anchor="middle">THU 07-02</text>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="details-container">
|
||||
<div class="step-name">1.1 待机模式(未加入布防)</div>
|
||||
<table>
|
||||
<tr><th>触发动作</th><td>系统正常上电启动,或报警/配对结束后的常态。</td></tr>
|
||||
<tr><th>屏幕显示</th><td>顶部显示 WATCH 及电池百分比,中央大字显示数字时钟,底部显示星期日期。</td></tr>
|
||||
<tr><th>LED 灯效</th><td>关闭(无灯)</td></tr>
|
||||
<tr><th>马达反馈</th><td>静止(不振动)</td></tr>
|
||||
<tr><th>逻辑状态</th><td>433MHz 接收管使能,持续监听总线信号。</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card 1.2 -->
|
||||
<div class="card">
|
||||
<div class="screen-container">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="128" viewBox="0 0 256 128">
|
||||
<rect width="256" height="128" rx="8" fill="#0A0D14"/>
|
||||
<g transform="translate(12, 10)">
|
||||
<rect x="0" y="5" width="8" height="6" rx="1" fill="#FF1744"/>
|
||||
<path d="M2,5 L2,3 C2,1.5 6,1.5 6,3 L6,5" fill="none" stroke="#FF1744" stroke-width="1.5"/>
|
||||
<text x="14" y="11" fill="#FF1744" font-family="system-ui, sans-serif" font-size="9" font-weight="bold">已布防 ZONE 1-N</text>
|
||||
</g>
|
||||
<rect x="210" y="11" width="22" height="10" rx="2" fill="none" stroke="#5A6275" stroke-width="1"/>
|
||||
<rect x="212" y="13" width="14" height="6" rx="1" fill="#00E5FF"/>
|
||||
<rect x="233" y="14" width="2" height="4" rx="1" fill="#5A6275"/>
|
||||
<text x="128" y="85" fill="#00E5FF" font-family="system-ui, sans-serif" font-size="48" font-weight="bold" text-anchor="middle" letter-spacing="1">10:35</text>
|
||||
<text x="128" y="112" fill="#5A6275" font-family="system-ui, sans-serif" font-size="11" text-anchor="middle">THU 07-02</text>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="details-container">
|
||||
<div class="step-name">1.2 系统布防状态(ARMED)</div>
|
||||
<table>
|
||||
<tr><th>触发动作</th><td>接收到 IPC 发出的 433MHz 布防广播。</td></tr>
|
||||
<tr><th>屏幕显示</th><td>状态栏左侧显示 <span class="badge badge-red">🔒</span> 并滚动展示“已布防 ZONE 1-N”,其余保持时钟。</td></tr>
|
||||
<tr><th>LED 灯效</th><td>红色呼吸灯慢闪(根据客户要求配置)</td></tr>
|
||||
<tr><th>马达反馈</th><td>接收广播瞬间短振 1 次(150ms)</td></tr>
|
||||
<tr><th>逻辑状态</th><td>进入布防状态,后续除 ZONE 0 外,ZONE 1-N 的触发也会引发手环报警。</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card 1.3 -->
|
||||
<div class="card">
|
||||
<div class="screen-container">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="128" viewBox="0 0 256 128">
|
||||
<rect width="256" height="128" rx="8" fill="#0A0D14"/>
|
||||
<g transform="translate(12, 10)">
|
||||
<rect x="0" y="5" width="8" height="6" rx="1" fill="#00E676"/>
|
||||
<path d="M2,5 L2,3 C2,1.5 5,1.5 5,3 L5,4" fill="none" stroke="#00E676" stroke-width="1.5"/>
|
||||
<text x="14" y="11" fill="#00E676" font-family="system-ui, sans-serif" font-size="9" font-weight="bold">已撤防 ZONE 1-N</text>
|
||||
</g>
|
||||
<rect x="210" y="11" width="22" height="10" rx="2" fill="none" stroke="#5A6275" stroke-width="1"/>
|
||||
<rect x="212" y="13" width="14" height="6" rx="1" fill="#00E5FF"/>
|
||||
<rect x="233" y="14" width="2" height="4" rx="1" fill="#5A6275"/>
|
||||
<text x="128" y="85" fill="#00E5FF" font-family="system-ui, sans-serif" font-size="48" font-weight="bold" text-anchor="middle" letter-spacing="1">10:35</text>
|
||||
<text x="128" y="112" fill="#5A6275" font-family="system-ui, sans-serif" font-size="11" text-anchor="middle">THU 07-02</text>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="details-container">
|
||||
<div class="step-name">1.3 系统撤防状态(DISARMED)</div>
|
||||
<table>
|
||||
<tr><th>触发动作</th><td>接收到 IPC 发出的 433MHz 撤防广播。</td></tr>
|
||||
<tr><th>屏幕显示</th><td>状态栏左侧显示 <span class="badge badge-green">🔓</span> 并展示“已撤防 ZONE 1-N”,其余保持时钟。</td></tr>
|
||||
<tr><th>LED 灯效</th><td>绿色慢闪 3 次后熄灭</td></tr>
|
||||
<tr><th>马达反馈</th><td>接收广播瞬间短振 1 次(150ms)</td></tr>
|
||||
<tr><th>逻辑状态</th><td>系统处于撤防,ZONE 1-N 的探测触发将被忽略,但 ZONE 0 永久布防区仍能触发报警。</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Section 2 -->
|
||||
<div class="section-title">二、 传感器配对流程(手环端四步)</div>
|
||||
|
||||
<!-- Card 2.1 -->
|
||||
<div class="card">
|
||||
<div class="screen-container">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="128" viewBox="0 0 256 128">
|
||||
<rect width="256" height="128" rx="8" fill="#0A0D14"/>
|
||||
<text x="128" y="20" fill="#5A6275" font-family="system-ui, sans-serif" font-size="10" font-weight="bold" text-anchor="middle">PAIRING MODE</text>
|
||||
<g transform="translate(128, 56)" stroke="#FFB74D" fill="none" stroke-width="2">
|
||||
<circle cx="0" cy="0" r="4" fill="#FFB74D"/>
|
||||
<path d="M-8,-8 A12,12 0 0,1 8,-8" stroke-linecap="round"/>
|
||||
<path d="M-15,-15 A22,22 0 0,1 15,-15" stroke-linecap="round"/>
|
||||
<path d="M-22,-22 A32,32 0 0,1 22,-22" stroke-linecap="round" stroke-dasharray="2 2"/>
|
||||
</g>
|
||||
<text x="128" y="96" fill="#FFFFFF" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" text-anchor="middle">正在搜索 433MHz 信号...</text>
|
||||
<text x="128" y="114" fill="#FFB74D" font-family="system-ui, sans-serif" font-size="10" text-anchor="middle">请触发目标传感器 | P-00</text>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="details-container">
|
||||
<div class="step-name">Step 1:进入配对模式(搜索信号)</div>
|
||||
<table>
|
||||
<tr><th>触发动作</th><td>用户同时长按 <span class="badge badge-white">▲</span> + <span class="badge badge-white">▼</span> 按键 3 秒。</td></tr>
|
||||
<tr><th>屏幕显示</th><td>顶部展示 PAIRING MODE,中央显示天线雷达 <span class="badge badge-orange">📡</span> 波纹动态动画,底部提示等待信号。</td></tr>
|
||||
<tr><th>LED 灯效</th><td>白色快速闪烁(3Hz),以示配对工作状态</td></tr>
|
||||
<tr><th>马达反馈</th><td>短振 1 次(100ms)作为物理按键确认反馈</td></tr>
|
||||
<tr><th>超时机制</th><td>30 秒内若无信号输入,自动退出配对返回时钟待机。</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card 2.2 -->
|
||||
<div class="card">
|
||||
<div class="screen-container">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="128" viewBox="0 0 256 128">
|
||||
<rect width="256" height="128" rx="8" fill="#0A0D14"/>
|
||||
<text x="128" y="18" fill="#FFB74D" font-family="system-ui, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" letter-spacing="1">配对模式 P-00</text>
|
||||
<text x="24" y="44" fill="#374151" font-family="system-ui, sans-serif" font-size="11">🚪 门磁/窗磁</text>
|
||||
<rect x="12" y="54" width="232" height="28" rx="4" fill="none" stroke="#00E5FF" stroke-width="1.5"/>
|
||||
<rect x="220" y="62" width="12" height="12" rx="6" fill="#FF9800"/>
|
||||
<text x="24" y="72" fill="#FFFFFF" font-family="system-ui, sans-serif" font-size="13" font-weight="bold">👤 人体感应 PIR</text>
|
||||
<text x="24" y="102" fill="#374151" font-family="system-ui, sans-serif" font-size="11">🔥 烟雾传感器</text>
|
||||
<path d="M244,48 L244,96" stroke="#1F2937" stroke-width="2" stroke-linecap="round"/>
|
||||
<path d="M244,64 L244,80" stroke="#00E5FF" stroke-width="4" stroke-linecap="round"/>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="details-container">
|
||||
<div class="step-name">Step 2:滚动选择配对类型</div>
|
||||
<table>
|
||||
<tr><th>操作方式</th><td>短按 <span class="badge badge-white">▲</span> 或 <span class="badge badge-white">▼</span> 进行列表滚动。</td></tr>
|
||||
<tr><th>屏幕显示</th><td>展示 3 行滚动列表,当前选中行(如 PIR)加粗并加边框,右侧有滚动条指示。</td></tr>
|
||||
<tr><th>LED 灯效</th><td>持续白色快闪</td></tr>
|
||||
<tr><th>选中指示</th><td>选中类型的边框会变粗,并在右侧提示对应的专属颜色块。</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card 2.3 -->
|
||||
<div class="card">
|
||||
<div class="screen-container">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="128" viewBox="0 0 256 128">
|
||||
<rect width="256" height="128" rx="8" fill="#0A0D14"/>
|
||||
<circle cx="128" cy="42" r="22" fill="none" stroke="#00E676" stroke-width="3"/>
|
||||
<path d="M118,42 L125,49 L138,34" fill="none" stroke="#00E676" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<text x="128" y="88" fill="#00E676" font-family="system-ui, sans-serif" font-size="16" font-weight="bold" text-anchor="middle">对码已保存</text>
|
||||
<text x="128" y="110" fill="#B9F6CA" font-family="system-ui, sans-serif" font-size="12" text-anchor="middle">ADDR: 0x37A86 | TYPE: PIR</text>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="details-container">
|
||||
<div class="step-name">Step 3-A:配对保存成功</div>
|
||||
<table>
|
||||
<tr><th>触发动作</th><td>触发目标传感器,发射码与选择类型相符,短按 <span class="badge badge-white">SOS</span> 保存。</td></tr>
|
||||
<tr><th>屏幕显示</th><td>中央大号绿色 <span class="badge badge-green">✓</span> 图标,文字展示“对码已保存”及捕获的 24位地址码。</td></tr>
|
||||
<tr><th>LED 灯效</th><td>绿色常亮 2 秒后熄灭</td></tr>
|
||||
<tr><th>马达反馈</th><td>强力长振 1 次(400ms)确认写入成功</td></tr>
|
||||
<tr><th>名称同步</th><td>接收来自 IPC 摄像头的广播,自动用自定义中文名称替换默认传感器类型名称。</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card 2.4 -->
|
||||
<div class="card">
|
||||
<div class="screen-container">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="128" viewBox="0 0 256 128">
|
||||
<rect width="256" height="128" rx="8" fill="#0A0D14"/>
|
||||
<rect x="4" y="4" width="248" height="120" rx="6" fill="none" stroke="#FF1744" stroke-width="1.5"/>
|
||||
<circle cx="128" cy="42" r="22" fill="none" stroke="#FF1744" stroke-width="3"/>
|
||||
<path d="M118,32 L138,52 M138,32 L118,52" fill="none" stroke="#FF1744" stroke-width="4" stroke-linecap="round"/>
|
||||
<text x="128" y="88" fill="#FF1744" font-family="system-ui, sans-serif" font-size="16" font-weight="bold" text-anchor="middle">对码匹配失败</text>
|
||||
<text x="128" y="110" fill="#FF8A80" font-family="system-ui, sans-serif" font-size="11" text-anchor="middle">代码类型不一致,请重试</text>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="details-container">
|
||||
<div class="step-name">Step 3-B:对码匹配失败(类型不一致)</div>
|
||||
<table>
|
||||
<tr><th>触发动作</th><td>触发了传感器,但其发射的代码类型与手环当前选中的菜单类型不符。</td></tr>
|
||||
<tr><th>屏幕显示</th><td>红色大圆圈 <span class="badge badge-red">❌</span> 图标,大字“对码匹配失败”及提示“代码类型不一致”。</td></tr>
|
||||
<tr><th>LED 灯效</th><td>红色快闪 3 次</td></tr>
|
||||
<tr><th>马达反馈</th><td>双击快速短振(100ms + 100ms)</td></tr>
|
||||
<tr><th>自动恢复</th><td>界面停留 2 秒后,自动退回到 Step 2 传感器列表选择页面。</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Section 3 -->
|
||||
<div class="section-title">三、 报警告警模式</div>
|
||||
|
||||
<!-- Card 3.1 -->
|
||||
<div class="card">
|
||||
<div class="screen-container">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="128" viewBox="0 0 256 128">
|
||||
<rect width="256" height="128" rx="8" fill="#0A0D14"/>
|
||||
<rect x="4" y="4" width="248" height="120" rx="6" fill="none" stroke="#FF3D00" stroke-width="2" stroke-dasharray="8 4"/>
|
||||
<g transform="translate(116, 20)">
|
||||
<path d="M4,28 L4,2 L18,2 L18,28 Z" fill="none" stroke="#FF3D00" stroke-width="2"/>
|
||||
<path d="M4,2 L18,5 L18,25 L4,28 Z" fill="#FF3D00" opacity="0.8"/>
|
||||
<circle cx="14" cy="15" r="1.5" fill="#0A0D14"/>
|
||||
</g>
|
||||
<text x="128" y="82" fill="#FF3D00" font-family="system-ui, sans-serif" font-size="16" font-weight="bold" text-anchor="middle">🚪 前门门磁 触发</text>
|
||||
<text x="128" y="105" fill="#FF8A80" font-family="system-ui, sans-serif" font-size="12" text-anchor="middle">ZONE 0 | 红色报警</text>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="details-container">
|
||||
<div class="step-name">3.1 传感器报警触发(以门磁为例)</div>
|
||||
<table>
|
||||
<tr><th>触发动作</th><td>待机状态下,接收到已配对传感器发送的报警 433MHz 数据帧。</td></tr>
|
||||
<tr><th>屏幕显示</th><td>全屏红色闪烁虚线框,中央显示开门状态的 <span class="badge badge-red">🚪</span> 图标,底部显示自定义中文名称。</td></tr>
|
||||
<tr><th>LED 灯效</th><td>对应传感器专属颜色(门磁对应红色,PIR对应橙色,水浸对应黄色)</td></tr>
|
||||
<tr><th>马达反馈</th><td>对应传感器特定振动模式(门磁为:1次短振 300ms,每 5 秒循环一次)</td></tr>
|
||||
<tr><th>自动退出</th><td>报警发射停止后,5 秒自动超时退出,恢复时钟待机。</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Card 3.2 -->
|
||||
<div class="card">
|
||||
<div class="screen-container">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="128" viewBox="0 0 256 128">
|
||||
<rect width="256" height="128" rx="8" fill="#0A0D14"/>
|
||||
<rect x="4" y="4" width="248" height="120" rx="6" fill="none" stroke="#FF1744" stroke-width="2"/>
|
||||
<rect x="8" y="8" width="240" height="112" rx="4" fill="none" stroke="#FF1744" stroke-width="1" stroke-dasharray="6 3"/>
|
||||
<g transform="translate(116, 20)" fill="#FF1744">
|
||||
<rect x="2" y="18" width="20" height="6" rx="1"/>
|
||||
<path d="M4,18 C4,8 20,8 20,18 Z"/>
|
||||
<line x1="-4" y1="6" x2="2" y2="12" stroke="#FF1744" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="12" y1="-4" x2="12" y2="4" stroke="#FF1744" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="28" y1="6" x2="22" y2="12" stroke="#FF1744" stroke-width="2" stroke-linecap="round"/>
|
||||
</g>
|
||||
<text x="128" y="85" fill="#FF1744" font-family="system-ui, sans-serif" font-size="18" font-weight="bold" text-anchor="middle" letter-spacing="2">🚨 紧急求救 SOS</text>
|
||||
<text x="128" y="108" fill="#FFFFFF" font-family="system-ui, sans-serif" font-size="12" font-weight="bold" text-anchor="middle">手环触发 | 最高优先级</text>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="details-container">
|
||||
<div class="step-name">3.2 紧急 SOS 触发(最高优先级)</div>
|
||||
<table>
|
||||
<tr><th>触发动作</th><td>用户在手环上短按 SOS 键,或接收到其它手环广播的 SOS 求救信号。</td></tr>
|
||||
<tr><th>屏幕显示</th><td>红色宽警告边框,中央闪烁旋转警灯 <span class="badge badge-red">🚨</span>,全屏显示“紧急求救 SOS”。</td></tr>
|
||||
<tr><th>LED 灯效</th><td>红色极速闪烁(5Hz)</td></tr>
|
||||
<tr><th>马达反馈</th><td>持续不断的长周期振动(1200ms 长振循环),用于在危急状态下唤醒睡眠或提醒用户。</td></tr>
|
||||
<tr><th>解除机制</th><td>长按手环按键或在 IPC 主机/手机 APP 上点击“解除警报”。</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Section 4 -->
|
||||
<div class="section-title">四、 传感器与振动灯效映射表</div>
|
||||
<div class="card" style="flex-direction: column; background-color: #0F172A; border: 1px solid #334155;">
|
||||
<div class="step-name" style="color: #FFB74D;">7类传感器及手环动作参数汇总</div>
|
||||
<table style="font-size: 0.95rem; line-height: 1.8;">
|
||||
<thead>
|
||||
<tr style="border-bottom: 2px solid #334155; color: #94A3B8;">
|
||||
<th>代码</th>
|
||||
<th>类型</th>
|
||||
<th>LED 颜色</th>
|
||||
<th>振动模式</th>
|
||||
<th>单次振动时长</th>
|
||||
<th>振动间隔</th>
|
||||
<th>应用场景说明</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><b>0001 (A)</b></td>
|
||||
<td>🚪 门磁/窗磁</td>
|
||||
<td><span class="badge" style="background-color: #7f1d1d; color: #fca5a5;">● 红色</span></td>
|
||||
<td>1 次短振</td>
|
||||
<td>300 ms</td>
|
||||
<td>—</td>
|
||||
<td>进出口边界安全防护(最高优先级)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>0010 (B)</b></td>
|
||||
<td>👤 人体感应 PIR</td>
|
||||
<td><span class="badge" style="background-color: #7c2d12; color: #ffedd5;">● 橙色</span></td>
|
||||
<td>2 次短振</td>
|
||||
<td>300 ms</td>
|
||||
<td>200 ms</td>
|
||||
<td>室内移动探测及婴儿防翻身/攀爬监控</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>0011 (C)</b></td>
|
||||
<td>🔥 烟雾传感器</td>
|
||||
<td><span class="badge" style="background-color: #064e3b; color: #6ee7b7;">● 绿色</span></td>
|
||||
<td>3 次短振</td>
|
||||
<td>200 ms</td>
|
||||
<td>150 ms</td>
|
||||
<td>火灾烟雾探测与厨房安全监控</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>0100 (D)</b></td>
|
||||
<td>🆘 紧急按钮</td>
|
||||
<td><span class="badge" style="background-color: #1e3a8a; color: #93c5fd;">● 蓝色</span></td>
|
||||
<td>1 次长振</td>
|
||||
<td>800 ms</td>
|
||||
<td>—</td>
|
||||
<td>人工手动紧急一键求助呼叫</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>0101 (E)</b></td>
|
||||
<td>💨 气体传感器</td>
|
||||
<td><span class="badge" style="background-color: #581c87; color: #e9d5ff;">● 紫色</span></td>
|
||||
<td>4 次短振</td>
|
||||
<td>200 ms</td>
|
||||
<td>100 ms</td>
|
||||
<td>一氧化碳/天然气泄漏高危报警</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>0110 (F)</b></td>
|
||||
<td>💧 水浸传感器</td>
|
||||
<td><span class="badge" style="background-color: #78350f; color: #fef3c7;">● 黄色</span></td>
|
||||
<td>2 次长振</td>
|
||||
<td>600 ms</td>
|
||||
<td>300 ms</td>
|
||||
<td>水管漏水/积水外溢高湿防护</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>0111 (G)</b></td>
|
||||
<td>📳 振动传感器</td>
|
||||
<td><span class="badge" style="background-color: #134e5e; color: #e0f7fa;">● 青色</span></td>
|
||||
<td>连续 3 次</td>
|
||||
<td>150 ms</td>
|
||||
<td>100 ms</td>
|
||||
<td>保险柜/主门防撬外力振动监测</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>1000 (SOS)</b></td>
|
||||
<td>🚨 手环紧急求救</td>
|
||||
<td><span class="badge" style="background-color: #7f1d1d; color: #fca5a5; animation: flash 1s infinite;">● 红色闪烁</span></td>
|
||||
<td>持续长振</td>
|
||||
<td>1200 ms 循环</td>
|
||||
<td>—</td>
|
||||
<td>手环端独立发起最高优先级报警(凌驾所有Zone)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
Docs/docs/架构.odg
Normal file
BIN
Docs/docs/架构.odg
Normal file
Binary file not shown.
Reference in New Issue
Block a user