禹鑫燚,趙嘉楠,應(yīng)皓哲,歐林林,馮遠靜
(浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310023)
室內(nèi)騎行[1]運動作為一項常規(guī)的室內(nèi)健身活動,配合使用騎行臺,可滿足人們對于日常自行車騎行運動的需要。
騎行臺是一種附帶阻尼系統(tǒng)的騎行訓(xùn)練設(shè)備,可將室外的騎行運動轉(zhuǎn)移到室內(nèi)進行,通過騎行者消耗自身的體力來達到健身的目的,是一種常規(guī)的有氧健身器材?,F(xiàn)在市面上的騎行臺,根據(jù)智能程度可分為智能型騎行臺和非智能型騎行臺;按照阻尼系統(tǒng)的劃分,可分為重力阻式騎行臺、磁阻式騎行臺、風(fēng)阻式騎行臺以及液阻式騎行臺[2]等。
因為國外自行車運動的普及、參與程度高,所以誕生了一大批家喻戶曉的騎行臺品牌,如德國品牌Elite、美國品牌Kinetic、荷蘭品牌Tacx 等。國外主要有滾筒式騎行臺、液阻式騎行臺、磁阻式騎行臺等種類。比如Tacx的Galaxia-T1100[3]滾筒式騎行臺,Cycleops 的Fuild 2[4]液阻式騎行臺等。
和國外相比較,國內(nèi)對騎行臺的研究開發(fā)起步比較晚,目前有青島邁金、杭州優(yōu)趣體育等少數(shù)公司在推出自己的騎行臺產(chǎn)品。例如,邁金的T300[5]直驅(qū)式磁阻騎行臺,優(yōu)趣體育的U5 SMART[6]智能騎行臺等。
從目前的產(chǎn)品設(shè)計和用戶體驗來看,傳統(tǒng)的非智能騎行臺存在騎行環(huán)境單一,不能較為準(zhǔn)確地控制阻力等一系列影響運動體驗的問題。并且在運動過程中無法實時得到騎行速度和騎行者的消耗功率,只能根據(jù)騎行者自身的感受進行粗略判斷。所以,一種能實時得知騎行速度和功率,實現(xiàn)與騎行臺客戶端數(shù)據(jù)交互,豐富騎行者騎行體驗的智能騎行系統(tǒng)具有較高的研究價值。
為了解決上述傳統(tǒng)非智能騎行系統(tǒng)存在的問題,設(shè)計了基于藍牙SoC 的嵌入式智能騎行系統(tǒng)。該系統(tǒng)可實現(xiàn)如下功能:(1)對騎行速度的實時采集,并根據(jù)速度-功率計算公式得到騎行者的騎行消耗功率;(2)將速度和功率數(shù)據(jù)按照事先設(shè)定的數(shù)據(jù)格式,使用藍牙協(xié)議[7-9]以及ANT+協(xié)議[10-12]發(fā)送給騎行臺客戶端實現(xiàn)數(shù)據(jù)發(fā)送;(3)接收并解析騎行臺客戶端下發(fā)的坡度數(shù)據(jù)來調(diào)節(jié)騎行時的阻力數(shù)據(jù),實現(xiàn)上下坡和平路的騎行模擬;(4)該裝置還適配多個騎行臺客戶端,包括國外的Zwift、國內(nèi)的UH Fitness 等。并且在此基礎(chǔ)上設(shè)計了硬件電路與實驗裝置,通過一系列實驗測試驗證了系統(tǒng)的可行性。
本文設(shè)計的嵌入式智能騎行系統(tǒng)主要用來解決傳統(tǒng)的非智能騎行臺功能單一、騎行體驗一般的問題。系統(tǒng)采用了磁阻式的設(shè)計方案,從系統(tǒng)硬件結(jié)構(gòu)和系統(tǒng)軟件結(jié)構(gòu)兩方面對系統(tǒng)進行總體方案設(shè)計與實現(xiàn),系統(tǒng)總體功能框架如圖1 所示。
圖1 系統(tǒng)總體功能框架圖
系統(tǒng)硬件結(jié)構(gòu)部分,設(shè)計選用NRF52832 低功耗藍牙SoC 作為主控芯片,設(shè)計了最小系統(tǒng)電路以及射頻電路構(gòu)成主控模塊。根據(jù)整個系統(tǒng)的功能需要分別設(shè)計了電源模塊、速度測算模塊、磁阻控制模塊等。
系統(tǒng)的軟件結(jié)構(gòu)部分,為了提高系統(tǒng)處理任務(wù)的實時性和可靠性,控制系統(tǒng)移植了開源的實時操作系統(tǒng)FreeRTOS[13-15]。FreeRTOS 實時操作系統(tǒng)目標(biāo)代碼小、簡單易用,被廣泛應(yīng)用于各種各樣的物聯(lián)網(wǎng)智能產(chǎn)品中。系統(tǒng)的基本軟件功能模塊包括速度測算和功率計算程序、磁阻控制程序、藍牙數(shù)據(jù)通信程序、ANT+無線數(shù)據(jù)通信程序等。還包括多款騎行臺客戶端的適配程序、休眠與喚醒機制等一些提升使用體驗的模塊程序。
本系統(tǒng)硬件總體架構(gòu)如圖2 所示。整個系統(tǒng)主要由主控模塊、電源模塊、磁阻控制模塊以及速度測算模塊等電路模塊構(gòu)成。電源模塊負責(zé)把輸入電壓降壓處理得到合適的工作電壓,提供給系統(tǒng)中其他的電路模塊使用;主控模塊與速度測算模塊、磁阻控制模塊相連接,實現(xiàn)速度的輸入捕獲與計算、功率計算、阻力大小的控制以及無線數(shù)據(jù)通信等功能;速度測算模塊利用霍爾傳感器實現(xiàn)脈沖檢測與信號整形;磁阻控制模塊根據(jù)主控模塊引腳輸出的不同占空比的PWM 波實現(xiàn)對H 橋芯片的輸出電壓調(diào)節(jié),從而實現(xiàn)擋位的控制。
圖2 硬件總體架構(gòu)圖
2.2.1 電源模塊
系統(tǒng)的輸入電壓是36 V,主要提供給磁阻控制模塊中的H 橋芯片和電源模塊使用。綜合考慮系統(tǒng)正常工作時所需的電流大小后,采用了兩級降壓電路的方案。第一級降壓電路選用LM2596 降壓開關(guān)電源芯片,將36 V的輸入電壓降壓到5 V,提供給速度測算模塊以及磁阻控制模塊中的光耦器件使用。第二級降壓電路采用AMS1117 芯片以及外圍電路組成的穩(wěn)壓電路方案,將5 V電壓穩(wěn)壓到3.3 V,提供給主控模塊使用。
2.2.2 主控模塊
主控模塊是整個系統(tǒng)的控制核心,由NRF52832 芯片的最小系統(tǒng)電路和射頻電路構(gòu)成,電路原理圖如圖3所示。
圖3 主控模塊
NRF52832 藍牙芯片內(nèi)部有512 KB 的Flash 和64 KB的RAM,有著強大的浮點運算能力。它是一款相比較同系列其他藍牙SoC 具有更高性能、更低功耗的多協(xié)議SoC[16],有著良好的抗干擾能力,并且設(shè)計靈活性高。其優(yōu)良的性能滿足了本文所需的數(shù)據(jù)處理能力以及無線通信數(shù)據(jù)傳輸性能。
2.2.3 速度測算模塊
速度測算模塊將霍爾元件切割磁場的周期運動轉(zhuǎn)換為脈沖電信號[17],并將輸出信號傳輸給主控模塊進行速度值的計算。
為了進一步降低系統(tǒng)工作時的功耗,速度測算模塊選用了型號為A3144E 的霍爾元件。該型號的霍爾元件具有功耗低、靈敏度高、溫度特性穩(wěn)定等特點[18-19],被廣泛應(yīng)用于各種轉(zhuǎn)速檢測裝置中。模塊使用LM393 比較器芯片將霍爾傳感器的輸出脈沖信號處理成更加接近矩形波的波形,進一步降低霍爾傳感器輸出脈沖信號對測量結(jié)果的影響,從而提高主控芯片計算速度的精確度。
2.2.4 磁阻控制模塊
磁阻控制模塊是整個系統(tǒng)實現(xiàn)上下坡騎行模擬的關(guān)鍵硬件電路。模塊的輸出電壓通過主控芯片輸出的PWM 波的占空比大小來調(diào)節(jié)。輸出電壓不同,阻力的大小就不同,從而實現(xiàn)了騎行上下坡的模擬效果。主控芯片與磁阻模塊之間用光耦器隔離。模塊選用了LMD18200直流電機驅(qū)動H 橋芯片。
本系統(tǒng)的軟件總體結(jié)構(gòu)圖如圖4 所示,主要分為硬件驅(qū)動層、業(yè)務(wù)實現(xiàn)層以及應(yīng)用層。硬件驅(qū)動層用來實現(xiàn)對系統(tǒng)所用硬件外設(shè)的邏輯控制,并封裝成相應(yīng)的控制函數(shù)供業(yè)務(wù)實現(xiàn)層調(diào)用。業(yè)務(wù)實現(xiàn)層負責(zé)調(diào)用硬件驅(qū)動層的封裝函數(shù)來一一實現(xiàn)對應(yīng)的外設(shè)功能,并封裝成業(yè)務(wù)函數(shù)模塊供應(yīng)用層調(diào)用。應(yīng)用層負責(zé)調(diào)用每個業(yè)務(wù)模塊的接口函數(shù),來實現(xiàn)整個系統(tǒng)的功能。
圖4 軟件功能結(jié)構(gòu)圖
根據(jù)系統(tǒng)的總體軟件架構(gòu)圖可知,硬件驅(qū)動層主要包括實時操作系統(tǒng)FreeRTOS 的內(nèi)核,用于輸入速度捕獲的GPIO,用于控制磁阻控制模塊輸出電壓的PWM 以及中斷、定時器等組件。業(yè)務(wù)實現(xiàn)層包含的業(yè)務(wù)有藍牙通信業(yè)務(wù)、ANT+通信業(yè)務(wù)、速度計算業(yè)務(wù)、功率計算業(yè)務(wù)以及PWM 占空比控制業(yè)務(wù)等。應(yīng)用層將根據(jù)系統(tǒng)的功能以及運行時的任務(wù)需要調(diào)用業(yè)務(wù)實現(xiàn)層的相關(guān)業(yè)務(wù),并調(diào)用故障處理函數(shù)處理運行過程中的問題。
磁阻控制模塊程序用來實現(xiàn)對騎行臺客戶端下發(fā)的坡度數(shù)據(jù)進行分析來自動調(diào)節(jié)阻力的大小,從而實現(xiàn)騎行上下坡、平路的模擬。系統(tǒng)一共設(shè)計了17 個擋位的阻力控制,其中1~8 擋模擬上坡,9 擋模擬平路,10~17 擋模擬下坡,1~8 擋的PWM 占空比與10~17 擋的PWM 占空比一一對應(yīng)。擋位所對應(yīng)的PWM 占空比的確定使用了文獻[20]提出的擋位調(diào)節(jié)方法。軟件流程圖如圖5 所示。
圖5 磁阻控制程序
未建立起通信連接前,系統(tǒng)為了降低功耗,程序便設(shè)置初始擋位為9。在與騎行臺客戶端建立連接后,下位機開始接收騎行臺客戶端下發(fā)的坡度數(shù)據(jù),并判斷系統(tǒng)是否處于休眠狀態(tài)。當(dāng)且僅當(dāng)系統(tǒng)沒有休眠,才能按照事先設(shè)定的占空比根據(jù)下發(fā)的數(shù)據(jù)進行擋位的調(diào)節(jié)。
實時操作系統(tǒng)通過對速度測算模塊輸出波形的下降沿捕獲,并計算出當(dāng)前的速度值,再根據(jù)速度擬合出功率值。速度計算和功率擬合方法使用了文獻[20]中提出的方法。
在系統(tǒng)計算輸入脈沖個數(shù)小于5 個并持續(xù)3 min(每1.5 s 捕獲一次,120 次捕獲)后,系統(tǒng)會進入休眠狀態(tài)。在休眠狀態(tài)時,磁阻控制程序仍然會把擋位設(shè)置為9,此時,磁阻控制電路中的H 橋芯片的輸出電壓為0。
當(dāng)輸入脈沖個數(shù)大于等于5 個時,系統(tǒng)會退出休眠狀態(tài),并計算當(dāng)前的速度值,根據(jù)功率擬合方法計算出功率值,軟件流程圖如圖6 所示(圖中的gpioCurrent 代表捕獲到的脈沖個數(shù),stateCount 用來計算當(dāng)前狀態(tài)保持的時間,curSpeed 代表當(dāng)前速度值)。
圖6 速度功率計算與休眠機制
NRF52832 低功耗藍牙SoC 芯片支持ANT+和藍牙兩種通信協(xié)議來進行數(shù)據(jù)傳輸,所以方案設(shè)計時確定在系統(tǒng)中同時使用兩種協(xié)議。
無線通信程序模塊主要將計算得到的速度和功率數(shù)據(jù)發(fā)送給騎行臺客戶端,并接收騎行臺客戶端下發(fā)的坡度數(shù)據(jù),傳送給磁阻控制程序來控制主控引腳輸出PWM 波的占空比,進而調(diào)節(jié)H 橋芯片的輸出電壓。接下來介紹系統(tǒng)中藍牙通信和ANT+通信的程序設(shè)計。
3.4.1 藍牙通信程序設(shè)計
藍牙通信程序由藍牙發(fā)送數(shù)據(jù)和藍牙接收數(shù)據(jù)兩部分組成,軟件流程圖如圖7 所示。藍牙透傳初始化程序的設(shè)計,目的在于把藍牙的初始狀態(tài)逐步設(shè)置到系統(tǒng)需要的工作狀態(tài)。設(shè)備與騎行臺客戶端建立藍牙連接后,會向騎行臺客戶端發(fā)送速度和功率數(shù)據(jù)。在發(fā)送完一次數(shù)據(jù)后,只有確保協(xié)議棧返回的事件是“發(fā)送成功”,發(fā)送函數(shù)才會進行下一次數(shù)據(jù)發(fā)送,這樣就保證了藍牙數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
圖7 藍牙通信程序
3.4.2 ANT+通信程序設(shè)計
為了更加直觀地表示ANT+通信的穩(wěn)定性,在發(fā)送數(shù)據(jù)和接收數(shù)據(jù)之前系統(tǒng)會對ANT+進行連接性檢查。LED燈點亮的狀態(tài)表示設(shè)備與騎行臺之間ANT+保持連接,LED 燈熄滅的狀態(tài)表示設(shè)備與騎行臺客戶端之間ANT+斷開連接。若連接性測試沒有通過,會上報故障信息。
ANT+通信協(xié)議發(fā)送數(shù)據(jù)與接收數(shù)據(jù)的流程圖與藍牙通信的相類似,軟件流程圖如圖8 所示。與藍牙通信不同的地方在于,ANT+通信不是通過協(xié)議棧返回事件來確定上一次數(shù)據(jù)是否發(fā)送成功,而是確認發(fā)送函數(shù)的返回事件是“沒有錯誤”后,再進行下一次的數(shù)據(jù)發(fā)送。
圖8 ANT+通信程序
基于本文的硬件電路設(shè)計制作了印制電路板,并根據(jù)硬件和軟件的設(shè)計搭建了實驗平臺。整個實驗平臺包括系統(tǒng)電路板、電源適配器、ANT+接收器、磁鐵(通過手動控制磁鐵的運動來達到霍爾傳感器切割磁感線的目的)以及第三方騎行臺客戶端等,設(shè)備如圖9 所示。
圖9 測試所用設(shè)備
藍牙數(shù)據(jù)傳輸測試的方法:將電路板上電后,與手機端的UH Fitness APP 建立藍牙通信連接,并手動控制磁鐵的運動,通過查看手機APP 上的速度數(shù)據(jù)與功率數(shù)據(jù)來判斷藍牙的數(shù)據(jù)傳輸是否符合設(shè)計要求。
ANT+數(shù)據(jù)傳輸測試方法:將電路板上電后,用ANT+適配器將電路板與PC 端一款A(yù)NT+測試軟件之間建立連接。手動控制磁鐵的運動,通過查看測試軟件上的數(shù)據(jù)判斷ANT+數(shù)據(jù)傳輸是否符合設(shè)計要求。
4.2.1 藍牙數(shù)據(jù)傳輸測試
藍牙數(shù)據(jù)傳輸測試的實驗結(jié)果如圖10 所示,從圖中可以看到,手機APP 與電路板之間建立了藍牙連接。手機APP 接收到了電路板通過藍牙協(xié)議發(fā)送的實時速度和功率數(shù)據(jù)。
4.2.2 ANT+數(shù)據(jù)傳輸測試
ANT+數(shù)據(jù)傳輸測試的實驗結(jié)果如圖11 所示,從圖中可以看到,PC 端的測試軟件與電路板建立了ANT+連接。測試軟件接收到了電路板通過ANT+協(xié)議發(fā)送的速度和功率數(shù)據(jù)。
圖11 ANT+數(shù)據(jù)傳輸測試
騎行臺客戶端的適配測試選用了兩款軟件,分別是Zwift 和UH Fitness 的聯(lián)網(wǎng)版。測試方法如下:用ANT+適配器與上電的電路板之間建立ANT+通信連接。打開騎行臺客戶端的虛擬/實景騎行界面,每隔一段時間手動控制磁鐵的運動,觀察客戶端界面上顯示的數(shù)據(jù),從而確定是否符合設(shè)計的要求。
4.3.1 Zwift 軟件
從圖12 中可以看到,Zwift 中的虛擬人物處于騎行的狀態(tài),而且畫面的左上方也有對應(yīng)的消耗功率,中間部分有騎行速度,該系統(tǒng)適配Zwift 軟件。
圖12 Zwift 軟件適配(ANT+)
4.3.2 UH Fitness 軟件聯(lián)網(wǎng)版
從圖13 中可以看到,UH Fitness 聯(lián)網(wǎng)版中的中間畫面的下方也有對應(yīng)的消耗功率和騎行速度。說明系統(tǒng)適配UH Fitness 軟件。
圖13 UH Fitness 軟件適配(ANT+)
擋位調(diào)節(jié)測試主要是通過萬用表量取H 橋芯片的輸出電壓來確定是否符合設(shè)計要求。測試方法如下:將電路板上電,與UH Fitness 手機端APP 建立連接后,由手機APP 下發(fā)擋位信息,再用萬用表量取電壓,從而確定是否符合設(shè)計要求。測量結(jié)果如表1 所示。
表1 擋位調(diào)節(jié)測試結(jié)果
從上述一系列的測試結(jié)果可以看出,藍牙通信與ANT+數(shù)據(jù)通信符合預(yù)設(shè)的設(shè)計要求,而且連接的可靠性和穩(wěn)定較高。與不同的騎行臺客戶端適配性比較好,磁阻控制模塊的輸出電壓符合預(yù)期的設(shè)計要求。測試一段時間后,系統(tǒng)的實時性和可靠性良好,符合預(yù)期的設(shè)計。整個設(shè)計有效地解決了傳統(tǒng)的非智能騎行臺騎行功能單一、騎行體驗一般的問題。
本文設(shè)計并實現(xiàn)了基于FreeRTOS 實時操作系統(tǒng)的嵌入式智能騎行臺裝置。本騎行系統(tǒng)的設(shè)計解決了傳統(tǒng)非智能騎行臺的功能單一、不能與騎行臺客戶端進行任何的數(shù)據(jù)交互的問題。系統(tǒng)在實現(xiàn)基本的騎行功能前提下,還加入了速度測算與功率擬合程序、藍牙無線通信程序、ANT+無線通信程序、休眠與喚醒程序等功能程序。下位機與騎行臺客戶端建立通信連接并分析騎行數(shù)據(jù),騎行者可以在虛擬場景中獲得與真實場景接近的騎行體驗。本系統(tǒng)同時兼容Zwift 虛擬場景騎行客戶端和UH Fitness 實景騎行客戶端,提升了騎行體驗。