计算机系统应用  2018, Vol. 27 Issue (9): 87-92   PDF    
基于无线局域网通信的室内健身车Android客户端
盛念祖1,2, 赵赫1, 王卫东1, 张中贤1, 吕波1, 李晓风1,2     
1. 中国科学院 合肥物质科学研究院, 合肥 230031;
2. 中国科学技术大学, 合肥 230026
摘要:室内健身车是一种重要的室内有氧健身器材, 常应用于心肺耐力评估测试和自助健身锻炼, 但是现有室内健身车多使用串口连接通信, 成本较高, 通用性不佳. 本文设计实现了一种基于无线局域网通信的室内健身车移动客户端, 通过辅助室内健身车连接本地无线局域网并进行通信, 实现室内健身车控制和实时运动信息展示, 相较于传统的串口通信方法, 可使健身车的使用范围更广, 更便于普及. 结果表明, 该客户端可以有效提高室内健身车系统的通信效率, 并大幅降低室内健身车的设备成本.
关键词: 科学健身    无线局域网通信    Android    室内健身车    心肺功能评估训练    
Indoor Exercise Bike Android Client Based on Wireless Local Area Network Communication
SHENG Nian-Zu1,2, ZHAO He1, WANG Wei-Dong1, ZHANG Zhong-Xian1, LYU Bo1, LI Xiao-Feng1,2     
1. Hefei Institutes of Physical Sciences, Chinese Academy of Sciences, Hefei 230031, China;
2. University of Science and Technology of China, Hefei 230026, China
Foundation item: Science and Technology Major Project of Anhui Province (16030901057)
Abstract: The exercise bike is indoor fitness equipment, which is used in cardiopulmonary endurance assessment and self-service fitness exercise. But the existing exercise bike is high cost and poor universality because of the using of serial communication. The mobile client of exercise bike is based on Wireless Local Area Network (WLAN), which communicates with the exercise bike, assists exercise bike to connect the WLAN, and provides real-time sports information display and exercise bike control. Compared with the traditional serial communication, it makes the exercise bike more widely range of using, and easier for popularize. The result shows that the mobile client can communicate with the exercise bike stably, and reduce the cost obviously.
Key words: scientific fitness     WLAN communication     Android     indoor exercise bike     cardiopulmonary function evaluation and training    

随着生活方式的转变和城市户外空气环境的恶化, 室内健身运动逐渐成为人们首选的体育锻炼活动. 室内健身车是一种室内有氧健身器材, 通过调节踏板阻力, 使用户以恒定功率保持运动. 相较于跑步机等其他室内健身设备, 具有简单实用, 安全性高, 对锻炼者关节损伤较少等优点.

课题组前期研发设计了智能化健身功率车[1,2](以下简称健身车), 用于国民体质健康评价的心肺功能评估测试环节[3], 具有体检、健身、娱乐等功能. 因为上位机使用USB串口连接和Windows系统下的MFC设计, 健身车必须配备上位机, 导致成本较高, 系统通用性较差, 用户体验不佳.

基于上述考虑, 本文设计实现了基于无线局域网通信的健身车Android客户端. 无线局域网内通信一方面可以保证通信的准确率和速度[4], 另一方面可以增强健身车的通用性. Android系统因其开放性高, 市场份额巨大[5], 相较于Windows系统, 在手机等便捷操作系统上使用率更高. 使用Android系统和无线局域网内通信, 降低了健身车成本, 扩大了健身车的使用范围, 为用户带来更良好的健身车使用体验. 通过使用本客户端, 用户可以有效降低运动风险, 提升运动效果, 从而实现安全科学健身.

本文的组织结构为: 第1节介绍本文的技术基础, 第2节介绍系统架构和使用流程, 第3节介绍客户端的具体实现, 第4节总结本文.

1 技术基础

本客户端使用Android系统, 通过无线局域网内TCP协议与健身车进行长时通信. Android系统是Google公司开发的智能手机平台, 具有开放性, 易开发, 易复用, 方便快速等优点[6]. 其拥有的巨大市场份额及通用性, 可以有效提高健身车的使用范围, 做到方便, 快捷地使用智能健身车设备[7], 完成高适配性, 高通用性, 高兼容性的健身车移动客户端.

