EMS DoseSync Pro

院前 OHCA 給藥與事件時間同步輔助裝置 — Prototype V1 行為流程規格
v1.0(封版) | 2026-04-27 初版 · 2026-04-28 Training 整合 · 2026-05-03 §19 擴充預留設計 · 2026-05-05 V4 §13/§14 6 秒給氣暫停/繼續封版 | SoT:EMS_DoseSync_Pro_Prototype_V1.md
📱 互動 Demo(手機版)
🆕 本次新增(2026-05-05)— SoT V4 §13/§14 6 秒給氣暫停/繼續流程封版

SoT V4 重新整理 §13(獨立 6 秒通氣節奏)與 §14(OHCA 內 6 秒通氣)章節編號並新增暫停/繼續流程: 獨立模式 §13.11/§13.12 主按鍵短按暫停 / 繼續,繼續後秒數從 1 重新開始OHCA 內 §14.9/§14.10/§14.11 暫停 / 繼續 / 關閉透過快速功能選單,主按鍵短按不再作為暫停鍵, 避免與 OHCA 警報消音、選單確認衝突。新增 §13.3 / §14.2 6 秒一口核心定義(第 1 秒 = 給氣提示點,2~6 秒 = 等待間隔), §14.8 EPI 警報優先處理(警報音優先 / 視覺秒數可繼續顯示)。本 flow.html 對齊章節:

§8 獨立 6 秒通氣(暫停/繼續) §9 OHCA 內 6 秒通氣(快速功能暫停/繼續) §9.6 OHCA 暫停狀態 §9.7 一致性對照
📌 2026-05-04 — GPIO 腳位分配總表

建立 GPIO 分配單一真相來源(SSOT),同步 SoT V1 §21.3 與 flow.html。涵蓋 8 按鍵分配(依 §4.1 封版)、顯示/錄音/擴充策略、互斥約束、ESP32-S3 禁用區。完整 SSOT 文件:docs/gpio-allocation.md。新增 §20 GPIO 腳位分配總表 章節:

① 按鍵腳位 ② 顯示 ③ 提醒輸出 ④ 錄音 ⑤ 擴充預留 ⑥ 互斥約束 ⑦ 禁用區 → 完整跳轉 §20
2026-05-03 — Prototype V1 擴充預留設計

PM 提出 7 項未來擴充保留需求(錄音、CO 偵測、獨立藥物紀錄)。V1 不啟用以下功能,但硬體腳位、外殼空間、資料結構與主功能表架構需保留擴充能力。新增 §19 擴充預留設計 章節整合說明:

① 硬體腳位 ② 電源預算 ③ 外殼開孔 ④ 資料格式段位 ⑤ 主功能表入口 → 完整跳轉 §19
章節導覽
1. 產品定位 2. 主功能表 3. OHCA 案件 lifecycle 4. EPI 倒數提醒 5. 事件兩段確認 6. 補登(接手前 / 純補登) 7. 案件總覽 + Timeline 8. 6 秒通氣節奏 9. OHCA 中開啟 6秒通氣恆常顯示 10. Training 模式 11. 歷史紀錄 12. App 單案同步 13. Type-C 管理 14. 系統設定 15. 按鍵總覽 16. 通訊架構 17. 硬體 18. 開發階段 ⭐ 19. 擴充預留設計 📌 20. GPIO 腳位分配總表
1 產品定位

院前 OHCA 現場的給藥與事件時間同步輔助裝置,協助 EMT / ALS 接手人員:

V1 排除:雲端、帳號登入、即時院端同步、GPS、病患個資、錄音功能(外觀位置保留)、PDF 報表、權限管理。
2 主功能表

開機 Logo 1~2 秒後進入,預設游標停在 OHCA 案件。

未來擴充:主功能表採可擴充 list 結構,V1 封版固定 5 項,未來可新增「CO 狀態」等系統級入口。其他藥物紀錄走長按針筒鍵入口(非主功能表)→ 詳見 §19.5 主功能表入口擴充
3 OHCA 案件 lifecycle

案件啟動不等於 EPI 倒數啟動。倒數只能由「本機 EPI 二段確認」成立後啟動。

案件開始
主鍵短按啟動
顯示 1 秒
待本機 EPI
允許即時/補登/電擊/Amio
不啟動倒數
EPI 倒數中
4 分鐘倒數
正常狀態
剩 1 分鐘
每 15s 短提示音
黃燈慢閃
請給藥(到期)
高優先警報 5 秒
紅燈快閃
超時
顯示累計時間
每 15s 短提醒
結束鎖定
不可修改
進入案件總覽
結束流程:OHCA 中長按主鍵 ≥ 3s → 結束前檢查(完成並結束 / 前往補登 / 返回案件)→ 最後確認 → 鎖定。
4 EPI 倒數提醒視覺流程
OHCA
03:58
下次給藥
EPI 1|電擊 1
倒數中
4 分鐘倒數
無警報音
OHCA
00:59
請準備給藥
EPI 1|電擊 1
剩 1 分鐘
每 15s 短提示音
黃燈慢閃
請 給 藥
04:00
EPI 1|電擊 1
到期警報
高優先連續 5s
紅燈快閃
OHCA
05:43
請給藥
EPI 1|電擊 1
超時
累計時間
每 15s 短提醒
EPI 已紀錄
04:00
重新倒數
EPI 2|電擊 1
EPI 二段確認
建立時間戳
重啟 4 分鐘
到期後按鍵差異:EPI 鍵 = 消音 + 進入確認 + 可建立新紀錄;主鍵 = 只消音不建立紀錄;返回鍵 = 取消確認。
5 事件兩段確認

