胡志明+魏振鋼+張小龍+柏長財
摘要:隨著近年來國家對青少年體質(zhì)健康測試重視程度的不斷提升,傳統(tǒng)體質(zhì)測試暴露出越來越多弊端,諸如數(shù)據(jù)混亂、誤差過大、容易丟失等。為改善傳統(tǒng)體質(zhì)測試的弊端,設(shè)計了一套基于ZigBee無線網(wǎng)絡(luò)技術(shù)的學(xué)生體質(zhì)健康測試系統(tǒng)。該系統(tǒng)包括ZigBee無線傳感網(wǎng)絡(luò)、Android中央控制器、路由器終端3部分,可實現(xiàn)學(xué)生體質(zhì)測試的自動化,通過Android端可以實時顯示學(xué)生體質(zhì)測試成績。經(jīng)測試,該系統(tǒng)運行流暢,達到了預(yù)期目的。
關(guān)鍵詞關(guān)鍵詞:體質(zhì)測試;ZigBee網(wǎng)絡(luò);Android移動端
DOIDOI:10.11907/rjdk.171560
中圖分類號:TP319
文獻標識碼:A文章編號文章編號:16727800(2017)011005404
0引言
青少年體質(zhì)是關(guān)系到國家興旺和民族振興的百年大計[1]。但是近年來青少年學(xué)生體質(zhì)不斷下降,因此加強學(xué)生體質(zhì)鍛煉、完善學(xué)生體質(zhì)測試體系顯得尤為重要。傳統(tǒng)的體質(zhì)健康測試往往形式單一、內(nèi)容單調(diào),測試的公開、公正性難以保證。而且測試結(jié)果沒有給學(xué)生及時反饋,讓學(xué)生了解自己的體質(zhì)健康狀態(tài),從而對薄弱項目進行針對性訓(xùn)練。由于工作量大、學(xué)生人數(shù)眾多,加上很多學(xué)校為了各種利益關(guān)系,對現(xiàn)場測試進行干預(yù),嚴重影響了體質(zhì)健康測試的真實性與準確性[2]。同時,學(xué)生體質(zhì)健康測試項目大多由人工進行統(tǒng)計,其中主觀因素太多,容易導(dǎo)致測試數(shù)據(jù)不準確甚至丟失。
基于以上情況,本文設(shè)計了一種基于ZigBee無線網(wǎng)絡(luò)技術(shù)的學(xué)生體質(zhì)測試系統(tǒng)。該系統(tǒng)采用常見的Android系統(tǒng)作為設(shè)備控制端,以新興的低功耗、低成本、低速率、近距離、短時延、高容量的ZigBee無線網(wǎng)絡(luò)技術(shù)作為傳輸中介[3],不僅能夠自動測試出學(xué)生百米跑、折返跑、仰臥起坐等項目成績,還可以將測試成績實時顯示在平板終端上。與傳統(tǒng)體質(zhì)測試相比,保證了測試的公平公正性,減少了體育教師工作量,有效解決了傳統(tǒng)體質(zhì)測試中存在的弊端。
1系統(tǒng)工作原理
學(xué)生體質(zhì)健康測試系統(tǒng)是集無線傳感技術(shù)與計算機軟硬件技術(shù)于一體的智能化系統(tǒng)。該系統(tǒng)的主要工作原理如下:Android平臺通過USB轉(zhuǎn)串口向協(xié)調(diào)器發(fā)送指令,協(xié)調(diào)器再通過ZigBee無線網(wǎng)絡(luò)廣播給路由器終端,路由器終端接收到指令解析后,啟動終端上的光電感應(yīng)器并發(fā)出光聲信號作為提示;用戶收到光聲信號后迅速遮擋終端上的光電感應(yīng)器,遮擋后感應(yīng)器關(guān)閉,并記錄下感應(yīng)器啟動和關(guān)閉的時間差,同時通過無線網(wǎng)絡(luò)將時間數(shù)據(jù)及終端編號返回給中央控制器;中央控制器解析出返回的數(shù)據(jù),以此作為依據(jù)進行下一步操作。通過Android中央控制器控制感應(yīng)器的啟停,從而得出時間差值,進而測出學(xué)生體測成績。體質(zhì)健康測試系統(tǒng)由ZigBee無線傳感網(wǎng)絡(luò)、Android中央控制器、路由器終端3部分組成,如圖1所示。
2系統(tǒng)硬件模塊
2.1終端感應(yīng)模塊
終端節(jié)點主要包含紅外收發(fā)傳感器和數(shù)據(jù)處理與無線通信模塊,主要負責傳感器數(shù)據(jù)的采集與上傳、協(xié)調(diào)器命令的接收與解析。
紅外收發(fā)器由發(fā)送端和接收端兩部分組成,發(fā)送端采用控制電路將待發(fā)送的信號編碼轉(zhuǎn)換為脈沖信號,通過發(fā)射管經(jīng)透鏡發(fā)射紅外信號。當紅外線被物體遮擋時,會產(chǎn)生反射和散射。紅外接收端采用性能可靠的一體化紅外接收頭接收信號,同時將接收的信號放大、檢波并整形,最終得到TTL電平的編碼信號,再發(fā)送給控制電路解碼并進行相關(guān)操作。
數(shù)據(jù)處理和無線通信模塊采用CC2530作為主控芯片,它是一款由德州儀器公司研制,主要應(yīng)用于IEEE802.15.4、ZigBee和RF4CE上的芯片。當無線通信模塊收到中央控制器發(fā)來的指令后,由CC2530核心模塊進行數(shù)據(jù)處理分析,并對其它電路和元器件發(fā)出指令。當無線收發(fā)器需要向協(xié)調(diào)器發(fā)送數(shù)據(jù)時,先將紅外收發(fā)器的模擬信號轉(zhuǎn)換為數(shù)字信號,然后由CC2530核心模塊對數(shù)據(jù)進行處理,將數(shù)據(jù)信號轉(zhuǎn)換為模擬信號后發(fā)送出去。
2.2中央控制器
作為系統(tǒng)的控制中心,負責整個系統(tǒng)運行、網(wǎng)絡(luò)組建、感應(yīng)器控制、指令接收和發(fā)送以及訓(xùn)練數(shù)據(jù)的實時接收、展示及維護。
中央控制器由Android平板和Zigbee協(xié)調(diào)器組成,平板的USB轉(zhuǎn)串口(UART)連接ZigBee協(xié)調(diào)器。Android平板端將命令通過USB串口發(fā)送給ZigBee協(xié)調(diào)器,協(xié)調(diào)器再通過無線傳輸方式發(fā)送給終端節(jié)點;同樣協(xié)調(diào)器接收到終端發(fā)來的消息之后傳送給串口,Android端讀取串口信息后進行數(shù)據(jù)分析與處理。
3無線通信
無線通信模塊主要是實現(xiàn)中央控制器和多個移動終端感應(yīng)器之間的數(shù)據(jù)交互。鑒于該系統(tǒng)是近距離的感應(yīng)設(shè)備,且要求傳輸安全、可靠、功耗小,因此本系統(tǒng)通訊采用ZigBee技術(shù)實現(xiàn)。ZigBee技術(shù)通常用于短距離無線通信,是一種低功耗、低速率、低成本、自組網(wǎng)、高可靠、高安全、近距離無線連接的無線網(wǎng)絡(luò)技術(shù)[4]。
WiFi是日常生活中常見的無線網(wǎng)絡(luò),它與ZigBee存在很多相似之處。兩者都工作在2.4GHz的ISM頻段上,采用的擴頻方式都是DSSS方式。Zigbee有16個信道,WiFi有11個信道,WiFi在國內(nèi)使用1、6、11三個信道,也即是說二者信道選擇會有重疊部分,因此會造成很大干擾[5]。WiFi信道1、6、11,分別與ZigBee的11~14、16~19、21~24信道重疊,與15、20、25、26信道不重疊[6]。為了減少ZigBee信號與WiFi信號之間的干擾,應(yīng)從15、20、25、26這4個信道中選取一個ZigBee的通信信道。
4軟件設(shè)計
4.1通信協(xié)議設(shè)計
由于系統(tǒng)需要控制終端進行多項操作,如開關(guān)里外圈指示燈、感應(yīng)器、燈光顏色等,同時終端感應(yīng)器還需要返回電量、短地址等信息,所以需要對數(shù)據(jù)通信協(xié)議進行設(shè)計。通信數(shù)據(jù)主要以字節(jié)為單位。表1是協(xié)調(diào)器發(fā)送指令格式。endprint
由于要控制終端進行多種操作,因此需要大量的指令組合,所以將利用功能碼中每個Byte中的比特進行組合。表2是功能碼的詳細描述。
4.2Android端程序設(shè)計
Android客戶端程序可以分為3個模塊:一是數(shù)據(jù)收發(fā)模塊,這是軟件的核心模塊,主要負責指令的發(fā)送與接收;二是設(shè)備檢測模塊,主要負責查看終端設(shè)備的連接狀態(tài),獲取終端設(shè)備的電量和短地址;三是體質(zhì)健康測試模塊,主要包括3個項目:折返跑、百米跑和仰臥起坐。
4.2.1數(shù)據(jù)收發(fā)模塊
數(shù)據(jù)收發(fā)前必須先初始化串口,確保USB接口正確連接上了協(xié)調(diào)器模塊。指令發(fā)送是直接將數(shù)據(jù)寫入串口,協(xié)調(diào)器檢測并分析數(shù)據(jù),再發(fā)送出去。下面是發(fā)送的核心代碼:
private synchronized void sendMessage(String data){
Timer.sleep(20);
if (ftDev.isOpen() == false){
Log.e("j2xx", "SendMessage: device not open");
return;}
ftDev.setLatencyTimer((byte) 128);
byte[] OutData = data.getBytes();
ftDev.write(OutData, data.length());
}
協(xié)調(diào)器收到終端發(fā)送的數(shù)據(jù)后,會將數(shù)據(jù)寫入串口。數(shù)據(jù)接收就是當項目測試開始后,單獨開啟一個接收線程,每隔15ms讀取一次串口。讀取到數(shù)據(jù)后,根據(jù)通信協(xié)議對數(shù)據(jù)進行解析。
表2功能碼描述
占位數(shù)和功能功能組合
第一個Byte3bit(2-4)指示燈亮顏色000:無效001:藍色010:紅色100:品紅2bit(5-6)控制蜂鳴器00:無效01:短響10:連響一秒11:連響兩秒2bit(7-8)控制指示燈閃爍00:無效01:慢閃10:快閃
第二個Byte3bit(2-4)控制指示燈亮滅000:無效001:開外圈燈010:開里圈燈011:開全部燈100:關(guān)燈3bit(5-7)控制感應(yīng)器000:無效001:開紅外感應(yīng)器010:開觸碰感應(yīng)器011:開兩種感應(yīng)器100:關(guān)閉感應(yīng)器
4.2.2設(shè)備檢測模塊
進入主界面后,當activity的onstart方法執(zhí)行時,開啟檢測設(shè)備的線程。設(shè)備檢測線程每隔10s執(zhí)行一次,連接終端的電量信息,實時更新電量,在onPause方法中結(jié)束該線程。核心代碼如下:
private class AutoCheckPower extends Thread{
private boolean powerFlag = true;
@Override
public void run(){
while (powerFlag){
//發(fā)送并獲取全部設(shè)備信息指令
device.sendGetDeviceInfo();
//開啟接收電量的線程
new ReceiveThread(handler, device.ftDev,
ReceiveThread.POWER_RECEIVE_THREAD, POWER_RECEIVE).start();
Timer.sleep(10000);}
}
}
4.2.3體質(zhì)健康測試模塊
(1)百米跑。在每個跑道終點放置一個終端感應(yīng)器,當開始命令發(fā)出后點擊“開始”按鈕,調(diào)用device.sendOrder方法發(fā)送開指示燈和紅外感應(yīng)器命令,同時開啟Timer計時線程。學(xué)生到達終點時會遮擋紅外感應(yīng)器觸發(fā)終端,指示燈熄滅同時返回數(shù)據(jù)。平板接收到數(shù)據(jù)后記錄下時間,該時間即是該跑道對應(yīng)學(xué)生的成績。
(2)折返跑。每兩個終端設(shè)備分為一組,可以多組同時進行,起點和終點位置各放一個。學(xué)生從起點出發(fā),到達終點后揮滅終點處的感應(yīng)器,再回到起點揮滅起點處的感應(yīng)器,記為一次折返跑。每個感應(yīng)器撲滅5s后會自動開啟。如果學(xué)生偷懶沒有跑到終點即返回,起點的感應(yīng)器會連續(xù)撲滅兩次,系統(tǒng)會將這次判定為犯規(guī)無效,可防止學(xué)生作弊。次數(shù)達到預(yù)設(shè)值時會記下該組所用的總時間。
(3)仰臥起坐。兩個設(shè)備一組,多組同時進行。學(xué)生平躺時一個感應(yīng)器側(cè)放在頭部位置,一個側(cè)放在大腿位置,兩個感應(yīng)器都用支架架起。學(xué)生起來時手肘部會遮擋大腿位置的紅外感應(yīng)器,指示燈滅,同時頭部的感應(yīng)器和指示燈亮起;當學(xué)生躺下后,觸發(fā)頭部位置的感應(yīng)器,指示燈熄滅的同時,腿部的感應(yīng)器打開,記為一次俯臥撐。
5系統(tǒng)功能測試
5.1終端感應(yīng)器連接測試
首先測試無線終端是否能夠自動連接協(xié)調(diào)器。打開APP進入主頁,稍等一會屏幕左側(cè)自動顯示出連接到當前協(xié)調(diào)器的終端列表,同時顯示每個終端的電量信息。設(shè)備終端列表信息如圖3所示。
5.2百米跑測試
終端感應(yīng)器連接成功之后,便可以進行體質(zhì)健康項目測試。百米跑項目首先要選擇分組,分組即設(shè)置幾人同時進行,然后再設(shè)置需要的感應(yīng)模式和燈光顏色等屬性,準備好后點擊開始按鈕。如圖4所示為100m測試成績。
5.3折返跑測試
折返跑需要先選定往返跑的次數(shù)即訓(xùn)練強度,然后選擇同時測試的人數(shù)以及感應(yīng)器屬性,最后點擊開始。測試結(jié)束后可以得出每組學(xué)生折返跑所用的時間。
5.4仰臥起坐測試
仰臥起坐測試需要先設(shè)定訓(xùn)練時間,即多長時間后訓(xùn)練結(jié)束。其次再設(shè)定同時測試的人數(shù),最后點擊開始按鈕。測試結(jié)束后會顯示每組學(xué)生完成的仰臥起坐個數(shù)。如圖5所示為學(xué)生1分鐘仰臥起坐的成績。
6結(jié)語
本系統(tǒng)成功實現(xiàn)了將互聯(lián)網(wǎng)技術(shù)與學(xué)生體質(zhì)測試相結(jié)合,它能夠快速、便捷地獲取學(xué)生體質(zhì)測試成績,并且實時在平板終端上顯示出來,測試結(jié)束后可實現(xiàn)數(shù)據(jù)的本地保存。后期還將進行數(shù)據(jù)與云平臺的對接,實現(xiàn)數(shù)據(jù)的自動同步上傳,使學(xué)生能夠自行在網(wǎng)絡(luò)平臺上查看自己的體質(zhì)測試成績,了解自己的身體健康狀態(tài)。隨著互聯(lián)網(wǎng)技術(shù)和無線傳感網(wǎng)絡(luò)的發(fā)展,本系統(tǒng)將致力于更多應(yīng)用,如運動員體能訓(xùn)練和專項訓(xùn)練等。
參考文獻參考文獻:
[1]李琛.武漢高校學(xué)生體質(zhì)現(xiàn)狀的調(diào)查與研究[D].武漢:武漢體育學(xué)院,2006.
[2]李沖.學(xué)生體質(zhì)健康測試中弊端及后續(xù)管理服務(wù)研究[J].當代體育科技,2015(12):251,253.
[3]劉敏,譚守標,陳軍寧.基于Android平臺和Zigbee技術(shù)新型智能家居系統(tǒng)[J].計算機系統(tǒng)應(yīng)用,2012(12):133136,157.
[4]CHEN LINGJYH,SUN TONY, LIANG NIACHIANG.An evaluation study of mobility support in ZigBee networks[J].Journal of Signal Processing Systems,2010,59(1):111122.
[5]張毅,吳錦,羅元,等.新型ZigBeeWiFi無線網(wǎng)關(guān)的設(shè)計及其抗干擾技術(shù)的研究[J].計算機應(yīng)用與軟件,2014(5):122124,187.
[6]岑榮瀅,姜琴,扈健瑋,等.面向智能家居應(yīng)用的ZigBeeWiFi網(wǎng)關(guān)[J].計算機系統(tǒng)應(yīng)用,2017(1):232235.
責任編輯(責任編輯:黃健)endprint