常用的设备直连上位机通信的方式有三种: 串口有线通信, 蓝牙通信和WiFi通信. 串口通信具有传输速度快, 通信稳定等优点, 但是扩展性不佳, 设备必须自行配有上位机, 成本较高, 对于健身房, 体检站适用性较好, 但是对于个人用户体验不友好. 蓝牙通信具有低成本, 低功耗, 移植性强等优点[8], 由于目前大部分厂商普遍使用蓝牙, 部分蓝牙协议栈(如Android蓝牙协议栈)并发连接数较少, 导致使用蓝牙通信具有局限性. WiFi通信具有传输速度快, 应用范围广, 对并发连接数限制不明显等优点, 可以有效提高健身车的通用性, 扩展健身车的使用范围. 本系统最终使用WiFi通信作为与健身车的主要通信方式, 并使用蓝牙连接适配蓝牙心率手表等其他辅助性设备.

本系统使用课题组前期研发的智能化健身功率车[1], 如图1所示. 该健身车通过扩展WiFi模块, 增加无线局域网通信协议, 实现无线局域网通信; 通过使用电阻应变式称重传感器和电阻式拉绳位移传感器, 测量实时运动时的脚踏压力和轮转速度, 计算用户实时功率, 并根据实时功率调节输出负载和发电机励磁电流, 达到实时调整运动阻力, 保持用户恒功率运动[9,10]; 通过手握式心率测量仪器, 测量用户实时心率, 经由WiFi模块, 将实时的运动速度, 运动功率和心率上传至上位机, 供上位机进行数据分析.

图 1 健身车

2 系统设计 2.1 系统架构

本系统主要由健身车, 移动客户端和云服务器组成. 如图2所示.

健身车负责保持运动阻力恒定, 采集和上传用户健身数据至移动客户端; 云服务器负责处理用户登录, 保存用户健身数据, 生成运动处方; 移动客户端分为通信模块, 运动模块, 测试模块, 历史数据模块和个人设置模块, 通信模块主要负责健身车初始化, 健身车连接, 指令发送, 数据接收和解析, 并将数据提交至运动模块; 测试模块为心肺耐力测试, 运动模块主要包括处方训练和自由训练, 通过展示健身车数据, 形成实时图像, 为用户提供数据分析功能, 并在运动结束后, 向云服务器提交运动数据; 历史数据模块负责展示历史运动数据; 个人模块主要包括用户登录, 个人信息维护等功能.

2.2 使用流程

具体使用流程如图3所示.

用户首先需要注册账号, 提供静息心率, 体重, 身高, 年龄等数据. 在注册并登录进入系统后, 用户需要输入本地无线局域网密码, 初始化健身车, 使健身车保持与自己在同一无线局域网内. 初始化健身车后, 用户可以开始进行心肺功能评估, 获取心肺功能报告. 根据心肺功能情况和个人信息, 云服务器会生成符合用户身体状况的处方训练计划, 用户可以通过完成计划, 实现健身目标.

图 2 客户端系统架构

3 系统实现 3.1 通信模块

本客户端使用局域网内TCP连接与健身车进行通信. 为了与健身车保持在同一局域网下, 客户端首先需要对健身车进行初始化. 客户端在用户输入本地WiFi网络密码后, 连接健身车网卡模块生成的无线网络, 通过TCP通信发送本地WiFi网络SSID和密码至健身车. 健身车获取到密码后, 自动连接本地WiFi网络, 完成初始化.

算法1. 健身车初始化

1) // 获取本地WiFi网络SSID

String SSID = getSSID();

2) // 如果未联网, 提示用户先进行联网

if (SSID == null) {

Toast.makeText(s_context, "请连接本地WiFi网络", Toast.LENGTH_SHORT).show();

return;}

3) // 等待用户输入密码和健身车唯一标识, 避免多辆健身车混淆

String pwd = Listen(PwdEditText);

String UUID = Listen(UUIDEditText);

4) // 连接健身车默认热点

LinkWiFi(CYCLE_WIFI);

// 连接健身车默认IP

