“Don't ever underestimate the heart of a champion.” ——Rudy Tomjanovich
對於這句堪稱Clutch City精神寫照的話,我卻也有着另一方面的理解。
那么便是:對於專業運動訓練來講,心率表真的是最最重要的輔助設備沒有之一了。
這次寫的主題就是心率傳感器(HRM,HeartRateMonitor)。
一、回顧ANT+
之前的文章中提到了ANT官方對於多種不同類型的傳感應用,專門制定了一套設計規范,那就是【ANT+】。
ANT+是基於ANT技術的一種受控網絡(managed network)。它對特定類型的傳感器,以及相應的接收終端的設計都給出了標准化的規范與定義。這樣做的好處不言而喻----最大限度地保證了不同制造商生產的ANT產品都能具有良好的互操作性、兼容性。而這一點對於建立一個強大的ANT終端生態鏈無疑是至關重要的。
本文以最常見的心率檢測應用為例,介紹ANT+的心率傳感器設計規范。(不含心率接收終端)
二、ANT+心率傳感應用
可以說心率監測應用是ANT技術表現最出色的領域之一,尤其是在面臨BLE等技術的有利競爭時,ANT憑借其優良的性能表現,牢牢堅守着相當比例的市場份額。典型的ANT+心率監測應用如下圖所示。

在一個ANT通道中,傳感器僅作為數據發送者,將采集到的心率數據發送至接收終端。接收終端往往是具有屏幕、及存儲器的設備,負責將接收到的信息進行處理並顯示。
傳輸的數據具有兩種數據頁格式,Main Data Pages和Background Data Pages。數據傳輸的頻率固定為4Hz。
三、通道配置
之前介紹過ANT通道配置的基本參數,在一個ANT+網絡中,對於特定的應用,其通道配置參數都各不相同。HRM設備類型參數則專門定義為120(0x78)。RF頻率被限定為2.457GHz上。我們知道2.4GHz的ISM頻段,其范圍通常是2.4~2.483GHz,例如802.11a/b/g/n協議族,而ANT可用的頻段范圍在2.400~2.524GHz之間,略大於前者。實際上,考慮到ANT的TDMA特性,並沒有必要對於每個通道配置不同的RF頻率。
| 通道參數 | Transmitter | Receiver | |
| 網絡key | ANT+ key | ANT+ key | |
| RF 頻率 | 2.457GHz (0x39) | 2.457GHz (0x39) | |
| 通道ID | 設備ID | 1-65535 | 0-1-65535 (0 用於配對) |
| 設備類型 | 120 (0x78) | 120 (0x78) | |
| 傳輸類型 | 1 (0x01) | 0 (0x00用於配對) | |
| 通道類型 | 0x10 (雙向主通道) | 0x00 (雙向從通道) | |
| 通道周期 | 8070 (4.06Hz) | 8070-16140-32280 (4.06-2.03-1.02Hz) | |
| 數據類型 | Broadcast | Broadcast (可選Ack Burst) |
四、數據頁格式
ANT+為HRM定義了2類共5種Data Page格式。各個Page之間即包含共有信息,也包含專有信息。
Main Data Page:
page0,為簡單的心率顯示終端(如跑步機)提供無需計算或存儲,可直接送顯的實時心率,屬於“萬金油”類型數據。
page4,最常用的格式數據。包含了前后兩次心跳發生的時間差,為計算實時心室搏動間距R-R Interval提供了可能。
Background Data Page:
page1,傳感器累計工作時間,用於記錄傳感器的電池消耗狀況。終端借此實現低電量警示功能。
page2,OEM生產商ID信息,需要向Nordic交錢申請。
page3,OEM制造商ID信息。
根據其作用的不同,各個page的發送周期也必然不同。Main類的數據發送頻率為4Hz,而Background的信息因為相對沒那么重要,其數據發送頻率為每65個page發送一次。
PS:接收端可以選擇以1~2~4Hz為頻率接收數據,響應地會帶來功耗以及數據刷新率的改變,需要特別考慮。
| byte 0 | byte 1 | byte 2 | byte 3 | byte 4 | byte 5 | byte 6 | byte 7 | |
| page 0 | 0x00/0x80 | 0xFF 並沒有什么卵用 |
當次心跳時間 0~64s循環計數 步長1/1024s LSB------MSB |
心跳累計 0~255 循環 |
瞬時心率 1-255 bpm 0x00無效 |
|||
| page 4 | 0x04/0x84 | 制造商自定義 接收端不解讀 |
前次心跳時間 0~64s循環計數 步長1/1024s LSB------MSB |
|||||
| page 1 | 0x01/0x81 | 0~0xFFFFFF 上電計數,用於記錄電池使用時間 每2s+1,MAX 9320h |
||||||
| page 2 | 0x02/0x82 | 制造商ID | 設備ID擴展字段 | |||||
| page 3 | 0x03/0x83 | 硬件版本號 | 軟件版本號 | 模塊版本號 | ||||
在Byte 0中有一個toggle bits,其作用在於:當前后消息相同,即心率低於數據發送速率時,用以提醒接收端新消息的到來。
另外值得一提的是,使用page4相比“萬金油”page0的優勢在於,利用前后兩次心跳的時間間隔計算心率,比直接得到的瞬時心率更加穩定可靠。所以絕大多數現有ANT+HRM都是使用page4來傳輸數據。
最后還有一點,對於開發者,制造商ID可設置為0xFF。
好了,ANT+的心率傳感器設計規范到此就介紹完了。並沒有很復雜的樣子~ ANT畢竟還算是個developer friendly的協議嘛~
下次將介紹心率傳感器應用層相關的一些開發。JUST HRBEAT iT。;)