EPI / 電擊 / Amiodarone 共用「按鍵 → 確認畫面 → 再按 → 成立」模式,避免誤觸建立錯誤紀錄。

按 EPI 鍵
確認已給 EPI?
再按 EPI 確認 / 返回取消
再按 EPI
建立時間戳
EPI 次數 +1
啟動 / 重啟 4 分鐘倒數
事件型別 觸發鍵 對 EPI 倒數的影響 用詞
EPI(本機)針筒鍵 ×2啟動 / 重啟 4 分鐘倒數EPI 已紀錄
電擊(本機)電擊鍵 ×2不影響 EPI 倒數電擊已紀錄
Amiodarone長按針筒鍵 → 選單 → 主鍵確認不影響 EPI 倒數Amiodarone 已紀錄
用詞統一:系統內統一使用中文「電擊」,不顯示 Shock。
V1 §8 Amiodarone 確認方式:Amiodarone 屬於「EPI / 藥物選單」內的選單事件,最終確認使用主按鍵不使用針筒圖案鍵,避免與 EPI 即時給藥確認混淆。確認畫面文字「確認 Amiodarone?」需放大顯示,畫面不得顯示「再按針筒鍵確認」。
藥物給藥操作邏輯總表(V1 §8A)

針筒圖案鍵為裝置內唯一給藥入口。EPI 是唯一採全程針筒鍵二段確認的藥物;其他藥物與補登均由長按進入選單後以主鍵確認。

