【自製運動感測器】用 Micro:bit 測量槓鈴速度:挑戰 1000Hz 高頻採樣的底層開發實錄

在我的重量訓練課表中,除了肌力訓練外,也會加入「爆發力(Power)」訓練,例如舉重衍生動作或壺鈴抓舉。雖然口語說爆發「力」,但在運動科學的定義中,它更精確的定義是「功率」。

爆發力的物理本質

爆發力並非單純的力量,而是功率的表現。我們可以透過以下公式來理解:

爆發力(Power)是力與位移的乘積除以時間,即:
$$ P = \frac{F \times s}{t} = F \times v $$
其中 $F$ 為力量($m \times a$),$v$ 為速度。

換句話說,在處理特定重量時,若能產生更大的加速度與速度,或是在更短的時間內完成更長的位移,就代表爆發力表現越佳。

測量技術的挑戰

在運動科學領域,測量功率通常有兩種路徑:

  • 線性位移感測器 (LPT):測量外部負載(如槓鈴)的位移,透過時間差分算出瞬時速度、加速度與功率。
  • 加速度感測器 (IMU):直接測量負載加速度。雖然理論上可以透過積分算出速度與位移,但微小的加速度偏差在積分過程中會產生巨大的累積誤差。

為了打造自己的測量裝置,我一開始先嘗試使用 Arduino Nano 33 IoT,但電源配置很麻煩,我沒找到可以用的電池方案。後來我想到,其實microbit有很多穿戴式的應用,再加上它也有三軸加速度和藍牙裝置,所以最終我選擇了 Micro:bit V2 作為開發核心。

開發關鍵:突破採樣頻率瓶頸

若要精準測量槓鈴移動,理想的採樣頻率需要達到 1000Hz。然而,標準的積木程式(MakeCode)底層架構無法支援如此高頻的數據傳輸。經過翻閱文件與 AI 協作,我決定從底層進行開發。

核心邏輯如下:

  1. 使用底層 I2C (400kHz) 達成穩定 1ms 的加速度採樣。
  2. 暫存數據,每累積 20 筆資料(約 120 Bytes)封裝為一組 BLE (Bluetooth Low Energy) 封包傳出,以確保傳輸效率。

韌體下載與安裝

我已經將編譯好的 Hex 檔案放在 GitHub,請下載後直接拖入 Micro:bit V2 在電腦上辨識成的隨身碟即可:

下載韌體 (v1.0)

操作說明

Micro:bit 端控制

  • A 鍵:切換感測器量程 (2g, 4g, 8g, 16g)。LED 螢幕首列會亮起對應數量的燈號表示目前量程。
  • B 鍵:開啟或關閉 LED 矩陣顯示。
  • 藍牙配對:開機即自動進入廣播模式,無需 PIN 碼。裝置名稱為 MB_[五個英文字母]

視覺化圖表與網頁介面

數據呈現交給瀏覽器的 Web Bluetooth API。您可以使用 Chrome(Windows/Linux/Android)或 Bluefy(iOS)連結至以下網頁:

線上測量工具網頁

實作與安裝建議

在開始測量前,務必將 Micro:bit 固定後靜止進行重力校準。因為感測器固定在器材上時必然會有傾斜角度,校準後才能獲得正確的垂直向加速度。

關於硬體固定方式,建議搜尋 "microbit 2032 watch" 相關擴充套件,找附帶電池座的穿戴式套件,適合綁在手上或固定在器材上。

校準完成後,您可以透過網頁端的「定時錄製」功能,設定延遲啟動與錄製時長,如同相機自拍設定一般簡單。以下是實際測量與錄製的數據介面參考:

數據結果 1
數據結果 2
所有原始碼都在這,如果你有興趣看看的話
« 上一篇 Previous 較舊的文章 下一篇 Next » 較新的文章