【自製運動感測器】用 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 協作,我決定從底層進行開發。
核心邏輯如下:
- 使用底層 I2C (400kHz) 達成穩定 1ms 的加速度採樣。
- 暫存數據,每累積 20 筆資料(約 120 Bytes)封裝為一組 BLE (Bluetooth Low Energy) 封包傳出,以確保傳輸效率。
韌體下載與安裝
我已經將編譯好的 Hex 檔案放在 GitHub,請下載後直接拖入 Micro:bit V2 在電腦上辨識成的隨身碟即可:
操作說明
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" 相關擴充套件,找附帶電池座的穿戴式套件,適合綁在手上或固定在器材上。
校準完成後,您可以透過網頁端的「定時錄製」功能,設定延遲啟動與錄製時長,如同相機自拍設定一般簡單。以下是實際測量與錄製的數據介面參考: