Files

68 lines
7.1 KiB
Markdown
Raw Permalink Normal View History

# 细化需求 (Docs/20_requirements-detail/main.md)
本章节定义手环终端的物理按键交互、报警矩阵(可编程 RGB 灯颜色与振动)以及防区划分详细需求。
## 1. 物理按键与菜单交互定义
手环共配备 **5 个物理按键**:侧边 3 个(▲ 上移、▼ 下移、■ 确认/CONFIRM上部 2 个(相同的 SOS1、SOS2具备完全一致的并联电气逻辑
### 1.1 页面与状态定义
* **时钟待机状态 (STATE_CLOCK)**:正常显示时间、日期、电量及布撤防状态(大字版)。
* **低功耗休眠状态 (STATE_SLEEP)**:无按键操作 10 秒后自动进入。屏幕完全关闭,拉低 `SGM_CTRL = 0` 关闭 SGM3833 供电,单片机进入 Power-Down 挂起状态。
* **主选择菜单 (STATE_MENU)**:在 `STATE_CLOCK` 下长按 **■ 确认键** 3 秒进入。单屏只显示 1 个功能,通过 ▲/▼ 键来回翻页CONFIRM 键确认进入:
1. `1. DATE/HEURE` (进入时间日期修改界面 `STATE_SET_TIME`)
2. `2. APPAIRAGE` (进入对码配对搜索界面 `STATE_PAIR_SEARCH`)
3. `3. ARM/DISARM` (进入系统布撤防手动设定界面 `STATE_ARM_DISARM_SELECT`)
4. `4. LIAISON IPC` (进入 IPC 摄像头绑定发送界面 `STATE_IPC_BIND`)
### 1.2 按键动作状态机映射
| 当前状态 | ▲ 上移键动作 | ▼ 下移键动作 | ■ 确认键 (CONFIRM) 动作 | SOS1 / SOS2 按键动作 |
| :--- | :--- | :--- | :--- | :--- |
| **时钟待机 (STATE_CLOCK)** | 无动作 | 无动作 | 长按 3 秒:进入主选择菜单 | 短按/长按:立即跳转至发送 SOS 报警 (`STATE_SOS_EMITTED`) |
| **低功耗休眠 (STATE_SLEEP)** | 短按:唤醒并恢复至时钟待机 | 短按:唤醒并恢复至时钟待机 | 短按:唤醒并恢复至时钟待机 | 短按/长按:唤醒系统并立即触发 SOS 报警 |
| **主选择菜单 (STATE_MENU)** | 短按:上一个菜单条目(切换大图标与大字) | 短按:下一个菜单条目(切换大图标与大字) | 短按:确认进入选中分支;长按 3 秒:退出菜单返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 |
| **时间修改 (STATE_SET_TIME)** | 短按:增加当前选中数值 | 短按:减少当前选中数值 | 短按:保存并切换到下一个修改参数;长按 3 秒:放弃修改返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 |
| **对码配对 (STATE_PAIR_SEARCH)** | 无动作 | 长按 2 秒:放弃对码返回主菜单 | 无动作 | 短按/长按:立即跳转至发送 SOS 报警 |
| **对码确认微调 (STATE_PAIR_CONFIRM)** | 短按:自增后缀序号 (01->99) | 短按:自减后缀序号 (99->01) | 短按:确认保存配置并存入 Flash返回时钟长按 3 秒:放弃保存返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 |
| **布撤防手动设定 (STATE_ARM_DISARM_SELECT)** | 短按:切换布撤防高亮项 | 短按:切换布撤防高亮项 | 短按:保存选定状态返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 |
| **IPC 绑定发送 (STATE_IPC_BIND)** | 无动作 | 长按 2 秒:放弃绑定返回时钟 | 短按:立刻再次发射绑定射频包;长按 3 秒:退出返回时钟 | 短按/长按:立即跳转至发送 SOS 报警 |
| **警报触发状态 (STATE_ALARMING)** | 短按:解除报警并退回时钟 | 短按:解除报警并退回时钟 | 短按:解除报警并退回时钟 | 短按/长按:解除报警并退回时钟 |
| **本地主动 SOS 发送 (STATE_SOS_EMITTED)** | 短按:解除 SOS 发送退回时钟 | 短按:解除 SOS 发送退回时钟 | 短按:解除 SOS 发送退回时钟 | 短按/长按:解除 SOS 发送退回时钟 |
> [!NOTE]
> 1. **双 SOS 按键冗余**:上部的两个 SOS 键在电路与软件上完全等价。按下其中任意一个按键,均会触发相同的 SOS 信号采集与求救动作。
> 2. **一键报警优先级**:除了在报警状态和本地 SOS 发送状态下按 SOS 键为解除报警外,在其它任意状态下,短按或长按 SOS 键均拥有最高优先级,立刻强行中止当前业务并跳转至 SOS 呼救状态。
> 3. **对码自动类型识别与后缀选择**
> * 手环在接收到 433MHz 射频对码信号时,**自动根据数据码Data Code识别传感器类型**,并直接跳转到对码微调页面。
> * 在微调确认页面中,传感器类型和图标以大字只读显示,用户仅需通过 ▲/▼ 键增减微调该传感器的超大数字后缀序号01~99。按 CONFIRM 键即可一键保存并写入 Flash 数据库。
> 4. **低功耗休眠与唤醒**:在待机、菜单或非报警页面下,若 **10秒内无任何按键操作**,系统将自动关闭 OLED 屏幕、切断 SGM3833 PMIC 电源,并将 MCU 挂起进入 Power-Down 停机模式。任何按键的按下或射频信号的接收都会通过中断将 CPU 瞬间唤醒。
## 2. 传感器对码与报警映射矩阵
手环接收到 433MHz 传感器射频数据后,通过匹配预设数据码(高 4 位为类型)和地址码,根据下表驱动多色 LED、马达振动波形并更新 LCD 显示。为了方便视障及老年用户识别,显示均采用超大图标与闪烁红边框。
| 传感器类型 | 数据码标识 | 预设名前缀 | LED 颜色 | 默认防区类型 | 马达振动波形 (周期 5 秒) |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **🚪 门磁/窗磁** | `0x01` | `PORTE` | ● 红色 | ZONE 1 (普通) | 1 次短振 300ms |
| **👤 PIR 人体红外** | `0x02` | `PIR` | ● 橙色 | ZONE 1 (普通) | 2 次短振 300ms (间隔 200ms) |
| **🔥 烟雾传感器** | `0x03` | `FUMEE` | ● 绿色 | ZONE 0 (24h) | 3 次短振 200ms (间隔 150ms) |
| **🆘 紧急按钮** | `0x04` | `URGENCE` | ● 蓝色 | ZONE 0 (24h) | 1 次长振 800ms |
| **💨 气体泄漏** | `0x05` | `GAZ` | ● 紫色 | ZONE 0 (24h) | 4 次短振 200ms (间隔 100ms) |
| **💧 水浸传感器** | `0x06` | `INOND.` | ● 黄色 | ZONE 0 (24h) | 2 次长振 600ms (间隔 300ms) |
| **📳 振动传感器** | `0x07` | `VIBRA.` | ● 青色 | ZONE 1 (普通) | 连续3次 150ms (间隔 100ms) |
| **🚨 本地主动 SOS** | 手环触发 | `SOS` | ● 红色闪烁 | 独立运行 | 持续长振 (振 1000ms, 停 200ms) |
> [!IMPORTANT]
> **手环主动发射 SOS 射频数据格式**
> 当触发“本地主动 SOS”时手环通过内置发射芯片以 **2 秒** 为周期循环发射 EV1527 协议数据:
> * **源地址**:手环的 **20位出厂固定唯一 ID (Factory ID)**。
> * **数据码**:固定为 **`0x08`** (即 `1000`)。
> * **目的**:使 IPC 摄像头能接收解码,将其与配对列表中该手环 of Factory ID 匹对,从而识别求救来源。
## 3. ZONE 防区划分
手环支持将配对的传感器划分至不同的防区:
* **ZONE 0 (永久防区)**:烟雾、气体、水浸等危及安全的传感器。不论手环是否处于布防状态,一旦捕获信号即刻报警。
* **ZONE 1~N (可撤布防区)**:门磁、红外等防盗传感器。只有当手环接收到布防广播(系统进入 ARMED时才会报警在撤防DISARMED状态下被动忽略。