--- **1. 先把 3 個名詞分清楚** 1. `ANT` 這是底層無線通訊協定,本質上是低功耗 2.4 GHz 無線協定,強調低功耗、固定時槽、裝置間穩定資料交換。ANT 網路中的節點可依 channel 角色互動,且同一節點可在不同 channel 擔任不同角色。[ANT Basics](https://www.thisisant.com/developer/ant/ant-basics) 2. `ANT+` 這不是另一種無線電,而是建立在 `ANT` 之上的「互通裝置規格」。 重點不是只有「能傳資料」,而是「別人的碼表、手錶、感測器能看懂你的資料格式」。 例如心率、踏頻、功率、速度等,都有既定的 device profile 與 data page 定義。[ANT+ Device Profiles](https://www.thisisant.com/developer/ant-plus/device-profiles) 3. `SoftDevice` 這是跑在 nRF52 上的無線協定堆疊。 對 nRF52832 而言,你不是自己從頭寫 ANT/BLE MAC/Link Layer,而是把對應的 SoftDevice 先燒進晶片,再由 application 呼叫 API。 一句話: - `ANT` = 協定 - `ANT+` = 互通標準與 profile - `SoftDevice` = 在晶片上實作這些無線能力的協定堆疊 --- **2. nRF52832 常見 SoftDevice 組合** 對 `nRF52832`,最常見、最重要的是這三個觀念: 1. `S212` `ANT only`。 如果你的產品只做 ANT / ANT+,不需要 BLE,這是最精簡的做法。官方把 S212 定義為 ANT protocol stack,支援多種 network topology、最多 15 個 channel。[Nordic S212](https://www.nordicsemi.com/Products/Development-software/S212-ANT) 2. `S332` `ANT + BLE concurrent`。 如果你要同時做 ANT+ 與 BLE,例如: - ANT+ 對碼表 - BLE 對手機或 DFU 那通常會選 `S332`。THIS IS ANT 也明確把它列為 nRF52832 的 `ANT / BLE SoftDevice`。[THIS IS ANT nRF52832](https://www.thisisant.com/developer/components/nrf52832/) 3. `S132` `BLE only`。 這是 Nordic 常見的 BLE stack,但**不支援 ANT**。 所以如果你未來要加 ANT+,不能只停在 S132。 新手最實用的選擇原則: - 只做 ANT+:`S212` - ANT+ 和 BLE 都要:`S332` - 只做 BLE:`S132` 補充: THIS IS ANT 的 nRF52 相容表也顯示,nRF52 生態還有 `S312 / S313 / S340` 等 ANT/BLE 組合,但對 `nRF52832` 入門實作來說,最常碰到、也最值得先搞懂的就是 `S212` 與 `S332`。[Compatibility Chart](https://www.thisisant.com/developer/components/nrf52832/) --- **3. ANT+ 和 BLE 的差別,要怎麼專業地理解** 很多新手會把它們都當成「2.4G 無線」,但工程上差很多。 **3.1 協定定位不同** - `BLE` 是通用型近距離裝置通訊協定,手機支援度高,適合 App 互動、設定、升級、資料同步。 - `ANT+` 是以運動/健身/感測器互通為核心的標準化生態,重點是 display 與 sensor 的互通性。 **3.2 通訊模型不同** - `BLE` 核心是 `connection-oriented GATT` 思維,雖然也有 advertising / broadcaster 模式,但大多數產品最終會走 service/characteristic。 - `ANT/ANT+` 核心是 `channel + message/page` 思維。應用通常先配置 channel,再按 profile 規則周期送 page 或接收 page。 **3.3 生態系不同** - `BLE` 最大優勢是手機、平板、PC 生態完整。 - `ANT+` 最大優勢是運動器材互通,例如碼表、心率帶、功率計、跑步機、訓練台。 **3.4 互通方式不同** - `BLE` 就算兩邊都用 BLE,也不保證互通,因為你還要看 service、UUID、payload 定義。 - `ANT+` 若雙方都正確實作同一個 device profile,互通性通常更直接。 這也是 ANT+ 的核心價值。 **3.5 功耗與資料節奏** - `ANT+` 很適合固定頻率、週期性、小封包感測資料。 - `BLE` 比較適合手機互動、設定、配對、升級、較彈性的資料交換。 **3.6 驗證方式不同** - `BLE` 常用手機掃描、GATT 工具、手機 App 驗證。 - `ANT+` 通常用碼表、錶、ANT USB dongle、或另一個 ANT receiver 驗證。 一句話總結: - 你要「手機相容」時,多半靠 BLE - 你要「運動裝置互通」時,多半靠 ANT+ --- **4. ANT 與 ANT+ 在實作上的關鍵差異** 這點很重要,很多人一開始會混用。 1. `ANT 自訂協定` 你可以自己定義資料格式、頻率、channel 行為。 這適合封閉式系統或自家設備互通。 2. `ANT+ 標準 profile` 如果你的產品要被碼表或手錶當成標準心率帶、功率計、踏頻器,就必須依 profile 規範送資料。 另外,THIS IS ANT 的授權頁也提醒: - 非 ANT+ 產品,不應使用 `ANT+ network key` 或 `2457 MHz` 的 ANT+ 頻率 - 若要做真正可互通的 ANT+ 裝置,需遵守 ANT+ profile 與相關規則 來源:[Licensing](https://www.thisisant.com/developer/ant/licensing/), [Downloads reminder](https://www.thisisant.com/developer/resources/downloads), [Network key FAQ](https://www.thisisant.com/developer/resources/tech-faq/where-can-i-find-the-ant-network-key-and-the-ant-fs-network-key) 工程上可簡化為: - 只想自家兩台機器互傳:可做 `ANT` - 想讓碼表直接認得你:要做 `ANT+` --- **5. ANT+ 金鑰、授權與申請流程** 如果你的目標是做出能被碼表、手錶、心率帶等商用品辨識的 `ANT+` 裝置,只開啟 `ANT SoftDevice` 還不夠,還需要正確理解兩種 key。 **5.1 兩種 key 要分清楚** 1. `ANT license key` 用途:讓支援 ANT 的 SoftDevice 能啟動。 例如 `sd_softdevice_enable(...)` 在使用 ANT SoftDevice 時會需要它。 2. `ANT+ network key` 用途:讓裝置加入 `ANT+` 網路,並以標準 `ANT+ device profile` 與其他裝置互通。 如果你要做標準 `Heart Rate Monitor`、`Speed`、`Cadence`、`Power` 等裝置,真正與碼表互通有關的是這個 key。 **5.2 申請方式** 1. 到 [THIS IS ANT](https://www.thisisant.com/) 官網註冊帳號。 2. 申請成為 `ANT+ Adopter`。 3. 以 `ANT+ Adopter` 身分登入後,到下載與技術文件頁面取得: - `ANT+ network key` - 相關 profile 文件 - 必要設計工具或參考資料 **5.3 實作原則** 1. 如果只是做自家設備間的自訂 `ANT` 通訊,不要使用 `ANT+ network key`。 2. 如果要做能被商用品碼表辨識的正式 `ANT+` 裝置,就要使用正確的 `ANT+ network key`。 3. 不要把真實 `ANT+ network key` 寫進公開 repo、公開教學或對外文件。 4. 內部教學文件建議只寫: - `請向官方申請 ANT+ network key` - `將 key 填入 ant_key_manager_config.h` 不公開實際數值。 **5.4 在專案中的落點** 以 nRF5 SDK 為例,通常會在: `components/ant/ant_key_manager/config/ant_key_manager_config.h` 設定: ```c #define ANT_PLUS_NETWORK_KEY { /* 由官方取得後填入 */ } ``` **5.5 重要提醒** 截至 **2026 年 3 月 24 日**,THIS IS ANT 官方下載頁仍寫明: - `ANT+` 標記內容受 Adopter agreement 約束 - 某些下載需登入後才能取得 - `ANT+ membership`、`product certification`、`engineering support` 已於 **2025 年 6 月 30 日** 結束 所以實際可下載與可申請內容,請以你登入官網後看到的資訊為準。 參考來源: - [ANT Licensing](https://www.thisisant.com/developer/ant/licensing/) - [ANT+ Network Key FAQ](https://www.thisisant.com/developer/resources/tech-faq/where-can-i-find-the-ant-network-key-and-the-ant-fs-network-key) - [Downloads](https://www.thisisant.com/developer/resources/downloads/) --- **6. 從零開始的正確路線** 新手最穩的流程不是直接做整機,而是分 4 階段。 **階段 1:先選角色** 先決定你是: - `TX` 發送器 - `RX` 接收器 入門最建議從: `ANT+ HRM TX` 開始。 因為最容易用碼表驗證。 **階段 2:先選 SoftDevice** - 純 ANT+ 感測器:先用 `S212` - 如果未來一定要手機設定/DFU:直接用 `S332` **階段 3:先跑 SDK 範例** 不要從空白專案開始。 先找對應 SDK 的 ANT 範例,先讓它: - 能編譯 - 能燒錄 - 能送固定資料 **階段 4:最後再整合 BLE / DFU / 客製功能** 順序建議: 1. `SoftDevice + App` 2. 驗證 ANT+ 能收發 3. 再加 Bootloader 4. 再加 DFU 5. 最後再加自家邏輯 --- **7. 你要準備哪些軟體** 最基本: 1. `SEGGER Embedded Studio` 2. `SEGGER J-Link Software` 3. `nRF5 SDK` 4. `對應的 ANT SoftDevice` 5. `RTT Viewer` 6. 如果要 DFU,再加 `nrfutil` 7. 如果要驗證 BLE,再加 `nRF Connect` 如果同時有外部 MCU 或其他平台,再補對應編譯器與下載器。 --- **8. 專案建立時最關鍵的技術點** **8.1 SoftDevice 與專案要匹配** 這是第一個大坑。 你專案如果是照 `S332` 配,但晶片裡刷的是 `S132`,很容易: - 編譯過 - 執行直接 fault 所以一定要一致: - header / include - preprocessor define - 實際燒入的 SoftDevice **8.2 `sdk_config.h` 要開對模組** 常見會影響 ANT+ 的包含: - softdevice handler - timer - log - queue - BLE/ANT observer - 若同時有 BLE,還有 GATT queue 等 **8.3 `LFCLK` 要正確** 低頻時鐘設定錯,常見現象是: - `sd_softdevice_enable()` 失敗 - bootloader 廣播不起來 - 一開機就 fault **8.4 舊版 SDK 要注意版本綁定** 如果你用的是歷史專案或舊 SDK 範例,實務上通常要讓: - `SDK 版本` - `SoftDevice 版本` - `headers` - `project memory map` 彼此匹配。 若沿用既有工程,最好保持同一組版本組合,不要隨意混搭。[THIS IS ANT nRF52 page](https://www.thisisant.com/developer/components/nrf52832/), [Nordic DevZone guide](https://devzone.nordicsemi.com/guides/short-range-guides/b/getting-started/posts/introduction-to-nordic-nrf5-sdk-and-softdevice) --- **9. ANT+ TX 與 RX 在程式結構上的差異** **TX** 你要處理的是: - channel config - profile init - page 組包 - 定期送出資料 適合: - 心率感測器 - 踏頻器 - 功率計 - 自訂 broadcaster **RX** 你要處理的是: - 掃描/開 channel - 接收資料 page - 解析 profile payload - 轉成內部狀態 適合: - 顯示器 - 資料匯總器 - 閘道器 新手建議先做 TX,因為成功條件最單純: - 送固定值 - 接收端看到固定值 --- **10. 驗證 ANT+ 是否真的成功** 如果你做 `ANT+ HRM TX`,驗證流程建議: 1. 板子上電 2. 確認 profile/channel 已啟動 3. 用 RTT 看有沒有持續送包 4. 用碼表新增 `Heart Rate` 感測器 5. 看碼表有沒有穩定顯示例如 `60 bpm` 如果有: - log 在送 - 碼表也收得到 就代表 TX 成功 注意: 不要用一般手機藍牙頁去找 ANT+ 裝置。 --- **11. 什麼時候該用 S212,什麼時候該用 S332** **選 S212 的情境** - 只需要 ANT / ANT+ - 不需要手機 BLE - 想節省資源 - 架構單純、風險最低 **選 S332 的情境** - ANT+ 對運動裝置 - BLE 對手機 App - BLE DFU - 需要雙協定並存 專業上,`S332` 的價值就在「同時支援 ANT 與 BLE」。THIS IS ANT 對 nRF52832 的描述也明確列出 `S332` 是 concurrent `ANT/BLE SoftDevice`。[THIS IS ANT nRF52832](https://www.thisisant.com/developer/components/nrf52832/) --- **12. 新手最容易犯的錯** 1. 用錯 SoftDevice 例如想做 ANT+ 卻刷了 BLE-only stack。 2. 把 ANT 和 ANT+ 當成同一件事 實際上,ANT+ 代表 profile 與互通標準,不只是底層傳輸。 3. 直接從空白專案硬建 建議先從 SDK 範例改。 4. 一開始就同時做 ANT + BLE + DFU + 自訂邏輯 太容易讓問題混在一起。 5. 只看手機掃不到就以為沒發送 ANT+ 驗證要用對工具。 6. 只設定 `ANT license key`,卻忘了 `ANT+ network key` 這樣可能能把 ANT stack 跑起來,但商用品碼表仍不會把你當成真正的 ANT+ 感測器。 --- **13. 最推薦的新手開發順序** 1. 先安裝開發環境 2. 先燒對 SoftDevice 3. 先確認 `ANT license key` 4. 先確認已取得並配置 `ANT+ network key` 5. 先讓 ANT+ 範例能編譯 6. 先做最小 TX 7. 用碼表驗證 8. 再換真實感測資料 9. 再加 BLE 10. 再加 bootloader / DFU 這樣成功率最高。 --- **14. 一句話總結** 如果你是 `nRF52832 + ANT+` 新手,最重要的不是一開始會寫多少程式,而是先把這四件事建立正確: 1. `S212 / S332 / S132` 的角色分工 2. `ANT` 與 `ANT+` 的差異 3. `ANT license key` 與 `ANT+ network key` 的差異 4. 用正確接收端去驗證 `TX / RX` 掌握這幾點後,再進到 profile、page、DFU、雙協定整合,會順很多。 **參考來源** - [THIS IS ANT nRF52832 / SoftDevice 頁面](https://www.thisisant.com/developer/components/nrf52832/) - [Nordic S212 SoftDevice 說明](https://www.nordicsemi.com/Products/Development-software/S212-ANT) - [Nordic DevZone: nRF5 SDK 與 SoftDevice 入門](https://devzone.nordicsemi.com/guides/short-range-guides/b/getting-started/posts/introduction-to-nordic-nrf5-sdk-and-softdevice) - [ANT Basics](https://www.thisisant.com/developer/ant/ant-basics) - [ANT+ Device Profiles](https://www.thisisant.com/developer/ant-plus/device-profiles) - [ANT Licensing](https://www.thisisant.com/developer/ant/licensing/) - [Downloads / Licensing Reminder](https://www.thisisant.com/developer/resources/downloads/) - [ANT+ Network Key FAQ](https://www.thisisant.com/developer/resources/tech-faq/where-can-i-find-the-ant-network-key-and-the-ant-fs-network-key)