LinkTCP(CYCLE_DEFAULT_IP);

5) // 发送本地WiFi网络SSID和密码, 健身车通过其可以连接上本地局域网

sendMsg(SSID, pwd);

6) // 健身车接受SSID和密码成功后, 会返回mac, 客户端根据返回的mac地址判断是否已经初始化成功

String mac = readByTcp();

图 3 客户端使用流程图

当已经初始化完成后, 客户端会将健身车网卡mac地址和IP保存在数据库, 当用户第二次打开客户端时, 会自动向该IP发送连接请求. 如果IP地址更换或第一次连接, 客户端会广播一条UDP信息, 查找健身车. 健身车在收到该信息后, 返回IP地址.

算法2. 健身车通信连接

1) // 获取本地WiFi网络SSID

String SSID = getSSID();

2)// 如果不是初始化时所用WiFi网络, 提示用户先进入该本地WiFi网络

if (!SSID.equals(USER_SSID)) {

Toast.makeText(s_context, "请连接初始化时WiFi网络或重新初始化", Toast.LENGTH_SHORT).show();

return;}

3)// 从数据库中读取上次连接时IP

String IP = getIPForDB(UUID);

4)// 如果IP为空, 表示是初始化后第一次连接, 发送UDP广播获取IP

if (IP == null) {

// 发送健身车唯一标识的UDP广播

sendUDP(UUID);

5)// 健身车接收到含有自身唯一标识的UDP广播后会回复自身IP地址

IP = readByUDP();

6)// 客户端收到IP地址后, 返回确认收到码

sendUDP(GET_IP_STRING);

7)// 保存IP地址到数据库

saveIPToDB(UUID);}

8)// 连接该IP, 完成通信

LinkTCP(IP);

当客户端需要与健身车进行通信时, 按照协议规定向健身车发送命令, 健身车传感器开始工作, 定时测量用户运动数据, 并发送给客户端. 当运动结束后, 客户端需要发送一条结束命令, 结束运动, 健身车传感器停止工作. 协议如表1所示, $为开始结束符.

表 1 部分健身车通信协议

3.2 测试模块

为了保证用户的运动负荷在用户身体可承受范围内, 用户与健身车完成连接后, 需要进行心肺功能评估测试, 如图4所示.

健身车使用二级间歇式心肺耐力测试, 在两种功率强度下运动三分钟, 中间休息三分钟. 根据测试者平均心率情况, 获取最大功率和最大摄氧量, 用以评估测试者心肺耐力情况[11,12], 具体公式如公式(1), 公式(2):

${P_{\max }} = \frac{{\left[ {\left( {H{R_2} - H{R_1}} \right)*H{R_{\max }} + H{R_1}*{P_2} - H{R_2}*{P_1}} \right]}}{{{P_1} - {P_2}}}$ (1)
$VO{2_{\max }} = 7.0 + 1.8*\frac{{{P_{\max }}}}{{weight}}$ (2)
图 4 心肺耐力测试实现界面

Pmax为最大功率, VO2max为最大摄氧量, weight为用户体重, HR1HR2分别表示测试者每级测试30 s后平均心率值, P1P2分别表示两级负荷功率值.

为了保证测试的准确性, 降低用户运动风险, 客户端在测试中和测试完成后, 会根据测试者运动情况判断用户此次的运动过程是否存在安全风险, 运动结果是否符合测试标准, 具体标准如表2.

表 2 心肺耐力测试异常情况

当用户存在安全风险时, 立即提示用户结束运动, 并告知风险. 当存在测试失败等情况下, 会提示用户测试失败, 用户可以重新开始测试. 测试成功后, 客户端会根据用户最大摄氧量, 年龄, 性别等信息, 判断用户的基本心肺耐力情况, 为用户评分, 并将运动结果上传云服务器. 云服务器根据测试结果, 选择适合用户运动强度的处方计划并下发. 用户使用处方计划进行运动, 可以在达到健身目的情况下, 最大限度地减少运动风险, 实现安全健身.

3.3 运动模块

运动模块主要分为处方计划运动和自由运动.

