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