2026年3月29日

為 Garmin 手錶開發即時心率變化圖表Real-time Heart Rate Graph

幾年前,我曾開發過一個在平板上透過鏡頭觀測脈搏變化的 Web 程式。當時就在想:如果能在運動手錶上即時看到這種動態曲線,該有多好?

對於搭載 PPG 光學心率感測器的 Garmin 手錶來說,這技術上絕對可行,但原生系統卻缺乏這種直觀的即時圖表。於是我決定自己動手開發。

開發之路:與 Monkey C 的初次邂逅

我從下載 Garmin SDK 開始,並在 VS Code 安裝了 Monkey C 延伸套件。雖然是一門相對冷門的語言,但翻完官方文件後,我決定從最精簡的「Data Field」(資料欄位)切入。

經過幾天的奮戰,這個HRGraph 誕生了:

  • 核心邏輯:在 HRGraphView.mc 中利用 Array<Number> 滾動儲存歷史數據。

  • 繪製技術:透過 dc.drawLinedc.fillCircle 手繪向量圖形,確保畫面流暢。

  • 數據採集:利用 compute 函式,每秒精準抓取一次 Activity.Info 中的心率數值。

  • 支援動態縮放 Y 軸

實戰應用:硬舉與冥想的生物回饋

這不只是一個圖表,它是我觀察生理狀態的視窗,例如在硬舉結束後的幾秒內,我觀察到心率會先短暫下降後隨即攀升,約數十秒後才開始回落;這時我會透過特定呼吸法誘發副交感神經,並從圖表即時觀察心率的變化。在休息冥想時,它更是我練習「諧振呼吸 (Resonant Frequency Breathing)」的最佳助手。

這款 App 已正式上架至 Garmin Connect IQ,如果你是 Garmin 用戶,可以直接在 Connect IQ 搜尋Real-time Heart Rate Graph下載使用!

下載安裝後,若你在 App 清單中找不到它請別擔心,因為這是一個 「資料欄位 (Data Field)」,而非獨立 App。你需要將它加入到特定運動的數據頁面中,設定步驟如下:

  1. 選擇運動模式:在手錶上按下 Action 鍵(右上),選擇一項活動(如:跑步、步行或重訓)。

  2. 進入活動設定:在開始運動前,向上滑動螢幕或長按 Menu 鍵(右下)進入設定選單。

  3. 編輯數據畫面:依序進入 「[活動名稱] 設定」 > 「數據畫面」

  4. 自訂欄位:選擇一個您想修改的頁面,並確保該頁面的佈局(Layout)包含可放入數據欄位的區塊。

  5. 選取 ConnectIQ 插件:點擊您想更換的欄位,在類別中找到 「ConnectIQ」,並選取 「Real-time Heart Rate Graph」

  6. 開始體驗:設定完成後,只要開啟該運動模式,動態心率圖表就會即時出現在手錶螢幕上!


source code https://github.com/ChihHsiangChien/GarminProjects/tree/main/HRGraph