APP下载

基于ZigBee的学生体质测试系统设计与实现

2017-12-02胡志明魏振钢张小龙柏长财

软件导刊 2017年11期
关键词:体质测试

胡志明+魏振钢+张小龙+柏长财

摘要:随着近年来国家对青少年体质健康测试重视程度的不断提升,传统体质测试暴露出越来越多弊端,诸如数据混乱、误差过大、容易丢失等。为改善传统体质测试的弊端,设计了一套基于ZigBee无线网络技术的学生体质健康测试系统。该系统包括ZigBee无线传感网络、Android中央控制器、路由器终端3部分,可实现学生体质测试的自动化,通过Android端可以实时显示学生体质测试成绩。经测试,该系统运行流畅,达到了预期目的。

关键词关键词:体质测试;ZigBee网络;Android移动端

DOIDOI:10.11907/rjdk.171560

中图分类号:TP319

文献标识码:A文章编号文章编号:16727800(2017)011005404

0引言

青少年体质是关系到国家兴旺和民族振兴的百年大计[1]。但是近年来青少年学生体质不断下降,因此加强学生体质锻炼、完善学生体质测试体系显得尤为重要。传统的体质健康测试往往形式单一、内容单调,测试的公开、公正性难以保证。而且测试结果没有给学生及时反馈,让学生了解自己的体质健康状态,从而对薄弱项目进行针对性训练。由于工作量大、学生人数众多,加上很多学校为了各种利益关系,对现场测试进行干预,严重影响了体质健康测试的真实性与准确性[2]。同时,学生体质健康测试项目大多由人工进行统计,其中主观因素太多,容易导致测试数据不准确甚至丢失。

基于以上情况,本文设计了一种基于ZigBee无线网络技术的学生体质测试系统。该系统采用常见的Android系统作为设备控制端,以新兴的低功耗、低成本、低速率、近距离、短时延、高容量的ZigBee无线网络技术作为传输中介[3],不仅能够自动测试出学生百米跑、折返跑、仰卧起坐等项目成绩,还可以将测试成绩实时显示在平板终端上。与传统体质测试相比,保证了测试的公平公正性,减少了体育教师工作量,有效解決了传统体质测试中存在的弊端。

1系统工作原理

学生体质健康测试系统是集无线传感技术与计算机软硬件技术于一体的智能化系统。该系统的主要工作原理如下:Android平台通过USB转串口向协调器发送指令,协调器再通过ZigBee无线网络广播给路由器终端,路由器终端接收到指令解析后,启动终端上的光电感应器并发出光声信号作为提示;用户收到光声信号后迅速遮挡终端上的光电感应器,遮挡后感应器关闭,并记录下感应器启动和关闭的时间差,同时通过无线网络将时间数据及终端编号返回给中央控制器;中央控制器解析出返回的数据,以此作为依据进行下一步操作。通过Android中央控制器控制感应器的启停,从而得出时间差值,进而测出学生体测成绩。体质健康测试系统由ZigBee无线传感网络、Android中央控制器、路由器终端3部分组成,如图1所示。

2系统硬件模块

2.1终端感应模块

终端节点主要包含红外收发传感器和数据处理与无线通信模块,主要负责传感器数据的采集与上传、协调器命令的接收与解析。

红外收发器由发送端和接收端两部分组成,发送端采用控制电路将待发送的信号编码转换为脉冲信号,通过发射管经透镜发射红外信号。当红外线被物体遮挡时,会产生反射和散射。红外接收端采用性能可靠的一体化红外接收头接收信号,同时将接收的信号放大、检波并整形,最终得到TTL电平的编码信号,再发送给控制电路解码并进行相关操作。

数据处理和无线通信模块采用CC2530作为主控芯片,它是一款由德州仪器公司研制,主要应用于IEEE802.15.4、ZigBee和RF4CE上的芯片。当无线通信模块收到中央控制器发来的指令后,由CC2530核心模块进行数据处理分析,并对其它电路和元器件发出指令。当无线收发器需要向协调器发送数据时,先将红外收发器的模拟信号转换为数字信号,然后由CC2530核心模块对数据进行处理,将数据信号转换为模拟信号后发送出去。

2.2中央控制器

作为系统的控制中心,负责整个系统运行、网络组建、感应器控制、指令接收和发送以及训练数据的实时接收、展示及维护。

中央控制器由Android平板和Zigbee协调器组成,平板的USB转串口(UART)连接ZigBee协调器。Android平板端将命令通过USB串口发送给ZigBee协调器,协调器再通过无线传输方式发送给终端节点;同样协调器接收到终端发来的消息之后传送给串口,Android端读取串口信息后进行数据分析与处理。

3无线通信

无线通信模块主要是实现中央控制器和多个移动终端感应器之间的数据交互。鉴于该系统是近距离的感应设备,且要求传输安全、可靠、功耗小,因此本系统通讯采用ZigBee技术实现。ZigBee技术通常用于短距离无线通信,是一种低功耗、低速率、低成本、自组网、高可靠、高安全、近距离无线连接的无线网络技术[4]。

WiFi是日常生活中常见的无线网络,它与ZigBee存在很多相似之处。两者都工作在2.4GHz的ISM频段上,采用的扩频方式都是DSSS方式。Zigbee有16个信道,WiFi有11个信道,WiFi在国内使用1、6、11三个信道,也即是说二者信道选择会有重叠部分,因此会造成很大干扰[5]。WiFi信道1、6、11,分别与ZigBee的11~14、16~19、21~24信道重叠,与15、20、25、26信道不重叠[6]。为了减少ZigBee信号与WiFi信号之间的干扰,应从15、20、25、26这4个信道中选取一个ZigBee的通信信道。

4软件设计

4.1通信协议设计