处方计划运动是用户在进行完心肺耐力测试后, 云服务器根据用户心肺耐力评估情况下发的运动处方. 该处方规定了用户每周运动次数及每次运动时间, 并根据用户实时运动状况调整运动强度, 为用户提供合理健康的运动计划. 使用该处方计划, 可以有效保证用户的健身强度, 提高用户的身体素质, 降低用户运动风险, 实现科学健身.

自由运动用于用户体验使用. 用户可以自由选定功率大小和运动时间, 进行锻炼.

3.4 个人设置模块和历史模块

为了降低用户运动风险, 用户在运动前需要注册, 提供年龄, 体重, 身高, 静态心率等信息. 用户可以使用健身车自带的握式心率测量传感器, 也可使用蓝牙心率手表等心率测量仪器, 完成静态心率测量.

用户在登录后, 可以上传个人健身数据至云服务器, 并可以通过历史模块查看历史运动状况. 客户端其他界面如图5所示.

图 5 客户端其他实现界面

4 结语

本文设计并实现了健身车移动客户端, 解决了现有智能健身车成本较高, 通用性不佳的问题. 该客户端通过使用无线局域网通信, 增强了健身车使用通用性; 通过使用智能手机或平板电脑操控健身车, 使得健身车不用单独配备上位机, 成本降低了约40%. 随着无线局域网和个人手机的普及, 该方法的应用方向将日益广泛.

未来工作中, 将致力于完善并开放无线局域网通信协议, 吸引更多类别的智能健身设备接入到该系统. 同时将该客户端接入智能化健康促进服务系统, 纳入国民体质监测云平台[13], 作为科学训练处方的一部分.

参考文献
[1]
赵英俊. 新型功率车的恒功率控制系统研究[硕士学位论文]. 合肥: 中国科学技术大学, 2016.
[2]
张茹斌, 占礼葵, 彭伟, 等. 心肺功能评估训练系统的恒功率. 吉林大学学报(工学版): 1–7 [2018–01–09].
[3]
美国运动医学学会. ACSM运动测试与运动处方指南. 王正珍, 罗曦娟, 译. 9版. 北京: 北京体育大学出版社. 2014.
[4]
马季. 智能家居远程监控系统的研究与实现[硕士学位论文]. 青岛: 中国海洋大学, 2009.
[5]
Butler M. Android: Changing the mobile landscape. IEEE Pervasive Computing, 2011, 10(1): 4-7. DOI:10.1109/MPRV.2011.1
[6]
曾健平, 邵艳洁. Android系统架构及应用程序开发研究. 微计算机信息, 2011, 27(9): 1-3. DOI:10.3969/j.issn.2095-6835.2011.09.001
[7]
王朝华, 陈德艳, 黄国宏, 等. 基于Android的智能家居系统的研究与实现. 计算机技术与发展, 2012, 22(6): 225-228, 233. DOI:10.3969/j.issn.1673-629X.2012.06.058
[8]
钱志鸿, 刘丹. 蓝牙技术数据传输综述. 通信学报, 2012, 33(4): 143-151. DOI:10.3969/j.issn.1000-436X.2012.04.020
[9]
Vandewalle H, Driss T. Friction-loaded cycle ergometers: Past, present and future. Cogent Engineering, 2015, 2(1): 1029237.
[10]
Casaburi R, Porszasz J. Constant work rate exercise testing: A tricky measure of exercise tolerance. COPD: Journal of Chronic Obstructive Pulmonary Disease, 2009, 6(5): 317-319. DOI:10.1080/15412550903240152
[11]
Golding LA, Myers CR, Sinning WE. Y’s Way to Physical Fitness: The Complete Guide to Fitness Testing and Instruction. Champaign: Human Kinetics Publishers, 1989.
[12]
Beekley MD, Brechue WF, Dehoyos DV, et al. Cross-validation of the YMCA submaximal cycle ergometer test to predict VO2max. Research Quarterly for Exercise and Sport, 2004, 75(3): 337-342. DOI:10.1080/02701367.2004.10609165
[13]
赵赫. 面向慢性病运动干预的智能化健康促进服务系统[博士学位论文]. 合肥: 中国科学技术大学, 2016.