摘 要:仰臥起坐作為大學生體測項目之一,實踐中存在測試速度慢、監測工作量大、人為因素影響大等痛點,迫切需要便攜式、智能化計數設備并能實現多點無線組網工作。采用國產CH32單片機結合nRF24L01通信模塊,借助MPU6050角度傳感器,設計實現了準確進行仰臥起坐計數的設備,包括用于仰臥起坐計數的手環設備和進行組網控制和數據統計的終端設備。通過無線組網技術,同時實現控制終端和多個手環之間的命令分發與信息收集,并實時交換測試數據,最后將數據經過藍牙傳送到手機APP,方便監考人員處理與統計。本設備計數準確,在突發網絡中斷時,恢復通信后可無損恢復測試數據,魯棒性好,可有效減少仰臥起坐項目的考試工作量,消除人為干擾因素,提高體測效率。
關鍵詞:仰臥起坐計數;CH32F103C8T6;MPU6050;nRF24L01;無線組網;藍牙傳輸;OLED;并行工作
中圖分類號:TP273 文獻標識碼:A 文章編號:2095-1302(2024)04-00-05
DOI:10.16667/j.issn.2095-1302.2024.04.010
0 引 言
在大學體育測試項目中,仰臥起坐常采用一對一人力監考和計數,存在速度慢、工作量大、人為影響大等缺點。此外,被測試人如果仰臥起坐速度過快、姿勢不標準等也會極大影響測試數據的準確性[1]。因此,急需便攜式電子設備來簡化仰臥起坐計數的考試流程,在保證測試數據準確的同時提高統計效率。目前市面上在售的仰臥起坐計數設備存在諸多問題,如不夠便攜、價格昂貴、智能化程度不高等[2],可以適用于大量學生考試的組網設備尚未見產。現有基于STM32的無線健康檢測設備[3]雖然可以實現單人簡單的運動監測與數據上傳,但不能實現大規模組網監測,不適合在多測試對象同時進行體測的場合使用。
本文將物聯網技術運用在仰臥起坐計數的考試中,設計了一款運動監測手環,在準確記錄個體仰臥起坐個數的同時,通過無線組網技術,完成多客戶端數據的實時匯總,實現了多個設備終端并行工作的仰臥起坐準確計數。
1 總體設計
本文以CH32F103C8T6為核心控制器,設計用于仰臥起坐計數的監測手環和統計終端。首先在統計終端上設定計時時間和需要訪問手環的數量,然后按下“開始”,統計終端利用nRF24L01給每個手環發送開始計數信號,監測手環接收到開始信號后開始計時。同時,手環上的角度傳感器MPU6050持續監測用戶的運動狀態,當角度變化值達到一特定角度且手臂夾緊觸碰到膝蓋后,判定用戶完成該動作,運動計數值加1。計數期間,所有監測手環通過nRF24L01將數據匯總到統計終端,統計終端將數據實時顯示在屏幕上,方便監考員監督與記錄。比賽結束后,通過藍牙上傳數據給手機,用于后期數據的處理與保存。系統組成如圖1所示。
2 系統硬件設計
本項目硬件由2個主要設備組成,一個是進行仰臥起坐計數的手環設備,另一個是進行組網控制和數據統計的終端設備。兩者共同的硬件組成有單片機、顯示模塊、無線通信模塊、地址選擇模塊。其中,手環還包含仰臥起坐運動監測模塊,統計終端另含藍牙模塊。為了精簡布局,節約資源,本項目的手環和終端使用同一布局的PCB,采用直插件封裝,可以選擇不同的模塊,組成手環和終端兩套功能不同的
設備。
2.1 無線組網模塊的選擇
目前比較常用的無線通信方式有ZigBee、BlueTooth、WiFi等。實際使用中,BlueTooth無線傳輸協議在2.4 GHz頻段上會存在干擾,且無線組網難度大,連接時間長,不方便使用;WiFi硬件發熱量大,能耗高,價格昂貴,可支持設備總數量少,不適合做低功耗互聯手環;ZigBee模塊使用復雜,協議不公開,對新手來說難度大。
本項目使用Nordic公司出品的nRF24L01無線通信芯片,其具有體積小、功耗低、傳播距離遠等特點。nRF24L01采用Nordic自研的Enhanced ShortBurst協議,連接方式簡單,組網時間短,相對于ZigBee、BlueTooth通信方式,此無線通信方式速度快,便于快速組網和使用。此外,nRF24L01芯片屬于微型低功耗頻射芯片,內含頻率發生器、增強型“SchockBurst”模式控制器、功率放大器、晶體振蕩器、調制器和解調器,相比WiFi硬件,此模塊價格低,擴展性強,發熱量少,非常適合做批量組網設備。
2.2 運動監測模塊
監測手環使用MPU6050姿態傳感器,配合霍爾傳感器與光敏電阻實現姿態判斷。MPU6050是由3個陀螺儀和
3個加速度傳感器組成的六軸運動處理組件,是一款六軸(三軸加速度+三軸角速度(陀螺儀))傳感器。以數字形式輸出六軸角度,經過CH32運算后得出歐拉角,即X、Y、Z軸的旋轉角度。
在體育測試中,選手將監測手環捆綁在手臂指定位置(如圖2),在比賽開始后,監測手環中的MPU6050持續監測選手的運動狀態,當與初始狀態的角度差達到一定程度時,監測手環的運動計數值加1,持續累計,直到選手完成
比賽。
2.3 CH32單片機
CH32F103系列是沁恒出品的32位Cortex-M3 MCU,集成了時鐘安全機制、多級電源管理,具有2路USB 2.0接口、多通道TouchKey、通用DMA控制器等和多通道
12位ADC、12位DAC轉換模塊,多組定時器,CAN通信控制器,I2C/USART/SPI等豐富的外設資源。與ST系列意法半導體芯片相比,國產CH32系列具有功能完善、價格低廉、型號眾多等優點,完美滿足監測手環的需求。
2.4 OLED屏幕
在項目中,需要用屏幕提醒學生的身份號碼(即手環的物理地址)、仰臥起坐運動次數、無線組網通信是否成功等信息,方便選手確認身份號碼,通過讀取手環顯示數據來改進自己的運動姿勢,順利完成體育測試。
0.96英寸藍色OLED屏幕具有自發光、對比度高、無需背光LED燈、反應速度快、I2C通信、視角廣、使用溫度范圍大等優點,可滿足項目要求。其原理如圖3所示。
2.5 波動開關模組
每個模塊通過6位波動開關確定監測手環自身物理地址,開代表1,關代表0,即通過6位二進制數字指示其地址,例如將模塊的第3和4號開關打開,其他關閉,則代表001100,轉化為十進制,即物理地址為12號,MCU讀取信息后給每個監測手環編號,使得統計終端可以一對一與其通信,確保信號的安全與準確。波動開關原理如圖4所示。
3 系統軟件設計
本系統不但要通過佩戴手環實現仰臥起坐的準確計數,還要通過控制終端(主機)實現手環(從機)的無線組網和數據匯總。主機和從機的通信流程如圖5所示。
3.1 MPU6050運動監測
MPU6050芯片中設置了三軸加速度傳感器、三軸陀螺儀和溫度傳感器,但在實際使用中(比如做運動監測)需要對單片機讀取的I2C原始數據進行處理,得到姿態數據[4-7],即航向角(yaw)、俯仰角(pitch)和橫滾角(roll)。
在實際應用場景中,對利用I2C通信讀取的原始數據(三軸加速度、三軸陀螺儀、溫度)進行姿態計算[8-11],借助MPU6050自帶的數字運動處理器DMP,結合官方InvenSense提供的嵌入式運動監測庫,可以對監測數據進行預處理,實現濾波檢波[12]等功能,加快運算過程,縮短運算周期。在初始化過程中加入對DMP的初始化,可以將單片機讀取的原始數據直接轉化成四元數輸出,得到四元數后,再經過單片機調用庫函數運算處理、記錄,推算出歐拉角[13],即可進行運動員姿態分析。
計時開始后,MPU6050記錄學生當前三軸角度,學生開始做運動后,MPU6050持續讀取角度,并計算X、Y、Z軸的角度差。若用羅格里格斯公式[14]計算三軸角度差,需要大量運算,對于算力有限的嵌入式單片機CH32而言,需要占用大量資源,會導致主函數循環太慢,影響無線組網的數據傳輸。為了簡化運算,本項目將對監測手環的捆綁位置和裝置PCB布局進行優化,使得仰臥起坐運動保持在一個軸上,進而簡化運算。
3.2 基于nRF24L01的無線組網
為實現大量設備同時組網,且滿足功耗低、體積小、易操作等需求,本項目選用nRF24l01以滿足無線組網的技術需求[15]。
如果要求2個nRF24L01實現通信,則需滿足以下4個條件:
(1)發射、接收的數據寬度相同;
(2)發射、接收的物理地址相同(共5個8 bit地址);
(3)發射、接收的頻道相同;
(4)發射、接收的速率相同。
因為nRF24L01會把發送地址、接收地址和需要發送的數據一起打包發送,所以不能實現像廣播那樣一發多收。但由于發送接收時間極短,終端設備可以在極短的時間內快速訪問多個模塊,以達到一對多通信效果。主要代碼如下:
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;// SPI設置為全雙工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
//設置為主SPI
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
// SPI發送接收8位幀結構
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//時鐘懸空高
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
//數據捕獲于第二個時鐘沿
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
//內部NSS信號有SSI位控制
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;//波特率
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
//數據傳輸從MSB位開始
SPI_InitStructure.SPI_CRCPolynomial = 7;
//CRC值計算的多項式
SPI_Init(SPI2, amp;SPI_InitStructure);
//根據參數初始化外設SPIx寄存器
nRF24L01的無線組網模式有以下幾種可以選擇:
(1)修改不同的地址,向目標物理地址的nRF24L01發送數據。
(2)修改nRF24L01的發送頻道實現一對多通信。
實驗證明,通過修改nRF24L01的發送頻道來實現一對多通信的方法并不可行,因為相鄰的頻道選擇會產生干擾,例如從機1的頻道是15,從機2的頻道是20,那么2個頻道之間會存在干擾,導致接收數據錯誤。為減小頻道干擾,擴大了頻道距離,但頻道的范圍為0~125,所以實際中可組網的設備少,不能滿足實際使用需求。故本項目修改不同地址來實現一對多無線組網,理論上可以實現2 555個設備無線組網,滿足實際需要,且信息不會相互干擾,實施過程簡單。設定收發地址的代碼如下:
u8 TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0xff};//發送地址
u8 RX_ADDRESS[RX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0xff};//接收地址
3.3 數據采集方式的選擇
在體育考試裝置中,每一個模塊都有一個獨一無二的地址,主機通過輪詢的方式采集每個從機的數據。
(1)主機:上電后自動為發送模式,主機每次給一個從機地址發送詢問成績信號0xff,若從機收到信號,則主機切換為接收模式接收數據,接收完數據切換為發送模式繼續詢問下一個地址。若沒有目標從機,則詢問5次后,自動切換為下一個地址繼續發送‘詢問成績’信號。
(2)從機:從機上電后,自動切換為接收模式,當接收到主機發送的詢問成績信號0xff時,從機切換為發送模式,將成績等信息發送給主機,發送完畢自動切換為接收模式,開始等待下一次主機的詢問。
nRF24L01可以設置通信頻率為10 MHz,統計終端和每個監測手環以極快的速度一對一傳送數據,大量數據可以及時匯總,實時更新,實現一對多精準快速的數據采集。
部分代碼如下:
while(zhu_cong==0)//從模式
{OLED_ShowNum(104,2,Time,4,12);//OLED屏GUI設計
OLED_ShowNum(0,5,motion_times,4,12); //OLED屏GUI設計
OLED_ShowNum(104,4,predict_time,4,12);
//OLED屏GUI設計
cong_judge();//檢測運動狀態
res[0]=motion_times; //運動次數傳入發送數組
cong_shou(res,tmp_buf);//監聽主機,收到立刻發送數據
if(tmp_buf[2]==1){TIM_Cmd(TIM3,ENABLE); predict_time=tmp_buf[3]; }//主機發送時間給從機
else if(tmp_buf[2]==0){TIM_Cmd(TIM3,DISABLE); break; }
if(Timegt;predict_time)//判斷是否超過設定時間
{ while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_14)==1){predict_time=0; }
break;
}
mpu_dmp_get_data(amp;pitch,amp;roll,amp;yaw);//讀取歐拉角
}
手持終端采集每個監測手環的數據,計時結束時,將數據打包,通過藍牙模塊與手機串口助手連接,將數據發送給手機,實現數據匯總與上報。
void u3_printf(char* fmt,...)
{
u16 i,j;
va_list ap;
va_start(ap,fmt);
vsprintf((char*)USART2_TX_BUF,fmt,ap);
va_end(ap);
i=strlen((const char*)USART2_TX_BUF);//發送數據長度
for(j=0; jlt;i; j++)//發送數據
{while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
USART_SendData(USART2,USART2_TX_BUF[j]);
}
}
4 實驗過程
為確保系統整體設計的科學性與可行性,本實驗以大學生體測的仰臥起坐作為測試項目,一人手攜統計終端,全程觀察數據,另有多人穿戴監測手環,分批多次加入實驗,測試系統運行參數與狀態。
4.1 MPU6050監測準確度實驗
將監測手環準確配帶在一位選手手臂上,監測手環和統計終端開機,通過按鈕調整統計終端的比賽時間,按下“開始”,選手開始做仰臥起坐,先做20個標準姿勢的仰臥起坐,觀察統計終端的運動次數計數值是否準確,然后做姿勢不標準的仰臥起坐20個,觀察統計終端的運動次數計數值是否增加(即測試監測手環是否誤判),實驗結果見表1、表2所列。結果表明,本手環可以對符合標準的仰臥起坐進行準確計數,非標準仰臥起坐能夠準確排除。
4.2 正常過程實驗
首先測試手環和終端的工作時間。在空曠的場地下,被測試人員正確配帶監測手環,另有一人手持統計終端。比賽開始前,通過終端按鍵調整比賽時間,如設定計時60 s,然后按下“開始”,比賽開始后,測試人員開始做標準仰臥起坐,觀察統計終端屏幕上的成績以及各模塊的執行時間,見表3所列。經實驗證明,仰臥起坐一次的時間遠超手環的執行時間,不會造成信息延遲。
遞增測試手環,進一步測試多個手環同時工作的測試數據準確度。規定每個測試人員每次實驗做30個標準仰臥起坐,在統計終端觀察數據,是否存在誤檢測。每次遞增2個測試手環,結果見表4所列。實驗結果表明,本手環組網后可以實現多人仰臥起坐的準確計數。
4.3 異常過程實驗
(1)通信阻塞實驗。統計終端(主機)地址設定為8個,即每次輪詢8個地址,手環(即從機)只開啟4個,即主機每次輪詢只有4個從機地址會應答,其他4個地址主機會一直重復發送“詢問成績”的信息,但是不會有應答。實驗顯示,同一個地址主機會重復詢問5次,超出則主機跳過該地址,繼續詢問下一個地址,不會阻塞。
(2)組網失敗測試。在比賽進行時,將手環拿到通信距離之外,即斷開無線組網,讓選手做2個仰臥起坐,接著再拿回通信距離之內,觀察主機計數值是否更新。實驗顯示,在比賽時間內,通信信號丟失不會影響整體成績,在規定時間內恢復通信即可恢復比賽數據。
測試結果表明,本系統可以在正常通信距離內實現多個監測手環無線組網,并行傳遞數據,在部分手環通信中斷后,也不會影響整體的無線組網,當失聯手環恢復通信后,數據可以無損恢復,失聯狀態的數據不會丟失,證明系統運行可靠。
5 結 語
目前大部分學校體育考試還是人力監考,一名學生配一名計數員計數,效率低下且人為因素影響大。本文設計的手環及其終端設備完美解決了上述問題。不僅實現了仰臥起坐的準確計數,還可實時傳輸數據,便于匯總統計。在遇到通信中斷時,手環個體也能正常運行,通信恢復后可恢復失聯手環的數據,魯棒性好。另外,本產品使用國產系列單片機,設計成本低,具有競爭優勢。
注:本文通訊作者為臧秋華。
參考文獻
[1]劉世東.體育中考儀器在測試中易出現的問題及解決策略—以引體向上和仰臥起坐項目為例[J].體育教學,2022,42(6):81.
[2]包梓群.改進目標檢測網絡的仰臥起坐測試計數[J].智能計算機與應用,2022,12(8):102-105.
[3]叢一凡,王成龍,胡旭,等.基于STM32單片機的健康手環[J].物聯網技術,2021,11(6):106-108.
[4]王儀,羅濤,張宏橋,等.基于 MPU6050傳感器的人體啞鈴動作識別系統的設計[J].湘南學院學報,2020,41(2):121-124.
[5]杜鵬.基于六軸傳感器MPU6050的一種低功耗姿態及深度測量裝置[J].艦船電子工程,2022,42(6):168-170.
[6]徐夏怡,宮瑤,李玉衡,等.基于MPU6050和步進電機的高精度轉動控制方法[J].軟件,2020,41(2):39-43.
[7]蔡長青,王鵬.老人跌倒姿態檢測研究[J].長春工程學院學報(自然科學版),2019,20(4):29-34.
[8]張振濤,王娟.一種角度融合算法在姿態角解算中的應用[J].吉林化工學院學報,2020,37(3):73-76.
[9]張澤權,金文光.基于MEMS的運動捕捉裝置及姿態解算算法設計[D].杭州:浙江大學,2021.
[10]劉慶鵬,于雨,惠力,等.基于四元數的機械海流計姿態解算[J].氣象水文海洋儀器,2021,38(1):15-19.
[11]董壯壯,魏文量,田凱文,等.基于 MEMS 傳感器的肘關節角度精確測量[J].導航定位學報,2022,10(7):129-135.
[12]劉義,楊鵬.基于卡爾曼濾波的云臺自適應姿態優化算法[J].自動化與儀表,2022,37(11):80-86.
[13]朱文輝,李偉,代勇.多變量時序關聯分析的跌倒預測算法[J].電子測試,2021,28(17):74-77.
[14]劉鋒.羅德里格斯旋轉公式的證明及應用[J].江蘇科技信息,2020,37(28):37-40.
[15]段瑞彬,唐德渝,龍斌,等.基于DSP和nRF24L01的焊接電參數無線數據傳輸系統設計[J].焊接技術,2019,48(2):66-69.
收稿日期:2023-04-10 修回日期:2023-05-16
基金項目:2021年江蘇省高等教育教改研究課題(2021JSJG367);2021年江蘇高校教學研究工作專項課題(2021JSJY059);2021年新工科教育教改研究課題(XJXGKZ04);2022年江蘇省大學生創新創業訓練計劃項目(202210320063Z);2022年江蘇省大學生創新創業訓練計劃項目(202210320090Y)