由于系统需要控制终端进行多项操作,如开关里外圈指示灯、感应器、灯光颜色等,同时终端感应器还需要返回电量、短地址等信息,所以需要对数据通信协议进行设计。通信数据主要以字节为单位。表1是协调器发送指令格式。endprint

由于要控制终端进行多种操作,因此需要大量的指令组合,所以将利用功能码中每个Byte中的比特进行组合。表2是功能码的详细描述。

4.2Android端程序设计

Android客户端程序可以分为3个模块:一是数据收发模块,这是软件的核心模块,主要负责指令的发送与接收;二是设备检测模块,主要负责查看终端设备的连接状态,获取终端设备的电量和短地址;三是体质健康测试模块,主要包括3个项目:折返跑、百米跑和仰卧起坐。

4.2.1数据收发模块

数据收发前必须先初始化串口,确保USB接口正确连接上了协调器模块。指令发送是直接将数据写入串口,协调器检测并分析数据,再发送出去。下面是发送的核心代码:

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());

}

协调器收到终端发送的数据后,会将数据写入串口。数据接收就是当项目测试开始后,单独开启一个接收线程,每隔15ms读取一次串口。读取到数据后,根据通信协议对数据进行解析。

表2功能码描述

占位数和功能功能组合

第一个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:关灯3bit(5-7)控制感应器000:无效001:开红外感应器010:开触碰感应器011:开两种感应器100:关闭感应器

4.2.2设备检测模块

进入主界面后,当activity的onstart方法执行时,开启检测设备的线程。设备检测线程每隔10s执行一次,连接终端的电量信息,实时更新电量,在onPause方法中结束该线程。核心代码如下:

private class AutoCheckPower extends Thread{

private boolean powerFlag = true;

@Override

public void run(){

while (powerFlag){

//发送并获取全部设备信息指令

device.sendGetDeviceInfo();

//开启接收电量的线程

new ReceiveThread(handler, device.ftDev,

ReceiveThread.POWER_RECEIVE_THREAD, POWER_RECEIVE).start();

Timer.sleep(10000);}

}

}

4.2.3体质健康测试模块

(1)百米跑。在每个跑道终点放置一个终端感应器,当开始命令发出后点击“开始”按钮,调用device.sendOrder方法发送开指示灯和红外感应器命令,同时开启Timer计时线程。学生到达终点时会遮挡红外感应器触发终端,指示灯熄灭同时返回数据。平板接收到数据后记录下时间,该时间即是该跑道对应学生的成绩。

(2)折返跑。每两个终端设备分为一组,可以多组同时进行,起点和终点位置各放一个。学生从起点出发,到达终点后挥灭终点处的感应器,再回到起点挥灭起点处的感应器,记为一次折返跑。每个感应器扑灭5s后会自动开启。如果学生偷懒没有跑到终点即返回,起点的感应器会连续扑灭两次,系统会将这次判定为犯规无效,可防止学生作弊。次数达到预设值时会记下该组所用的总时间。

(3)仰卧起坐。两个设备一组,多组同时进行。学生平躺时一个感应器侧放在头部位置,一个侧放在大腿位置,两个感应器都用支架架起。学生起来时手肘部会遮挡大腿位置的红外感应器,指示灯灭,同时头部的感应器和指示灯亮起;当学生躺下后,触发头部位置的感应器,指示灯熄灭的同时,腿部的感应器打开,记为一次俯卧撑。

5系统功能测试

5.1终端感应器连接测试

首先测试无线终端是否能够自动连接协调器。打开APP进入主页,稍等一会屏幕左侧自动显示出连接到当前协调器的终端列表,同时显示每个终端的电量信息。设备终端列表信息如图3所示。

5.2百米跑测试

终端感应器连接成功之后,便可以进行体质健康项目测试。百米跑项目首先要选择分组,分组即设置几人同時进行,然后再设置需要的感应模式和灯光颜色等属性,准备好后点击开始按钮。如图4所示为100m测试成绩。

5.3折返跑测试

折返跑需要先选定往返跑的次数即训练强度,然后选择同时测试的人数以及感应器属性,最后点击开始。测试结束后可以得出每组学生折返跑所用的时间。

5.4仰卧起坐测试

仰卧起坐测试需要先设定训练时间,即多长时间后训练结束。其次再设定同时测试的人数,最后点击开始按钮。测试结束后会显示每组学生完成的仰卧起坐个数。如图5所示为学生1分钟仰卧起坐的成绩。

6结语

本系统成功实现了将互联网技术与学生体质测试相结合,它能够快速、便捷地获取学生体质测试成绩,并且实时在平板终端上显示出来,测试结束后可实现数据的本地保存。后期还将进行数据与云平台的对接,实现数据的自动同步上传,使学生能够自行在网络平台上查看自己的体质测试成绩,了解自己的身体健康状态。随着互联网技术和无线传感网络的发展,本系统将致力于更多应用,如运动员体能训练和专项训练等。

参考文献参考文献:

[1]李琛.武汉高校学生体质现状的调查与研究[D].武汉:武汉体育学院,2006.

[2]李冲.学生体质健康测试中弊端及后续管理服务研究[J].当代体育科技,2015(12):251,253.

[3]刘敏,谭守标,陈军宁.基于Android平台和Zigbee技术新型智能家居系统[J].计算机系统应用,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无线网关的设计及其抗干扰技术的研究[J].计算机应用与软件,2014(5):122124,187.

[6]岑荣滢,姜琴,扈健玮,等.面向智能家居应用的ZigBeeWiFi网关[J].计算机系统应用,2017(1):232235.

责任编辑(责任编辑:黄健)endprint

猜你喜欢

体质测试
高职院校学生体质健康调查研究
大学生体质健康测试“举校体制”分析
影响大学生体质测试的因素及对策探讨