藥物 / 功能 入口 最終確認鍵 建立時間戳 影響 EPI 倒數 V1 狀態
EPI短按針筒鍵針筒鍵是,啟動 / 重啟倒數必做
補登 EPI長按針筒鍵 → 補登 EPI主按鍵否,時間欄為 -必做
Amiodarone長按針筒鍵 → Amiodarone主按鍵必做
其他藥物未來藥物選單主按鍵未來擴充
操作原則口訣:針筒鍵 = 藥物功能唯一入口|EPI = 唯一使用針筒鍵完成即時二段確認的藥物|其他藥物 = 選單選取後由主按鍵確認|返回鍵 = 取消。
6 補登(接手前 / 純補登)
類別 入口 可選次數 說明
接手前 EPI 長按 EPI 鍵 → 選擇「補登 EPI」 1~5 接手前已給予
純補登 EPI 1~3 案件中漏記
接手前電擊 長按電擊鍵 1~5 接手前已執行
純補登電擊 1~3 案件中漏記
補登成立後規則: 不建立本機時間戳 / 不啟動 EPI 倒數 / 不重啟倒數 / 不解除 EPI 超時 / 不可撤銷 / 不可修改 / 不可刪除。 Timeline 時間欄顯示 -,匯出 JSON actual_time: null
7 案件總覽 + Timeline
案件總覽(OHCA)
EPI 詳細總數 ╱ 本機 ╱ 接手前 ╱ 純補登 ╱ 第一次本機 EPI ╱ 最後本機 EPI
電擊詳細總數 ╱ 本機 ╱ 接手前 ╱ 純補登 ╱ 最後本機電擊(不顯示「第一次本機電擊」)
Amiodarone總數 + 最後紀錄時間(不拆分來源)
同步狀態App 已同步 / App 未同步
事件時間軸獨立分類進入
事件時間軸範例
14:20案件開始
-接手前 EPI ×2
-接手前電擊 ×1
14:22電擊 #2
14:24EPI #3
14:28Amiodarone
14:35案件結束
裝置端不顯示 EPI 間隔分析(如 #1→#2 04:12),保留給 App / PC Tool / 未來系統。
8 6 秒通氣節奏(獨立模式)
1
2
3
4
5
6
→ 1 ⋯
畫面聲音LED
第 1 秒反紅加強提示音紅燈閃
第 2~6 秒數字 2~6每秒短提示音不閃
6 秒一口核心定義(V4 §13.3):每 6 秒提示 1 次給氣。第 1 秒 = 給氣提示點(代表此時給一口氣);第 2~6 秒 = 等待間隔,不代表給氣、不得在 2~6 秒再次提示。啟動後秒數從 1 開始,第一個第 1 秒即為第一口給氣提示點(V4 §13.5)。
通氣音量 0~5(獨立記憶):0 = 靜音時聲音關閉,但畫面反紅與 LED 紅燈閃保留。
不建立紀錄:不寫入 Timeline,不同步 App,不列入歷史紀錄。
螢幕常亮 + 邊充邊用:插拔 Type-C 不中斷節奏。
8.1 主按鍵短按暫停 / 繼續(V4 §13.11~§13.13)

獨立 6 秒通氣節奏執行中,主按鍵短按 = 暫停 / 繼續,不需二段確認以維持即時操作效率。誤觸暫停可立即再短按主鍵繼續。

6秒給氣
1
執行中|第 1 秒
畫面反紅 + 加強提示音 + 紅燈閃爍
6秒給氣
已暫停
主鍵繼續
返回結束
主鍵短按 → 暫停
秒數循環停止 / 提示音停止 / LED 停止 / 不寫 Timeline
6秒給氣
1
主鍵短按 → 繼續
秒數從 1 重新開始
新的給氣提示點
按鍵功能(執行中 / 暫停中)
上鍵 / 下鍵通氣音量 ±1
主鍵短按暫停 / 繼續(V4 §13.11,不需二段確認)
主鍵長按 3s進入結束確認(V4 §13.14,二段確認)
返回鍵提示「請長按主鍵」,不直接結束(V4 §13.15)
EPI / 電擊無效,不建立事件紀錄
誤觸處理(V4 §13.13):誤觸主鍵造成暫停可再短按主鍵立即繼續;暫停不需二段確認以維持即時效率。結束功能必須二段確認(長按主鍵 3 秒),避免誤觸造成節奏停止。
8.2 結束流程
結束方式:長按主鍵 3s 進入「結束通氣節奏?」確認;返回鍵不直接結束(提示「請長按主鍵」)。
暫停狀態下返回鍵:可回到結束確認提示,但不得直接結束節奏(V4 §13.15)。
9 OHCA 中開啟 6秒通氣恆常顯示
V1 §14 重大調整:OHCA 內 6秒通氣不再為獨立切換畫面,改為 OHCA 主畫面內的恆常顯示輔助區塊。它是子計時器,不打斷OHCA 主流程;EPI 給藥、電擊、Amiodarone、補登完成後,6秒通氣區塊仍維持顯示。
V4 §14.9 新增:OHCA 內 6 秒通氣的暫停 / 繼續 / 關閉一律透過快速功能選單主按鍵短按不作為暫停鍵,避免與 OHCA 警報消音、選單確認或案件操作衝突。
9.1 兩種使用情境
情境定義
主功能表「6秒通氣節奏」獨立即時節奏工具(見 §8)
OHCA 案件中開啟 6秒通氣OHCA 主畫面內的輔助子計時器(恆常顯示,本節定義)
9.2 OHCA 主畫面恆常顯示(單秒數視窗)

採用單秒數視窗顯示,不顯示 1~6 整排。秒數每秒循環:1 → 2 → 3 → 4 → 5 → 6 → 1。

OHCA中
03:28
下次給藥
EPI 1|電擊 1
6秒給氣|已開啟
1
第 1 秒|反紅
畫面反紅
加強提示音
紅燈閃爍
OHCA中
03:27
下次給藥
EPI 1|電擊 1
6秒給氣|已開啟
4
第 2~6 秒
每秒短提示音
LED 不閃爍
畫面正常
請 給 藥
04:00
EPI 1|電擊 1
6秒給氣|已開啟
5
EPI 到期
EPI 警報最高優先
6秒給氣保留下方
不蓋過 EPI 警報
9.3 秒數提示規則(與獨立功能一致)
秒數畫面提示音LED
第 1 秒區塊反紅加強提示音(音量 0 時靜音)紅燈閃爍(音量 0 仍閃)
第 2~6 秒正常顯示每秒短提示音(音量 0 時靜音)不閃爍
音量 0(靜音):提示音全關,但畫面反紅與第 1 秒紅燈閃爍仍保留作為視覺提示。秒數視窗仍正常顯示 1~6。
9.4 與 OHCA 主流程的關係
事件6秒通氣區塊行為
EPI 給藥確認仍維持顯示(不消失、不重置)
電擊確認仍維持顯示
Amiodarone 確認仍維持顯示
補登完成仍維持顯示
EPI 倒數重啟仍維持顯示
EPI 到期警報EPI 警報為最高優先顯示「請給藥」;6秒通氣保留下方輔助區塊,不蓋過警報、不阻止給藥確認
OHCA 案件結束自動停止
9.5 開啟、暫停、繼續、關閉(V4 §14.9 三狀態)

OHCA 中按返回鍵開啟「快速功能」,依目前狀態顯示三組不同的選單項目:

快速功能
› 開啟6秒給氣提示
  案件簡版總覽
  返回 OHCA
未開啟
3 項:開啟 / 簡版總覽 / 返回
快速功能
› 暫停6秒給氣
  關閉6秒給氣提示
  案件簡版總覽
  返回 OHCA
已開啟且執行中
4 項:暫停 / 關閉 / 簡版總覽 / 返回
快速功能
› 繼續6秒給氣
  關閉6秒給氣提示
  案件簡版總覽
  返回 OHCA
已暫停
4 項:繼續 / 關閉 / 簡版總覽 / 返回
開啟後:6秒通氣區塊固定顯示於 OHCA 主畫面中,直到手動關閉或案件結束。不寫入 Timeline,不列入案件事件紀錄
OHCA 內主按鍵短按不作為暫停鍵:避免與 OHCA 警報消音、選單確認或案件操作衝突。暫停 / 繼續 / 關閉一律透過快速功能選單。
9.6 暫停狀態畫面(V4 §14.10 / §14.11)

OHCA 內 6 秒給氣暫停後,主畫面下方仍顯示 6 秒給氣區塊,狀態改為「已暫停」並提示「快速功能可繼續」。透過快速功能選擇「繼續 6 秒給氣」恢復節奏,恢復時秒數重新從 1 開始,第 1 秒視為新的給氣提示點,需觸發畫面反紅 + 加強提示音 + 紅燈閃爍。

OHCA中
03:28
下次給藥
EPI 1|電擊 1
6秒給氣|已暫停
快速功能可繼續
暫停狀態
秒數循環停止
提示音 / LED 停止
EPI 倒數不受影響
快速功能
› 繼續6秒給氣
  關閉6秒給氣提示
  案件簡版總覽
快速功能 → 繼續
主鍵確認
OHCA中
03:28
下次給藥
EPI 1|電擊 1
6秒給氣|已開啟
1
繼續|秒數從 1
畫面反紅 + 加強提示音 + 紅燈閃爍
暫停期間特性(V4 §14.10):停止秒數循環 / 停止每秒提示音 / 停止第 1 秒加強提示音 / 停止通氣 LED 閃爍 / 不影響 OHCA EPI 倒數 / 不影響 EPI / 電擊 / Amiodarone / 補登操作 / 不寫入 Timeline / 不列入案件事件紀錄。
9.7 與獨立 6 秒通氣的一致性對照(V4 §14.13)
項目獨立 6 秒通氣OHCA 內 6 秒通氣
核心定義每 6 秒提示 1 次給氣每 6 秒提示 1 次給氣
秒數循環1~61~6
給氣提示點第 1 秒第 1 秒
第 2~6 秒等待間隔等待間隔
顯示方式單一目前秒數單秒數視窗
第 1 秒畫面反紅 / 加強提示音 / 紅燈閃爍
第 2~6 秒短提示音 / LED 不閃是 / 否是 / 否
通氣音量0~50~5
靜音時視覺提示保留保留
暫停 / 繼續主鍵短按(V4 §13.11)透過快速功能(V4 §14.9)
繼續後秒數從 1 開始從 1 開始
EPI 警報與第 1 秒給氣同時發生(V4 §14.8):EPI 警報音優先 / 6 秒通氣視覺秒數可繼續顯示 / 6 秒通氣提示音可暫時被 EPI 警報覆蓋 / 6 秒通氣不得蓋過「請給藥」畫面。
10 Training 模式
核心定義:Training 模式 = OHCA 模式的訓練版本。不另寫獨立簡化流程,不省略 OHCA 核心事件邏輯。差異只有 EPI 倒數時間可調 + 全程「訓練模式」標示 + 歷史獨立分類 + 可裝置端刪除。
10.1 與 OHCA 的差異
項目OHCA 正式案件Training 模式
EPI 倒數時間固定 4 分鐘可選 30 秒 / 1 分鐘 / 4 分鐘
畫面標示OHCA全程「訓練模式」浮水印
案件總覽案件總覽|OHCA案件總覽|Training
Timeline事件時間軸事件時間軸|Training
歷史分類OHCA 案件Training 紀錄
保存上限50 筆20 筆
裝置端刪除不可可刪除(二次確認)
App 同步可,但 App 端標示 Training
10.2 入口與倒數時間選擇

主功能表 → 訓練模式 → 先選倒數時間(30 秒 / 1 分鐘 / 4 分鐘)→ 進入待本機 EPI 狀態。第一筆本機 EPI 二段確認後才啟動倒數(與 OHCA 同:案件開始 ≠ 倒數開始)。

10.3 「請準備給藥」預警規則(§15.7)
Training 倒數時間剩 1 分鐘預警
30 秒不顯示
1 分鐘不顯示
4 分鐘剩 1 分鐘時顯示「請準備給藥」

理由:避免短時間訓練一開始就進入預警狀態。

10.4 訓練操作選單(長按主鍵)

Training 進行中長按主鍵 → 訓練操作選單(重置訓練 / 結束訓練 / 返回)。重置與結束皆需二次確認。OHCA 不提供重置。

10.4.1 電擊 / Amiodarone / 補登 行為對齊(§15.8 / §15.9 / §15.10)
事件入口對 EPI 倒數的影響
本機 EPIEPI 鍵短按 → 二段確認第一筆啟動倒數,後續每次重啟倒數
本機電擊電擊鍵短按 → 二段確認不啟動 / 不重啟 / 不解除超時
Amiodarone長按 EPI → EPI / 藥物選單 → Amiodarone → 二段確認(再按主鍵)不啟動 / 不重啟 / 不解除超時
補登(接手前 / 純補登)長按 EPI → 補登 EPI / 長按電擊 → 補登電擊不啟動 / 不重啟 / 不解除超時;事件時間欄顯示「-」

所有事件統一寫入 Training Timeline,補登事件 actual_time 為 null。

10.5 結束流程
1

結束前檢查

完成並結束訓練 / 前往補登 / 返回訓練

2

最後確認

「確認結束訓練?/ 結束後不可修改」 → 主鍵確認

3

保存選擇

保存 → 案件總覽|Training(最近 20 筆)/ 不保存 → 不占用儲存,回主功能表

10.6 Training 紀錄裝置端刪除(§12.5 / §15.16)

在 Training 紀錄列表選取某筆 → Training 案件操作(查看總覽 / 同步至 App / 刪除此訓練紀錄 / 返回)。刪除需二次確認,已同步至 App 的紀錄裝置端刪除不回寫 App。OHCA 正式案件不可由裝置端刪除

10.7 Training App 同步(§15.17)

Training 紀錄保存後可從案件總覽或 Training 案件操作同步至 App。App 端必須明確標示 Training不得混入正式 OHCA 案件列表。已同步的 Training 紀錄若在裝置端被刪除,不回寫 App;App 端原資料保留。

10.8 工程實作建議(§15.18)

Training 與 OHCA 共用核心狀態機,以參數區分:case_mode / epi_interval_seconds / history_limit / allow_device_delete / show_training_label不要另寫獨立簡化流程。

11 歷史紀錄
OHCA 正式案件:裝置端不提供刪除功能;提前清除只能透過 Type-C 電腦端管理工具。
Training 紀錄:可由裝置端手動刪除(二次確認),不影響 OHCA 案件。
12 App 單案同步

同步至 App 只同步目前這一筆已結束案件,不同步全部案件。

App 配對碼
4286
請於手機 App 輸入
有效時間 120 秒,逾時需重新產生
剩餘:085 秒
1

產生配對碼

案件總覽 → 同步至 App → 顯示 4 位配對碼(120s 有效)

2

App 輸入配對碼

App 連線後按主鍵開始同步

3

傳輸案件

同步中 → 同步完成(顯示 1 秒)→ 自動回案件總覽

4

狀態更新

同步狀態變為「App 已同步」+ 同步時間戳

Case ID 去重:App 端以 Case ID 為主鍵,重複同步覆蓋而非新增。中斷重試重新傳送整筆案件,不做片段接續。
裝置端原始資料不因同步刪除。App 已同步案件可再次同步(會詢問確認)。
13 Type-C 電腦端管理

OHCA 正式案件裝置本體不提供刪除功能,提前清除資料只能透過 Type-C 連接電腦執行。Training 紀錄則允許裝置端刪除。

1

Type-C 連接電腦

裝置自動進入電腦管理模式

2

啟動管理工具

EMS DoseSync 管理工具識別裝置

3

匯出 / 備份

清除前必須先備份

4

二次確認

避免誤刪

5

清除資料

OHCA / Training 區重置

14 系統設定
設定項範圍規則
螢幕亮度1~5最低 1,不可關閉螢幕,預設 3/5
系統音量1~5不可靜音,最低 1。控制 OHCA 警報 / 預警 / 成功音
通氣音量0~50 = 靜音(畫面反紅與 LED 保留)
裝置名稱App 寫入裝置端不負責中文輸入;案件中不可修改
App 連線BLE 由系統自動管理,不提供藍牙開關
Type-C 連線只顯示狀態,不提供模式切換
韌體版本read-only顯示版本 / 序號 / 電池
恢復預設值:清除亮度 / 系統音量 / 通氣音量。不清除裝置名稱 / OHCA 案件 / Training / App 同步狀態。
15 按鍵總覽
按鍵實體外觀標示功能定位
主按鍵大型主按鍵選單確認 / 開始 / 結束確認 / 消音
返回鍵返回圖示返回 / 取消 / 開啟快速功能選單
上鍵上方向圖示選單上移 / 音量增加
下鍵下方向圖示選單下移 / 音量降低
EPI 鍵針筒圖案(不以 EPI 文字為主標)即時 EPI 入口 / 長按進 EPI / 藥物選單
電擊鍵閃電圖案(表面不得使用 Shock 字樣)即時電擊入口 / 長按進電擊補登
Power 鍵電源圖示開關機
錄音鍵錄音圖示位置預留V1 保留外觀位置,不啟用
按鍵圖示標示規則(§4.1.1):
  • EPI 鍵以針筒圖案為主標;電擊鍵以閃電圖案為主標。
  • 電擊鍵不得使用 Shock 字樣;UI 一律顯示中文「電擊」。
  • 韌體內部命名(epi_button / shock_button)可保留,但所有使用者介面不得露出 Shock
  • 裝置畫面、案件總覽、Timeline、App 內仍使用事件名稱「EPI」與「電擊」。
核心操作口訣:即時事件按事件鍵 / 選單確認按主鍵 / 返回取消按返回鍵
16 通訊架構
📟
EMS DoseSync Pro
裝置端(事件時間戳本地儲存)
BLE 配對碼
單案同步
📱
手機 App
交班摘要 / Timeline / 備註 / 複製
Type-C
備援管理
💻
電腦管理工具
匯出 / 清除資料
App 同步資料安全:Case ID 去重;中斷重試重傳整筆;App 端覆蓋同 Case ID 不新增;同步不刪除裝置端原始資料。
17 硬體模組
🧠
主控
ESP32-S3
📺
顯示
2.8 吋 TFT 320×240
🖲️
按鍵
主 / 返回 / 上下
EPI / 電擊 / Power
💡
LED
狀態指示燈
🔊
蜂鳴器
警報 + 提示音
📳
震動
高優先警報
🔌
Type-C
充電 + 電腦管理
🔋
電池
3.7V 1000mAh
邊充邊用
📡
BLE
5.0
📦
外殼
3D 列印
背面平整
外觀重點:EPI 鍵在主鍵右上 / 電擊鍵在主鍵左上 / 上下鍵中間有返回鍵 / 左上角預留錄音鍵與麥克風開孔(V1 不啟用)。
擴充預留:完整 GPIO 腳位表、CO 感測器候選腳位、外殼開孔規格、電源餘裕計算 → 見 §19 擴充預留設計
18 開發階段(Phase A~H)
Phase A — 最高優先
OHCA 核心狀態機
▸ 案件 lifecycle
▸ EPI 4 分鐘倒數 + 預警 + 警報 + 超時
▸ EPI / 電擊兩段確認
Phase B
補登 + Amio + 案件總覽
▸ 藥物選單 / 電擊補登
▸ Amiodarone
▸ 結束前檢查 + Timeline
Phase C
6 秒通氣節奏
▸ 獨立模式(主鍵短按暫停/繼續,§13.11)
▸ OHCA 內恆常顯示輔助區塊
▸ 快速功能暫停/繼續/關閉(§14.9)
▸ 單秒數視窗 + 第 1 秒反紅
▸ EPI 警報為最高優先(§14.8)
Phase D
Training 模式
▸ 30s / 1m / 4m
▸ 重置 / 保存
▸ 全程訓練浮水印
Phase E
持久化 + 歷史紀錄
▸ LittleFS partition
▸ 50 OHCA + 20 Training FIFO
▸ 重啟資料不遺失
Phase F
App 配對碼同步
▸ 4 位配對碼 + 120s TTL
▸ 單案傳輸 + Case ID 去重
▸ 已同步 / 未同步狀態
Phase G
系統設定 + Type-C 工具
▸ 亮度 / 音量 NVS
▸ 裝置名稱由 App 寫入
▸ Type-C 管理工具 MVP
Phase H
電源管理
▸ 螢幕常亮
▸ 邊充邊用
▸ 低電量提示(不強制關機)
19 擴充預留設計(2026-05-03 新增)

PM 提出 7 項未來擴充保留需求。V1 不啟用,但硬體腳位、外殼空間、資料結構與主功能表架構需保留擴充能力。對齊 SoT V1 §2.3 / §3.1 / §20.4 / §20.5 / §21.1 / §21.2 / §21.3 與 pm-dev-spec.md §6 event_t 編號段位。

三套 Phase 編號對照:Dev-Phase 1~4(開發進度)/ Impl-Phase A~H(韌體子階段,見 §18)/ Prod-Phase(量產階段切換)。完整對照表見 CLAUDE.md
19.1 硬體腳位擴充預留

對應 PM 需求 ① 錄音鍵 GPIO 預留、② 麥克風 I2S 腳位預留、③ CO 感測器腳位預留

V1 腳位分配

📌 GPIO 分配以 docs/gpio-allocation.md 為單一真相來源(SSOT)。本表為 SoT V1 視角的快照,內容需與 SSOT 對齊。

模組腳位介面韌體常數狀態
主按鍵GPIO 4Digital inputBTN_PRIMARY✅ 已實作
上鍵 / 下鍵GPIO 5 / 6Digital inputBTN_UP / BTN_DOWN✅ 已實作
Power 鍵GPIO 7Digital inputBTN_POWER✅ 已實作
錄音鍵GPIO 15Digital inputBTN_RECORD(noop 佔位)⚠️ 物理接線、韌體佔位
返回鍵GPIO 16Digital inputBTN_BACK❌ 韌體未實作(Impl-Phase B 待補)
EPI 鍵(針筒圖案)GPIO 17Digital inputBTN_EPI❌ 韌體未實作(Impl-Phase B 待補)
電擊鍵(閃電圖案)GPIO 18Digital inputBTN_SHOCK❌ 韌體未實作(Impl-Phase B 待補)
蜂鳴器GPIO 14PWM outBUZZER_PIN✅ 已實作
震動馬達GPIO 21PWM outVIBRATION_PINENABLE_VIBRATION=0⚠️ 待硬體與韌體啟用(原 GPIO 16 已封給返回鍵)
OLEDGPIO 42 / 41I2C (SDA/SCL)I2C_SDA_PIN / I2C_SCL_PIN✅ 已實作

V1 預留腳位(不啟用)

模組腳位介面啟用條件
INMP441 麥克風GPIO 40 / 39 / 38(SCK / WS / SD)I2SENABLE_MIC_MONITOR=1
MicroSD 卡待定(建議 SPI:MOSI/MISO/SCK/CS)SPI錄音功能啟用時

CO 感測器候選腳位(型號未定,依介面類型擇一,候選互斥

介面類型候選腳位備註
I2C 共用 OLED busGPIO 42 / 41需確認模組 I2C 位址不與 OLED(0x3C)衝突;最省 GPIO
UARTGPIO 43 / 44ZE07-CO 等電化學型主流;S3 USB-CDC 替代腳,僅 USB-CDC 不啟用時可用
類比 ADCGPIO 1 / 2 / 3(ADC1)MEMS 半導體型;避免 ADC2 與 WiFi 衝突
獨立 I2C 候選已移除:原規劃 GPIO 17/18 已封給 EPI 鍵與電擊鍵(見 §4.1)。CO 感測器 I2C 走 OLED 共用 bus 即可。
互斥提示:GPIO 1/2/3 同時為 ADC 候選;採 ADC 時,UART 不可再用 1/2/3。
禁用腳位:GPIO 8~13(內建 SPI flash)/ GPIO 19/20(USB D+/D-)/ GPIO 0/45/46(strapping pin)。
📌 完整擴充策略:docs/gpio-allocation.md 第 5 節與第 6 節。
19.2 電源預算與餘裕

對應 PM 需求 ④ 感測器與錄音模組的電源餘裕

V1 模組典型 / 峰值功耗表

模組典型電流峰值電流觸發場景
ESP32-S3(BLE active)80mA240mABLE TX 瞬間
2.4 吋 OLED / LCD25mA40mA全亮
蜂鳴器(主動式)030mA警報響起時
震動馬達(1027 硬幣型)080mA震動瞬間
LED 狀態燈5mA10mA雙色全亮
V1 小計~110mA~400mAUSB-C 直供餘裕約 100mA

擴充模組功耗預估(V1 不啟用)

模組典型峰值介面
INMP441 麥克風1.5mA1.5mAI2S
MicroSD(寫入)20mA100mASPI
CO 感測器(電化學型)~10mA~15mAUART/I2C
CO 感測器(MEMS 半導體)~30mA~50mA類比 ADC
CO 感測器(加熱半導體型,禁用)150mA+180mA+❌ 不建議

CO 感測器類型比較(供選型參考)

類型代表型號適用性
電化學型ZE07-CO、CJMCU-4541✅ 推薦:功耗低(~10mA)、介面清晰、預熱秒級
MEMS 半導體MiCS-5524🟡 可考慮:功耗中等(~30mA)
加熱半導體MQ-7、MQ-9❌ 不建議:功耗超 USB-C 上限(150mA+)、預熱 24~48h

1000mAh 電池連續使用時數預估

⚠️ 待 Dev-Phase 1 實測校正。所有功耗與時數皆為業界典型估算值。V1 + 全擴充模組典型約 145mA、峰值約 510mA,極端場景峰值可能逼近 USB-C host port 5V/500mA 上限,需在韌體層做模組互斥(如錄音時停用 BLE TX)。
19.3 外殼開孔擴充預留

對應 PM 需求 ⑤ 麥克風與 CO 感測器開孔位置

V1 階段所有擴充開孔可用 3D 列印實作;Prod-Phase 量產階段配合射出成型開模時定型。
19.4 BLE / Timeline 資料格式擴充段位

對應 PM 需求 ⑥ Timeline / App 同步資料格式不寫死

沿用既有 NUS + JSON 協定,event_type 改採編號段位規範,0x80~0xFF 保留給未來擴充,App 端解析遇未知 type 須 fallback 不丟棄:

編號段位用途V1 狀態
0x00~0x7FV1 核心事件(EPI / 電擊 / Amiodarone / 補登)V1 實作 0x01~0x07
0x80~0xBF未來擴充藥物紀錄(D50W / TXA / Atropine 等)保留
0xC0~0xDF未來擴充感測器事件(CO 警報 / CO 數值記錄)保留
0xE0~0xEF未來擴充錄音相關事件(START / STOP)保留
0xF0~0xFF系統事件(如低電量)保留
新增事件類型時,於 pm-dev-spec.md §6 event_t 登記後同步更新 App 解析表與 §7 案件總覽顯示規則。
19.5 主功能表入口擴充

對應 PM 需求 ⑦ 主功能表未來可新增「藥物紀錄」或「CO 狀態」入口

主功能表採可擴充 list 結構。V1 封版固定 5 項(OHCA 案件 / 6秒通氣節奏 / 訓練模式 / 歷史紀錄 / 系統設定),未來新增項目以上下鍵分頁瀏覽,不重排既有 5 項順序

擴充功能入口位置依據
CO 狀態主功能表新增第 6+ 項SoT §3.1 註記
其他藥物紀錄(D50W/TXA 等)長按針筒圖案鍵 → 藥物紀錄 → 選擇藥物SoT §8A.5 既定路徑(非主功能表入口)
裝置自我測試主功能表新增第 6+ 項SoT §3.1 註記
避免衝突:「其他藥物紀錄」走長按針筒鍵入口,不放主功能表,以免與 §8A 藥物給藥功能總定義打架。
20 GPIO 腳位分配總表(2026-05-04 新增)

📌 GPIO 分配以 docs/gpio-allocation.md 為單一真相來源(SSOT)。本章為 flow.html 視角的快照,內容需與 SSOT 對齊。

目標硬體:ESP32-S3 GOOUUU 開發板(標準 N8 模組,非 octal PSRAM 版)

20.1 按鍵腳位(依 SoT V1 §4.1,8 鍵封版)
SoT 名稱韌體常數GPIO韌體狀態物理
主按鍵BTN_PRIMARY4✅ 已實作
上鍵BTN_UP5✅ 已實作
下鍵BTN_DOWN6✅ 已實作
Power 鍵BTN_POWER7✅ 已實作
錄音鍵BTN_RECORD15⚠️ 韌體佔位(INMP441 到貨啟用)
返回鍵BTN_BACK16❌ Impl-Phase B 待補
EPI 鍵(針筒圖案)BTN_EPI17❌ Impl-Phase B 待補
電擊鍵(閃電圖案)BTN_SHOCK18❌ Impl-Phase B 待補
重要:GPIO 16/17/18 已封給按鍵(返回 / EPI / 電擊)。原規劃為「獨立 I2C 候選」之 GPIO 17/18 已無效,CO 感測器擴充必須改用其他腳位(見 §20.5)。
20.2 顯示
用途GPIO介面模組狀態
OLED SDA42I2CSSD1306 0.96"✅ 啟用
OLED SCL41I2CSSD1306 0.96"✅ 啟用
若採用 tft-migration-plan.md 升級 2.4" TFT,OLED 拆除,GPIO 41/42 釋出可作其他 I2C 用途(如 DS3231 RTC)。TFT SPI 腳位見 §20.5。
20.3 提醒輸出
用途GPIO模組狀態
蜂鳴器 PWM14主動式蜂鳴器✅ 啟用
震動馬達21S8050 NPN + 1kΩ 基極⚠️ ENABLE_VIBRATION=0;原 GPIO 16 已封給返回鍵
20.4 錄音(Dev-Phase 1.5 待啟用)
用途GPIO介面模組狀態
I2S SCK40I2SINMP441 麥克風⚠️ 接線 / ENABLE_MIC_MONITOR=0
I2S WS39I2SINMP441 麥克風⚠️ 同上
I2S SD38I2SINMP441 麥克風⚠️ 同上
MicroSD SCK / MOSI / MISO36 / 35 / 37SPI與 TFT 共用❌ 待選型
MicroSD CS2(ADC1_CH1,二擇一)SPI獨立 CS❌ 待選型
20.5 擴充預留腳位

ESP32-S3 N8 模組可用 GPIO 盤點

分類GPIO備註
已用(14 支)4, 5, 6, 7, 14, 15, 16, 17, 18, 38, 39, 40, 41, 42按鍵 / 蜂鳴 / I2S / OLED
可用空閒(11 支)1, 2, 3(ADC1)/ 21 / 35, 36, 37 / 43, 44 / 47, 4835~37 在 N16R8 octal PSRAM 模組會被佔用,務必確認模組型號

TFT SPI bus 腳位(取代 tft-migration-plan.md 舊版 GPIO 9~13)

用途GPIO備註
SPI SCK36TFT + MicroSD 共用
SPI MOSI35TFT + MicroSD 共用
SPI MISO37MicroSD 需要,TFT 純寫入不需要
TFT CS21獨立
TFT DC48Data/Command 切換
TFT RST47Hardware reset
TFT BL3.3V 直供 / GPIO 1(PWM 調亮度)PWM 會占用 ADC1_CH0

CO 感測器擴充腳位(取代舊版 GPIO 17/18 獨立 I2C)

候選方案介面GPIO備註
電化學型 + I2CSDA / SCL與 OLED 共用 42 / 41I2C 多裝置 bus
電化學型 + UARTTX / RX43 / 44必須放棄 USB-CDC Serial Monitor
MEMS 半導體型 + ADC類比輸入1 / 2 / 3 擇一與 TFT 背光、MicroSD CS 互斥
加熱半導體型(MQ-7/MQ-9)🚫 禁用功耗超出 USB-C 供電上限
20.6 互斥約束總覽
衝突組合互斥原因解法
TFT BL(PWM)vs CO 感測器 ADC都搶 GPIO 1 / 2 / 3二擇一;TFT BL 可接 3.3V 常亮,省下 GPIO
MicroSD CS vs USB-CDC SerialGPIO 43 / 44 衝突量產不需 USB-CDC 時切換
獨立 I2C vs 按鍵 16 / 17 / 18物理腳位衝突按鍵已封版,獨立 I2C 改與 OLED bus 共用
GPIO 35 / 36 / 37 vs N16R8 octal PSRAM模組型號限制採購務必選 N8 / N16 非 octal 版
20.7 ESP32-S3 禁用區(不可作 I/O)
GPIO原因
0, 45, 46strapping pin(啟動行為敏感)
8 ~ 13內建 SPI flash
19, 20USB D- / D+
26 ~ 32SPI flash bonding pads(依模組型號可能可用,保守禁用)
📌 完整擴充策略與互斥約束:docs/gpio-allocation.md 第 5 節與第 6 節。
🔄 變更歷程:docs/gpio-allocation.md 第 8 節。