计步数据(精选6篇)
计步数据 篇1
跑步作为一种缓解生活压力和提高个人健康的有效方式越来越受到人们的重视,咕咚健身[1]、Run.GPS[2]以及Endomondo[3]和Runkeeper[4]等一批基于智能手机的计步应用系统不断涌现出来。这些计步应用系统大多利用智能手机实现对计步数据的采集与加工,其精度还有待提高。另外,由于智能手机的尺寸大、重量重,佩戴它们进行运动时也存在舒适度不高的问题。针对这些问题,我们开发了一种基于腕表的计步应用系统。该系统中重要的一个部分是腕表中的计步数据需要同步到智能手机上,以供统计和显示之用。然而,腕表的电能供应能力有限,如何设计低功耗和高可靠的计步数据同步协议成为研发基于腕表的计步应用系统需要解决的一个关键问题。
目前已提出蓝牙低功耗BLE[5]、ZigBee和ANT等无线低功耗数据传输技术。Siekkinen等人[6]比较了ZigBee和BLE传输数据过程中的能耗,发现BLE对能量的利用率比ZigBee高约2.5倍。Dementyev[7]比较了BLE和ANT数据传输过程中的能耗后发现BLE耗能更低。在传输功耗上的优势,使得BLE技术在医疗健康和健身领域已得到较为广泛的应用。Bin Yu等人[8]利用iPhone手机的BLE模块与心电图的监测系统进行通信,实现对病人的远程监控。Mai Ali等人[9]基于BLE技术研发了病人的葡萄糖监控系统。Zhe-Min Lin[10]将BLE技术应用到血压的实时监控过程中。蓝牙组织已定义了传输心率、血压和葡萄糖等数据的标准BLE应用协议,但未制订计步数据传输应用协议。此外,在嵌入式应用领域虽已提出了一些AADL(Architecture Analysis and Design Lauguage)语言为基础的协议建模[11]及可靠性和能耗分析评估成果[12]。但针对BLE应用协议的AADL建模和分析评估的成果还比较缺乏。
针对上述问题,基于BLE本文设计了一种腕表与智能手机之间计步数据同步的协议BLE-Step,并运用体系结构分析与设计语言AADL,构建了BLE-Step协议的体系结构模型,为后续分析BLE-Step协议的可靠性和能耗奠定基础。本文组织结构如下:第2节简要介绍了BLE和AADL语言相关背景知识;第3节给出了BLE-Step协议具体内容;第4节阐述了BLE-Step协议的AADL建模;最后总结全文并给出未来的工作。
1 背景知识
1.1 BLE技术
BLE是蓝牙组织于2010年提出的一种低功耗数据传输技术,它包括一簇分层的协议[13,14]。GATT协议是BLE分层协议栈中与应用层最为密切的协议。根据GATT协议可定义一组服务,表示应用需要向外部提供的功能,可运用GATT协议的特征(Characteristic)的值属性(Attribute)描述服务的服务器端与客户端交换数据的具体格式和含义。通过读写服务的特征,并按其值属性定义的格式和含义解析数据包,可实现服务的服务器和客户端的数据交换。
1.2 AADL概述
AADL是由美国自动化工程师协会设计的一种体系结构分析与设计语言[15,16]。AADL定义了一组构件及其连接的语法元素,用于描述系统的软件和硬件体系结构。AADL中常用的语法元素的可视化表示如表1所示。构件与构件之间通过构件特征(feature)进行数据和事件的交互。
AADL通过引入行为附件[17]可对线程和子程序构件的行为进行精确的描述。行为附件规约包括变量、状态和变迁三部分。变量用于表示内部数据;状态可用于定义外部可观测的行为;变迁则表示在一个状态,当满足触发条件后执行动作转换到其他状态。
图1给出一个简单的AADL行为附件规约的例子。例子中当Print线程构件被调度时,对变量x进行加1操作,并调用Print子程序打印x的值。Print线程构件的行为附件规约如下:
(1)变量。x:为基本类型-整型,如图1中第3行-4行。
(2)状态。standby:初始状态,exe:执行状态,fin:终止状态,如图1中第5行-7行。
(3)变迁。变迁条件:线程被调度(on dispatch),执行动作:对变量x加1并调用子程序Print打印x的值,如图1中第8行-10行。
2 BLE-Step协议
2.1腕表中计步数据的存储方案
本文定义的计步数据存储方案及其所用术语描述如下:
(1)存储单元。存储单元为计步腕表存储数据的最小单元,一个存储单元占用1字节的存储空间。鉴于人类运动的极限速度不超过255步/分,本文采用1个存储单元存储1分钟的步数。
(2)数据块。数据块用来存储计步腕表采集运动者运动的步数,将1天中各分钟的步数按时间先后依次存放在连续的1440个存储单元中,形成一个数据块。
(3)块信息和块信息列表。块信息是用于描述数据块的元信息。它由采集步数时的时间和有效步数的个数两个字段组成。第1字段记录了1个数据块的采集日期,代表数据块的名称,第2字段描述数据块中有效步数的个数,其分别占用3个和2个存储单元。由于腕表受限的存储空间,最多只能存储10天的计步数据,因此10个块信息构成一个数据块信息列表。
图2示意了计步数据的总体存储结构。腕表的存储器被划分出连续14450个存储单元,用于存放10天的计步情况。其中,前14400个存储单元,共10个数据块被用于存储10天的步数,紧接着50个存储单元用于存放10个数据块对应的块信息,即一个数据块信息列表。
2.2 BLE-Step协议的总体设计
根据腕表中计步数据的存储方案,BLE-Step协议包括获取计步数据块信息列表、获取特定块计步数据和重传三种服务。通过组合这三种服务可实现腕表与智能手机之间运动步数的同步。
其同步过程:首先手机请求获取计步数据信息列表服务;根据腕表返回的块信息列表,手机再根据本地存储判断需要同步哪些块数据,然后依次请求获取特定块计步数据服务,直至腕表返回所需的所有块数据,手机再将这些数据存放到本地存储中,结束此次同步服务过程。若同步过程中发生超时或丢失数据包的情况,手机可通过重传服务获取相应的数据包。
考虑到BLE最大传输数据单元和特征值属性大小定义的限制[18],BLE-Step协议将20个字节定义为1个页,以页作为交换特征值属性的基本单位。并设传输1页的超时时间为t,请求重传服务的最大次数为m。三种服务具体的值属性的定义如表2所示。下面将从值属性和服务行为的定义两个方面分别阐述重传服务、获取块信息列表和获取特定块数据服务的设计。
2.2.1 重传服务
重传服务提供漏包重传或超时重传的功能,以确保数据传输的可靠性。其包含重传信息和重传数据2个特征,具体定义如表2所示。重传信息特征的值属性用于描述需要重传页的总体信息,定义为20个字节。3个字节表示需要重传的特征名的缩写(如表2所示);3个字节表示重传特征需要的参数,无参数时置0x00;1个字节表示需要重传的总页数;最后13个字节中每个字节表示重传数据的页号,若重传页不超过13个,剩余字节置0x00,当多余13个页的数据需要重传,可多次请求重传服务,重传服务的行为定义如下4个步骤。
步骤1:手机计算本次需要重传数据占用的页数p1,置超时时间t1=p1×t和重传次数m1=p1×m,然后根据重传数据的场景向计步腕表请求写入重传信息特征值;
步骤2:腕表读取、解析重传信息特征值,并按页装配重传数据;
步骤3:手机读取重传数据特征值;
步骤4:若手机在t1时间内获取全部重传页,则按重传数据特征值属性的格式定义解析各页数据,反之将重传次数加1并判断是否大于m1,若是,向上层返回重传失败,否则返回步骤2。
2.2.2 获取计步数据块信息列表服务
获取计步数据块信息列表服务提供获取腕表中各数据块对应块信息的功能,其包含块信息列表特征,具体定义如表2所示。块信息列表特征的值属性定义为20个字节,1个字节为保留字节留待今后扩展使用;1个字节表示当前页号;1个字节表示总页数;最后17个字节依次存放各块的块信息,若当前页不能完整存放的某个块信息,剩下的块信息数据存放至下一页中;若最后一个块信息数据未占满最后一页,剩余字节用0x00填充。
获取计步数据块信息列表服务的行为定义:手机置超时时间为3t,(考虑计步腕表最多存储10个块信息,需要3个页),并向计步腕表请求读取块信息列表特征值;若手机在3t时间内获取到全部页,则按块信息列表特征值属性的格式定义解析各个页数据,否则设定重传信息,请求重传服务。
2.2.3 获取特定块的计步数据服务
获取特定块计步数据服务提供获取计步腕表中特定计步数据块的功能。其包含块信息和块数据两个特征,具体定义如表2所示。块信息特征的值属性定义为20个字节,3个字节表示块名用于表示请求哪一天的计步数据,2个字节用于表示该天已同步的计步数据个数,15个字节为保留字节留待今后扩展使用。块数据特征的值属性定义为20个字节,2个字节表示当前页号,18个字节中每个字节表示1分钟的步数。根据需要同步的有效计步数据的个数,依次按页存放,未占满最后一页,剩余字节用0x00填充。获取特定块的计步数据服务的行为定义为如下4个步骤。
步骤1:手机计算最多需要同步步数占用的页数p2,置超时时间t2=(p2+1)×t(考虑块信息特征值需要占1页),并向计步腕表请求写入块信息特征值;
步骤2:计步腕表读取、解析块信息特征值,并按页装配计步数据;
步骤3:手机向腕表请求读取块数据特征值;
步骤4:若手机在t2时间内获取全部计步数据页,则按块数据特征值属性的格式定义解析各个页数据,否则将收集丢失的页数据信息并请求重传服务。
3 BLE-Step协议的AADL建模
3.1 BLE-Step的体系结构模型
BLE-Step协议的AADL体系结构模型如图3所示,它由系统构件SynSystem定义。系统构件SynSystem包含SynPhone和SynWatch两个系统构件,它们分别定义了手机端和腕表端的同步系统。
SynPhone系统构件的ReqBlockInfoList、ReqReTransmit和ReqStepDataByBlock三个端口组,它们分别与SynWatch系统构件的ProBlockInfoList、ProReTransmit和ProStepDataByBlock三个端口组连接,以描述SynPhone系统构件向SynWatch系统构件请求重传服务、获取计步数据块信息列表服务和获取特定块计步数据服务。
根据表2中这三个服务对应特征的值属性定义,定义了ReTransmitData、BlockInfoList和StepDataByBlock三个数据构件。
(1) ReTransmitData数据构件。在图4中,ReTransmitData数据构件定义了当SynPhone系统构件请求SynWatch系统构件的重传服务时,交换数据的类型。它是根据重传服务的重传信息和重传数据两个特征值属性定义的。
(2) BlockInfoList数据构件。在图5中,BlockInfoList数据构件定义了当SynPhone系统构件向SynWatch系统构件请求获取计步数据块信息列表服务时,交换数据的类型。它是根据获取计步数据块信息列表服务的重传信息和重传数据两个特征值属性定义的。
(3) StepDataByBlock数据构件。在图6中,StepDataByBlock数据构件定义了当SynPhone系统构件向SynWatch系统构件请求特定块计步数据服务时,交换数据的类型。它是根据获取特定块计步数据服务的块信息和块数据两个特征值属性定义的。
3.2 SynPhone系统构件
SynPhone系统构件的定义如图7所示,它是由ReTranmitServices、BlockInfoListServices、StepDataByBlockServices和ConSynProcess四个进程构件构成。其中,ReTranmitServices、BlockInfoListServices和StepDataByBlockServices三个进程分别用于建模手机请求腕表的重传、获取块信息列表和获取特定块计步数据三种服务。这三个进程构件之间的交互是由ConSynProcess构件进行协调和控制。ConSynProcess构件中控制线程ConSyn的行为描述如图8所示。
(1)变量。BKLData:用于存放获取的块信息列表;BKDData:用于存放获取的特定块计步数据;RTDData:用于存放获取的重传数据;StepData:用于存放获取的计步数据;StepDataarray:用数组形式存放计步数据。
(2)状态。standby:初始化状态;com:完成状态;exeop:执行状态;fin:终止状态。
(3)变迁。standby->exeop:线程构件ConSyn从端口Syn接收到同步请求,并从StarBLE端口发出开启BLE信号。
exeop->com:线程构件ConSyn执行同步操作,同步过程为ConSyn首先请求调用进程BlockInfoListServices,并把进程BlockInfoListServices获取的块列表信息赋值给变量BKLData。ConSyn再获取本地存储StepData日期与BKLData中日期进行比较判断需要同步哪些块数据;然后,ConSyn从子程序访问端口ReqStepDataByBlock请求调用进程StepDataByBlockServices依次获取对应特定日期的StepData,直至synWatch返回所需的所有块数据并存储到数组StepDataarray中。
com->standby:请求超时,调用进程ReTranmitServices进行重传服务。
exeop->fin:往本地数据库依次写入获取的计步数据。
以下分别对重传进程ReTranmitServices,获取块信息列表进程BlockInfoListServices和获取特定块计步数据进程StepDataByBlockServices中对应的线程行为进行描述。
3.2.1 进程构件ReTranmitServices
进程构件ReTransmitServices中的线程构件ReTransmitThread用于控制数据重传,其对应的AADL行为附件描述如图9所示。
(1)变量。t1:超时时间;t:传输1页数据的超时间;m:1页数据请求重传服务的最大次数;ml:总的最大重传次数;finish:是否完成重传;mCount:已请求重传次数;result:返回的结果(Failure或者Success)。
(2)状态。standby:初始化状态;com:完成状态;parse:执行状态(进行数据解析);fin:终止状态。
(3)变迁。init->parse:线程构件ReTransmitThread进行变量初始化操作,并从端口SendReq向腕表端发出重传请求;parse->com:ReTransmitThread进行数据解析操作,并将解析的数据赋值给ReTransmitData的RTD部分;parse-->fin:返回重传结果(Failure或者Success);com->init:线程请求超时,返回失败。
3.2.2 进程构件BlockInfoListServices
进程构件BlockInfoListServices中用于控制获取计步数据块信息列表的线程构件BlockInfoListThread的AADL行为描述如图10所示。
(1)变量。t3:超时时间;t:传输1页数据的超时时间;RTI:需要重传的信息;datearray:用于存放获取的块列表中的日期;
(2)状态。init:初始状态;exe:执行状态;fin:终止状态;
(3)变迁。init-->exe:进行初始化操作,置超时时间为3t并通过端口SendReq向SynWatch发出获取块信息列表的请求;exe-->fin:将从端口ReceiveBKLData获取返回的块信息列表数据依次赋值给数组datearray;init-->init:请求超时,从端口ReqReTransmitServices向进程ReTransmitServices请求数据重传。
3.2.3 进程构件StepDataByBlockServices
进程构件StepDataByBlockServices中用于控制获取特定块计步数据的线程构件StepDataByBlockThread的AADL行为描述如图11所示。
(1)变量。t2:超时时间;t:传输1页数据的超时时间;p2:最多需要同步步数占用的页数;RTI:需要重传的信息;stepData:用于存放获取的计步数据;
(2)状态。init:初始状态;exe:执行状态;com:完成状态;fin:终止状态;
(3)变迁。init-->exe:控制线程进行初始化操作并从子程序访问端口SendReq向外发出获取特定块计步数据请求;
exe->com:SynPhone从端口ReceiveBKD获取SynWatch返回的块数据;
exe->fin:将获取的特定块的计步数据步数依次赋值给变量stepData。
com->init:若控制线程请求服务超时则从子程序访问端口ReqReTransmitService向重传进程ReTransnmitServices请求重传数据。
3.3 系统构件SynWatth
系统构件SynWatch由ConProcess4watch、ReTranmitServices4watch、BlockInfoListServices4watch和Step-DataByBlockServices4watch四个进程构件构成,如图1 2所示。ReTranmitServices4watch、BlockInfoListServices4watch和StepDataByBlockServices4watch三个进程分别用于建模腕表的重传、获取块信息列表和获取特定块计步数据三种服务,这三个进程构件之间的交互是由ConProcess4watch构件进行协调和控制的。
综上所述,以系统构件SynWatch中响应重传服务的进程ReTransmitServices4watch进行建模并对其中线程构件的行为进行相应的描述。图13给出了ReTransmitServices4watch的定义。
重传进程从子程序访问端口ProReTransmit收到重传请求后调用线程ReTransmit4watch进行重传数据封装并从端口SendRTDData把封装后的需要重传的数据发送给主控制程序,然后主控制程序将需要的重传数据发送给SynPhone,结束本次重传。其AADL行为描述如图14所示。其行为定义如下:
(1)变量。Character:特征名缩写;BlockInfoList:块信息列表;StepDataByBlock:特定块计步数据;result:返回重传的结果。
(2)状态。init:初始状态;parse:执行状态(对重传信息进行解析);com:完成状态;fin:终止状态;
(3)变迁。init->parse:线程ReTransmit4watch从子程序访问端口ProReTransmit收到调用重传的请求;
parse->com:进行数据解析,获取重传特征名缩写。如果重传特征名缩写为BKL,则从子程序访问端口ReqBlockInfoList请求获取块信息列表;如果重传特征名缩写为BKI,则从子程序访问端口ReqStepDataByBlock请求获取特定块数据;
com->init:如果请求线程重传超时,则返回Failure,结束此次重传。
4 结束语
为了满足腕表和手机之间低功耗和高可靠性同步计步数据的需求,本文基于蓝牙低功耗BLE设计一种计步数据同步协议BLE-Step,并运用AADL语言构建了该协议的体系结构模型。通过定义BLE-Step协议中重传、获取计步数据块信息列表和获取特定块计步数据三种服务的特征值属性,并精确描述这些服务的行为,为未来开展BLE-Step协议可靠性和能耗的分析评估奠定基础。
穿戴式智能计步器设计 篇2
关键词:计步器,仰卧起坐陪练器,MSP430F149,MPU6050,卡路里消耗
随着人们生活水平的提高和对健康情况的重视,步行作为一种最常见且有效的锻炼方式被广泛使用。计步器作为一种常用的锻炼设备也有了飞速的发展。从最开始的2D机械计步器,然后发展到以加速度传感器为核心的电子计步器,到现在更为集成化的智能手环,计步器的精度大幅提高,体积大幅缩小,用户体验也逐渐优化[1,2,3]。
本文旨在在前人设计经验的基础上开发一套精度较高且便携的智能计步器系统。同时采用Android智能手机作为计步器系统上位机,提升用户体验。用户可通过Android智能手机实时获得运动信息。特别地,系统融入了仰卧起坐陪练器功能,实现了系统功能多样化,充分利用了软硬件资源[4,5]。
1 系统总体设计
1. 1 系统工作原理
本智能陪练器融合了仰卧起坐陪练和计步两种功能,由下位机和安卓智能手机组成。下位机主要包括单片机最小系统、加速度传感器、蓝牙模块和锂电池供电模块。在下位机端,MCU上电后系统处于功能选择模式,默认为计步器模式。功能切换是利用上位机进行的,上位机通过蓝牙模块发送功能切换指令,由下位机的蓝牙模块接收指令,通过单片机识别指令,进行功能切换[6,7,8]。
下位机工作时,首先用加速度传感器进行数据采集,然后在MCU中进行数据处理。MCU首先对采集数据进行滤波,然后根据不同的锻炼功能采用相应的运动姿态识别算法。单片机根据算法进行数据计算,获得实时的运动效果数据。最后由蓝牙模块将处理后的数据发送至手机客户端,在手机上显示并存储运动数据[9,10,11]。
1. 2 系统总体结构框图
系统采用模块化设计,主要包括锂电池供电模块、传感器模块、蓝牙模块和安卓上位机。
如图1 所示,MSP430 作为核心处理器,第一个作用是接收加速度传感器的数据并进行处理; 第二个作用是与安卓上位机进行数据传输与交互,其间的数据交互通过蓝牙模块实现。值得注意的是,蓝牙模块并不是直接与Android上位机进行数据传输的,而是通过与Android智能机本身的蓝牙模块进行数据传输的[12]。
MSP430 发送的数据是经过单片机算法处理后的结果,上位机反映这些结果并将这些结果显示在Android界面中; 而Android发送给430 的数据主要是指锻炼功能切换指令。锂电池模块充当电源作用,本设计的工作电压为3. 3 ~ 3. 7 V。
2 硬件设计
2. 1 MCU方案
设计采用TI公司的16 位超低功耗单片机MSP430F149 作为主控芯片。430 在设计中接收加速度传感器数据,处理数据并将数据传输到蓝牙模块实现与Android上位机通信的功能。
2. 2 加速度传感器模块方案
系统使用MPU6050 加速度传感器采集人体运动信息。MPU6050 具备三轴加速度传感器和三轴陀螺仪。内部具备16 位ADC,输出量为数字信号。同时功耗较低[13]。
2. 3 蓝牙模块方案
蓝牙模块作为上下位机通信的桥梁。单片机通过下位机蓝牙模块与Android智能手机的蓝牙模块进行数据传输。
设计采用HC - 06 串口蓝牙模块作为下位机蓝牙模块。该蓝牙模块具有体积小、功耗低、外围电路简单的优势。同时,模块具备内置天线,用户无需自行调试天线。该蓝牙模块采用HCI接口设计,即蓝牙模块与单片机的连接只需要利用单片机的一个串口即可[14]。
2. 4 锂电池供电方案
系统采用锂电池进行供电。系统的额定电压为3. 3 V。蓝牙模块,加速度传感器以及MSP430 均为低电压供电。锂电池选用自带充电保护电路的3. 7 V锂电池,容量为2 100 m Ah。在充电时,只需将5 V电源直接连接锂电池的正负极即可。经过电池实测,系统运行正常。
2. 5 PCB设计
本设计采用双层电路板。成品电路板如图2 所示。在进行PCB设计时,着重考虑如下几点: ( 1) 在PCB设计时,考虑到本设计并不使用单片机片内ADC,因此模拟地和数字地不加区别,设计时定为同一电位; ( 2) 为调试的方便,PCB另外加入JTAG口,在成品阶段可移去JTAG口减小体积; ( 3) 设计使用的无极性电容和电阻全部使用0805 封装,目的也是为了减小系统体积; ( 4) 值得注意的是,由于蓝牙模块属于高速电路,因此在设计PCB时将蓝牙模块尽量靠边排布,并尽可能远离电源。为了达到更稳定的效果,采用了双层铺地。PCB实物图如图3 所示; ( 5) 为了方便系统调试,设计除了可单锂电池供电,还另外引出5 V和3. 3 V两个电源端; ( 6) 考虑调试和维护的需要,核心芯片封装设计为直插式,方便布线。
3 软件设计
3. 1 姿态判别算法设计
3. 1. 1 仰卧起坐姿态检测原理
MPU6050 传感器模块可佩戴于腰腹处,根据其与人体的关系,传感器模块的轴方向如图3 所示。检测当前三轴的加速度从而确定人体的姿态。假设传感器的Y轴与人体脊椎平行,而Z轴正方向为人体正前方,则在人体平躺时,Az= 1g,Ay= 0g,其中g为重力加速度; 相对的,当人体竖起时,Az= 0g,Ay= 1g。假设人体与水平夹角为X度,用角度分量分析,则Az=gcos X,Ay= gsin X; 反之,通过对应轴上的加速度也可确定X。以上即为依靠加速度判定人体姿态的原理[15,16]。
3. 1. 2 仰卧起坐能量消耗判据
运动消耗的热量可通过式( 1) 计算
其中,m为练习者质量; a为运动加速度; t为运动时间。在MCU进行处理时,可选定自由选定 Δt,进行累加运算以得出锻炼者消耗的卡路里。通过式( 1) 计算得到仰卧起坐过程中人体消耗热量的估算值,练习者以此为参考来衡量运动效果。
3. 1. 3 计步器步数判别原理
在人体平稳行走过程中,人体垂直加速度和前向加速度有着较为明显的周期性规律。在本设计中,系统充当计步器时不规定放置角度,则检测步数时就不能以单轴数据作为判据。根据三轴耦合关系,A = Ax+Ay+ Az作为一个判据,当A随着步态出现明显周期性变化时,即可用A作为步态判据。
3. 1. 4 原始数据滤波算法
在实际使用情况下,加速度传感器输出数据的波形会出现抖动和毛刺,解决办法就是滤波。本设计考虑的滤波算法是滑动均值滤波算法。滑动均值滤波算法是对近N次采样数据做一个平均处理,因运算的数据总是近N次数据,因此可认为其是实时的。从直观上,取均值的算法可有效削弱尖峰和毛刺的影响。不仅如此,滑动均值滤波法是一种不损失采样点的数字滤波算法。滑动均值滤波算法实现软件滤波,MSP430能满足其运算要求,参与运算的数据是最新的N个采样数据,因此具有较好的实时性能。值得注意的是,对于长度为N的选择不能过长也不能过短,过短则起不到较好的滤波作用; 若过长,则有较大的延时,实时性变差,波形幅值过于平坦。文中经过实际测试发现N的取值在5 ~ 8 时,滤波效果较好。
3. 2 Android上位机程序设计
本设计自定义了一个圆形进度条控件作为核心显示控件,圆形进度条动态地显示用户完成任务的进度。在实现自定义控件时,需要用到Canvas控件。要在画布上绘制出一定尺寸的圆环,以及字母和数字。而进度的表示则是通过圆环的填充进行,在完成一定程度的锻炼后,会以一种与原本有区别的颜色覆盖相应的圆环区域,达到显示进度的效果。制作好的UI界面,如图4 所示。
3. 3 客户端运行流程
安卓客户端软件运行流程,如图5 所示。在打开APP后,软件首先会检测本地蓝牙设备,若智能手机的蓝牙正常启动,那软件会自动打开蓝牙,若本地蓝牙设备有故障,则APP会弹出无法检测到蓝牙的提示。如果检测蓝牙失败,用户可重启APP尝试重新检测。
在蓝牙打开后,点击APP界面中的连接按钮,稍后会弹出一个检测到的外部蓝牙设备的列表。在设计中连接HC - 06 这个下位机蓝牙模块,若运行正常,APP会提示用户连接成功。
在连接成功后,默认启动计步器功能,用户佩戴下位机步行时,APP会同步实时显示步数。
在需要进行仰卧起坐锻炼时,点击切换按键,下位机会进入仰卧起坐模式。这时用户进行仰卧起坐运动时,仰卧起坐的运动数据同样会显示在上位机上。用户可按下保存按键,以保存本次运动结果。
4 实验测试与数据分析
系统供电电压为3. 3 V,PCB中额外具有5 V电源端,这样做的好处是: ( 1) 方便使用5 V电源进行调试;( 2) 作为锂电池模块的充电端,在需要充电时,将锂电池接5 V电源端即可。PCB的下端是蓝牙模块,使用表贴封装; 右上方为MPU6050 模块,采用直插式封装;MSP430F149 采用转接板封装。左下方是复位按键和JTAG口,整个下位机系统的尺寸约为8 cm × 7 cm。
MSP430 系统采用JTAG进行仿真与程序的烧录。进行上位机与下位机联合测试,在用户手持移动终端,而将下位机系统佩戴于身上或者置于口袋内时,蓝牙模块将测试结果发送到手机。
计步器功能的实验测试: 佩戴下位机系统步行,实测效果如表1 所示。
仰卧起坐功能的测试: 仰卧起坐是一种规范动作,其计数精度主要取决于被试者的动作是否规范。将下位机固定在腰间,在动作规范的前提下,一组测试结果如表2 所示。
从原理上讲,仰卧起坐动作的准确度应为100% ,但由于传感器摆放位置的差异,被试者动作过快可能会导致波形偏离阈值,而引起漏计。另外,若采样率较低,则这样的误差会更频繁发生。
通过表1 和表2,观察到仰卧起坐的记录精度比较好,然而计步器的效果相对并不理想。本文判断计步器系统的误差主要来源于计步算法的误差,步行实际波形的复杂性,系统可能会出现多记或漏记的情况。
在进行多次的修改后,发现改进后的动态阈值法还是峰谷值判别法,均不能使精度达到理想值。通过查阅器件手册发现,问题出在传感器的采样率上。20 Hz的采样率完全满足采样定理,但对于步行这种不确定的,较为复杂的波形信号,在细节的体现上会显得不足。对这样的信号即使采取小波分析也难以达到理想效果。通过实验比较,发现在115 200 bit·s- 1的情况下,传感器能够以100 Hz的采样率进行数据采集。重新计算并配置了430 的UART1 串口,使其波特率从9 600 bit·s- 1变为115 200 bit·s- 1。同时通过上位机修改了传感器的采样率,使得采样率达到100 Hz。
在不修改计步算法程序的前提下,进行了另一组测试,测试结果如表3 所示。
计步精度有了明显提升,能较准确地记录步数。
功率测试: 对串联电流表进行实验观测,得到电流平均为60 m A。实测在2 100 m Ah锂电池供电下,可稳定运行超过12 h。在整个系统中最耗费电流的是蓝牙模块,在技术不断发展的当今,蓝牙模块也会逐渐向低功耗化发展,功耗将进一步降低。
5 结束语
无线嵌入式计步鞋的设计 篇3
我国传统医学中有个很重要的理念叫“上工治未病”,其意是指要重视预防和保健,而运动是预防和保健最为有用的“良药”。在众多运动方式中,跑步是最具历史传统、最为广泛、最易实现而且非常有效果的运动方式。跑步运动其实很讲究。如何评价跑步运动的效果,也是医学工程科技人员应研究的问题。本研究设计了一种新型的无线嵌入式计步鞋,它由发射部分和接收部分组成,发射部分置于鞋底,接收部分可以佩带在手腕上。该设计提高了计步精度,同时使得跑步者能够随时掌握和控制自己的运动量。
2 硬件设计
2.1 发射端硬件设计
本设计以ATMEL公司的AT89S52[1]为核心,以NORDIC SEMICONDUCTOR公司的nRF905为辅助器件。AT89S52主要完成步数信号的识别并计数,同时控制nRF905把更新的步数发送出去。整个电路由信号处理模拟电路和发射数字电路2部分组成,如图1所示。
2.1.1 信号处理模拟电路
信号处理模拟电路如图2。本设计中选用压电薄膜传感器LDT0,具有柔性好、强度大等特点。LDT0传感器是采用PVDF(聚偏氟乙烯)薄膜制成的一种振动传感器,是一个柔性元件。但从LDT0提取出来的信号反映出来的是电荷量,所以应该先经过电荷转换电路,把电荷量转换为电压量,再经过适当放大,滤波输出到门限电压比较电路,比较电压可以由R7、R14调节,这样可以消除不同种类的人群对足底压力[3]大小不同而带来的计步误差。
2.1.2 发射数字电路
nRF905由完全集成的频率调制器、带解调器的接收器、功率放大器、晶体振荡器和调节器等组成,可以工作在433868/915 MHz的ISM频段。本设计中,nRF905工作在433 MHz频段。通过AT89S52单片机与nRF905的TRX_CE、PWR_UP、uPCLK、CD、DR、MISO、MOSI、TXEN与单片机对应管脚相连,通过MOSI按位发送信号,通过MISO按位接收信号,连接电路如图3所示。
图3发射数字电路连接图
2.2 接收端硬件设计
接收端主要由单片机、功能按键、液晶显示及nRF905构成的接收电路组成。功能按键完成模式(计步、跑步及状态模式)选择及调整时间、身高及体重功能;液晶第1种(默认)模式显示的是参数包括时间(时、分、秒)、步数,第2种模式显示的是跑步的路程及跑步所用的时间(分、秒、毫秒),第3种模式显示的是步行总路程及估计消耗的能量[5]。整个电路框图如图4所示。
3 软件设计
3.1 发射端软件设计
步态压力信号经过信号处理模拟电路的处理,得到较标准的方波,输入到单片机AT89S52的I/O口。发射端的软件设计完成信号的识别实现计步,即根据信号的特点提取步数,这是通过中断查询方式实现计步的。同时,通过控制nRF905把更新的步数发送出去。
3.1.1 计步模块软件编写
通过定时器T0工作在方式1产生50 ms中断,通过中断查询方式判断输入管脚P3-3电平的状态,在出现下降沿后重新出现高电平步数加1。由于人走路的频率相对较低,相对来说输入高低电平的状态持续的时间也较长,如果以输入低电平作为检测,则走一步会记很多步数,所以应检测输入电平的上升沿或下降沿作为计步的参考。本设计通过中断检测输入电平的上升沿作为计步参考。通过中断方式读取步数程序如下:
3.1.2 发射模块软件编写
单片机AT89S52判断步数是否更新,如更新则每次发送4个字节。由于最大步数记步数为99 999,所以前3个字节应包含步数信息,第4个字节用0X55作为校验位,且每次发送2次,这样可以大大提高发送信息的准确度和成功率。在发送之前要配置nRF905状态寄存器及命令寄存器,配置过程如图5所示。
3.2 接收端软件设计
接收端设计成佩戴在运动者手臂上,这样可以使运动者随时了解自己的运动状态,且不会对运动过程带来太大的影响。因此,设计人性化的人机交互界面至关重要。本设计采用了4个功能按键,可完成3种模式切换以及时间、体重、身高的调整,达到美观实用、操作简便的设计要求。
3.2.1 主模块软件编写
软件部分的主控模块控制整个程序运行的流程、接收发射端传过来的数据,同时协调各个功能模块的工作以及完成各个界面的切换和显示。流程框图如图6所示,首先完成液晶、定时器及nRF905状态、命令寄存器的初始化,然后进入循环状态———数据接收、模式选择及显示操作。程序为:
3.2.2 记步模式软件设计
记步模式默认显示的是时间、步数以及提供时间调整,输出体重、步长的调整,这几个调整由4个功能按键完成。一个按键用于选择进入相应的模式(这个按键在计步模式不用),一个按键用于参数(时、分、秒、身高及体重)调整,其他2个按键用于加、减1计数。软件设计框图如图7。
4 实验结果
通过在鞋上嵌入传感器,进行走步、跑步实验,测试及改进工作,达到了较好的实验效果,具有计步准确、功能丰富、操作简便、视觉效果好等特点。实验结果如图8所示。
5结束语
计步鞋的出现,为户外跑步提供了一种简单的效果评价设备。它适合于许多人群,特别是为普通群众提供了一种方便的非专业测试工具。无论是专业运动员,还是一般的普通使用者,都能利用这种产品来检测自己的运动结果。除计步外,还可以充当时钟、秒表功能。本设计基于无线方案实现了步数的检测,传输。发射端放置在鞋底,接收端佩戴在运动者手腕上,具有人性化、多功能、操作简单等特点。
本研究的创新观点在于运用无线射频技术实现步数的传输。
参考文献
[1]张友德,赵志英,涂时亮.单片微型机原理、应用与实验[M].上海:复旦大学出版社,2006.
[2]杨易华,李裕和,林绍杰,等.基于嵌入式单片机的多功能计步鞋的设计[J].微计算机信息,2009,25(5-2):98-100.
[3]韦启航,陆文莲,傅祖芸,等.人体步态分析系统——足底压力测量系统的研制[J].中国生物医学工程学报,2000,19(1):32-38.
[4]Richard Barnett,Larry O'Cull,Sarah Cox.嵌入式C编程与Atmel AVR[M].周俊杰,译.北京:清华大学出版社,2003.
[5]戴剑松,李靖,顾忠科,等.步行和日常体力活动能量消耗的推算[J].体育科学,2006,26(11):91-95.
[6]马金祥,何一鸣.基于nRF905模块的AT89S单片机无线收发系统设计[J].通信技术,2009,42(2):36-37.
计步数据 篇4
关键词:模式识别,计步器,iOS,智能手机
0 引言
在日常生活中进行合适的运动对人们的健康起到至关重要的作用。准确的人体运动行为识别在很多领域都具有重要的意义。在临床医学中,对有些疾病的治疗就需要辅以科学的运动,这就需要一个针对性的运动方式和强度的指导方案,监测病人的运动行为也变得必不可少。随着移动互联网技术和业务的不断发展壮大,它将成为现阶段互联网发展的一个新契机,为互联网的发展提供一个新平台,对互联网的推广起到关键作用。而且由于移动应用具有随身便携特点、整合多功能、个人定制等独特优势,在传统的互联网应用基础上提供了可持续发展的新商业模式和广阔的发展空间[1]。
与此同时,移动互联网的出现,使人们可以更便捷的随时了解自身健康状况。它将互联网和移动通信紧密的结合在一起,用户通过移动终端访问互联网。现今,全球一共有大约三分之一的互联网用户,相当于中国和印度的总人口,仅中国就占约有10亿的手机用户,预计印度也将于今年年底突破十亿大关。目前,移动互联网正逐渐渗透到人们生活、工作的各个领域,短信、移动音乐、手机游戏、视频应用、手机支付、位置服务等丰富多彩的移动互联网应用迅猛发展,正在深刻改变信息时代的社会生活[2]。而智能手机应用作为智能手机中最有代表性的内容,可以充分利用智能终端硬件模块的功能,加速度传感器模块等,将其整合为能够满足特定需求的应用软件,具有使用便捷、功能丰富、需求定制化等特点。用户可以通过手机应用享受更加个性化的移动互联网服务,这种个性化的服务无疑会提升移动互联网对用户的吸引力,其中主要包括健康健身、导航、社交等类别。本文正是选择了健康健身这一应用领域作为研究方向。
在本文中,我们首先研究了苹果手机系统的特点和系统结构;然后调研了市面上有代表性的手机健康类软件;接下来开发设计出了一款基于iOS系统的计步器并进行了测试。最后是得到结论和进一步的工作。
1 基于手机加速度传感器的iOS平台应用
1.1 iOS系统及程序实现的系统结构示
iOS的系统架构分为四个层次:核心操作系统层(Core OS layer)、核心服务层(Core Services layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer)。iOS系统结构图如图1所示。
iOS系统基于UNIX,所以我们完全可以相信这个操作系统,从系统的稳定性上来说它要比其他操作系统的产品好很多。位于iOS手机操作系统架构最下面的一层是核心操作系统层(Core OS layer),这里包括内存管理、电源管理、文件系统以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。上边一层是核心服务层(Core Services layer),通过它我们可以访问一些iOS的服务。在往上是媒体层(Media layer),通过它我们能在应用程序中用到各种媒体文件,图形的绘制,进行音频与视频的录制,和制作基础的动画效果等。最上面一层是可触摸层(Core OS layer),这一层为应用程序开发提供了很多有用的框架,并且大部分与用户界面有关,从本质上来说它主要负责用户在iOS设备上的触摸交互操作。而我们所用到的负责加速度传感器等硬件支持的框架都在这一层。应用程序的系统结构示意图如图2所示。
1.2 设备及开发环境
不同的手机配置有不同型号的加速度传感器,因此相应的电阻、缓存、灵敏度和误差也不相同。在这里,我们使用的是iTouch 4和iPhone 4 (两者加速度传感器硬件相同)作为开发平台,可以满足开发的硬件需求。屏幕是640*960的全触屏,有很好的用户体验。iOS系统是今年非常流行的手机操作系统,有着很重要的参考价值。在Mac开发端我们使用的是Macbook Air,Mac OS X 10.7.2操作系统,Xcode 4.2开发平台,iPhone 4/iTouch 4 iOS 5.0.1系统。
2 现有同类应用软件主要功能及优缺点
2.1 现有同类主流应用软件及功能
目前世界上主要的智能手机平台有iOS、Android、Symbian、Black Berry和Windows Phone,这里对上述五个平台的应用市场中健身运动类的应用软件进行调研分析,并选择其中有代表性的几款作为主要分析对象。初步调研结果如下:
Run Keeper (安卓平台),计步器(iOS平台),NOKIA SPORTS TRACKER (塞班平台),ENDOMONDO (Black Berry平台),TRAX (Windows Phone平台):五款比较专业的健身类软件,它们都可以对用户的运动情况进行跟踪测量。最为方便的是,当用户保存记录时,软件还能将记录上传到为用户提供的个人网页中,允许用户查阅所有历史记录并了解一些评测数据,同时还能查看自己的运动路线图。共同缺点是计步功能不强,甚至有的软件误差率在50%左右,无法达到计步器的效果。图3为应用程序计步器免费版运行界面。
3 基于iOS平台计步器的实现
3.1 数据的获取
从手机可以获取到的数据中,加速度数据最能反映出用户行走的步数,因此我们从苹果手机的加速度传感器中可以获取表1数据:
3.2 数据的处理
这里我们原始的信号进行滤波处理。首先进行降噪处理。去噪和平滑在基于加速度传感器的人体运动模式识别当中通常都会被用到,这里我们用到了一种滤波方法,平均数滤波器,中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术。通过对原始数据相邻的n个数取平均值来代替原始数据,让周围的点值接近的真实值,从而消除孤立的噪声点[3]。方法是应用某种结构的滑动模板,将板内点按照值的大小进行排序,生成单调的数据序列然后通过高通滤波器,设置截止频率点,除去重力信号的影响其中alpha由t/(t+dT)计算得来,t是低通滤波器的时间常数,dT是事件报送频率得到经过预处理后的应用到算法中的数据,通过处理的数据平滑了许多并且没有重力的干扰,可以直接使用。
3.3 识别方法
首先我们确定加速度传感器的采样频率,由于步态识别算法需要实时运行,耗电比较大,手机电池容量一般不打,并且耗电与采样频率成正比,频率越高识别效果自然越好,因此需要在电量消耗和采样频率之间寻找到一个平衡点。根据运动医学数据,人体的极限步伐速度是5步/秒、人体在正常情况下每两步之间的时间间隔理论上大于200ms,以此为基础,算法中设定加速度数据采样时间间隔为50ms,即采样频率为20Hz。
由于手机放在裤兜里边方向会随着行走而改变,所以从某个单一方向上很难判断出行走步伐,我们在这里使用夹角向量法,也就是求出xyz三个方向向量的和向量的大小和方向。由于和向量反映出某一时刻人的某条腿感受到的加速度的相反力的作用,随着人体的行走呈相应的变化规律,因此可以用来识别步伐。夹角向量步态示意图如图4所示。
可以根据如下公式1和反余弦函数计算出夹角大小
根据固定频率采样得到的和向量夹角值如下,单位为度,向量夹角数据采集如图5所示
从图中可以看出,使用者以正常速度步行时,夹角度数呈某种规律变化。由于手机放在裤兜中,放手机的一侧脚着地时加速度变化幅度最大,导致了相邻向量夹角变化幅度较快。所以我们取一个波形段内的波峰值为行走一步[4]。接下来要对波峰进行判断,但是在实际测试过程中,仅大于相邻两个振幅不足以保证当前波峰为步态识别算法中需要的波峰振幅,有可能是由于噪声数据所造成的影响,因此,我们使用连续的五个点数据(人类极限步行速率200ms/步,即每秒人体最快行进5步)来进行波峰识别,保证识别的正确率。在连续的五个点中,我们保证(1)中间的点大于两边两个点的值;(2)波峰的值大于40°(在长期测试中得出结果),(3) 10个点内,也就是正常最快行走速度0.2秒/步内,只有一个波峰,满足以上三点则确定一个波峰值,也就是用户行走了一步。
4 测试和改进
4.1 测试环境
针对上述开发的健康软件进行测试,在我们这个测试中使用的是iPhone4S和iTouch4设备(二者三轴加速度传感器或得到的数据一样),我们找了10位不同年龄段不同步行姿态的实验者,针对手机放在裤兜,手持和背包做大量测试,记录运动者真实的步数和软件测出的运动状态的差别,采集每一次的测试数据后进行分析整理,并与真实数值进行对比。
4.2 测试结果
测试结果如下表,测试者每组所走步数均为200步,每个测试者在裤兜,手持,和背包三种状态测试5组数据,测试结果如表2所示,表格中为平均值。
从结果中可以看出算法有较高的步态识别率,其中手机放置在裤兜中识别率最高,达到了94%以上。基于该算法的iOS健身应用iSteper已经在AppStore上线,有不错的下载量,下载地址https://itunes.apple.com/cn/app/isteper/id484346846?mt=8[5]。应用程序截图如图6所示
5 结论
本文证明了一种基于手机上加速度传感器的识别人体步态的算法。我们首先通过中值滤波和高通滤波去除噪声,接下来根据夹角向量法,计算出夹角度数值,最后通过对波峰的选取和处理,选择出到波峰值也就是步数。通过测试看到平均准确率达到了92.68%,可以较准确地识别出人体的步态行为[6]。手机手持或者放在裤兜及背包里,简单、及时的反馈给用户相关信息。进一步工作在于提高识别准确度等。
参考文献
[1]包丽英.健康与运动健身关系之研究.教育教学论坛[J], 2012(5):103-104. BAO L Y.The Research of the Relationship between Health and Exercise.Education and Teaching Forum[J],2012(5): 103-104.(in Chinese)
[2]肖志辉.移动互联网研究综述.电信科学[J],2009,25(10): 30-36. XIAO Z H.Mobile Internet Research.Telecommunications Science[J],2009,25(10):30-36.(in Chinese)
[3]LEE S H,PARK H D,HONG S,et al.A Study on the Activity Classification Using a tri-axial Accelerometer[A]. 25th Annual IEEE International Conference on Engineering in Medicine and Biology Society,Cancun,Mexico,vol.3, 2003,2941-2943.
[4]MANTYJARVl J,HIMBERG J.SEPPANIN T.Recognizing Human Motion with Multiple Acceleration sensors[A]. 2001 IEEE International Conference on Systems,Man,and Cybernetics,vol.2,2001,747-752.
[5]MA S Y.iSteper in iTunes[OL].[2011.12].https://itunes. apple.com/cn/app/isteper/id484346846?mt=8
计步数据 篇5
由于近代以来人们在生活中越来越依赖于现代化的自动化设备,导致人类身体活动的机会越来越少,随之而来的是肥胖、高血脂等生活病越来越多。而要解决这一情况,步行被认为是最有效的方式。所以,健康步行管理工具——智能电子计步器的研发就逐渐被人们所重视,在人们平时行走锻炼的时候,其不仅能精确显示行走的步数和时间,还能实时掌握步行中卡路里消耗量和燃烧脂肪量,让人们可以很精确地对自己的健康进行管理。
随着微电子技术的发展,现在市场开始抛弃准确性和灵敏度很低的机械式的计步器,越来越偏向于采用加速度传感器的电子式的计步器,本项目中传感器可以利用AD公司的低功耗三轴加速度计ADXL330,可以精确测得人行走时的步态加速度信号。通过微控制器相关算法可以获得人行走时的步数,这种电子计步器具有功耗低、精确度和灵敏度高等优点。在此基础上,再辅以温度模块测量,LCD显示模块,电池管理模块,数据存储模块,实时时钟模块等,加以低功耗设计,完全可以做成受市场欢迎的产品。
1 硬件总体设计原理及框图
本文介绍了一种突破传统意义上的电子智能计步器,主要特点是便携式。采用了以ARM7为核心的主处理器,利用其丰富的IO口,32位独立的地址数据总线,计数器、定时器等强大的功能,只需外接少量的电路,便可实现系统所需的功能。再移植入uClinux操作系统,保证了系统的实时性和稳定性。配合加速度传感器以及人机交互电路,形成了测量精度高,存储能力强,人机界面友善,网络化的电子智能计步器。
1.1 总体框图
本系统总体的设计思路如图1所示。
系统以Philips公司的ARM7芯片的LPC2210为中央处理芯片[1],外扩64M 的SDRAM和64M的NAND FLASH,移植入uClinux操作系统。LPC2210 使用ARM7TDMI-S内核, 主频是405M,具有通用的串口控制器,PWM控制器, A/D 转换器,GPIO,外部中断,定时器,计数器等功能。
系统采用加速度传感器ADXL330将人走路时产生的加速度信号转化为模拟信号,通过AD转化为数字信号交由CPU处理,并在CPU内部进行相关算法来实现计步。外围接口电路有:RTC电路,电源及充电电路,SD卡接口电路,LCD液晶显示电路,以及网络电路。
1.2 ADXL330加速度计电路以及计步算法[2]
本文采用美国ADI公司生产的三轴加速度计ADXL330。其连接图如图2所示。
对于本系统而言,由于对ADXL330供电的电源电压为3.3V,所以它输出的灵敏度为330mV/g,也就是加速度每增加1g,输出的电压UO就增加330mV。
用LPC2210自带的10位A/D转换器经过信号调理电路采集从ADXL330输出的模拟Uo电压信号,从而得到与某时刻倾角相对应的加速度值,通过相应的反正弦运算即可得到倾角值,进而可以计算得到步数。
由UO=a×Kg=a×KPR×R3/R1=a×200×R3/R1,故:
由图3可知倾角的示意图,
所以,通过某三轴加速度计进行倾角的计算,再进行相关算法可以得出ADXL330芯片在空间的位置,又由于人每走一步,纵向总会产生正负有规律的加速度,从而可以通过三轴的加速度计测量到的加速度折合到纵向的加速度来求得步数。
1.3 模拟信号调理电路
由于加速度计ADXL330输出的模拟信号的电压幅值范围与ARM7内部自带的AD输入通道的电压范围不同,所以必须要经过信号调理电路的比例调整、滤波和限幅后才能送到ARM7芯片的AD口。本文设计的模拟信号调理电路如图4所示。
1.4 LCD模块及硬件接口
本系统中主要由以下几个外围接口电路组成:LCD显示电路,温度测量电路,键盘接口电路,充电电路等。但是限于篇幅,本文仅详细介绍LCD显示部分。
本系统使用的液晶显示模块采用T6963C液晶显示控制器,LPC2210可以通过总线的方式与其进行通信。本系统使用液晶模块来显示步数,时间,已经消耗的卡路里数,使人机界面更友好。
需要注意的是:本文选择的屏是5V电压供电的,对CPU输入的3.3 V信号可以认作是高电平,但是输出给CPU的5V信号线时,必须要通过74LVC4245芯片来进行电平转换。液晶连接原理如图5所示。
1.5 日常体力活动能量消耗的计算公式[3]
根据计步器参数推算步行能量消耗和一日总能量消耗的公式为:
步行能量消耗(kcal)=0.43*身高(cm)+0.57*体重(kg)+0.26*步频(步/min)+0.92*时间(min)-108.44。
所以,在使用时,只要通过键盘输入个人的身高和体重,智能电子计步器就可以计算出当天消耗的能量。
2 软件设计
2.1 uClinux在LPC2210上的移植[4]
uClinux对LPC2210 的支持:Linux.2.4.X/arch 下的每个子目录代表移植到uClinux 环境下的不同的处理器体系结构。armnommu目录表示的是无 MMU 的ARM 芯片。因为LPC2210 也属于ARM 体系,所以本文要做的工作就是添加及修改与 LPC2210处理器硬件相关的细节。限于篇幅,移植细节在这里不作介绍,只在下表列出需要修改的文件:
arch/armnommu/config.in 添加 CONFIG_ARCH_LPC 项
arch/armnommu/tools/mach-types 添加 LPC2210 体系结构定义
arch/armnommu/mm/proc-arm6,7.S 添加 LPC2210 芯片的硬件信息
arch/armnommu/kernel/entry-armv.S 添加 LPC2210 中断部分宏定义
linux-2.4.x/Arch/Armnommu/mach-lpc 添加 LPC2210 目录
include/asm-armnommu/arch-lpc/hardware.h
添加 LPCC2210 头文件
arch/armnommu/kernel/head-armv.S 添加 关于 LPC2210 的启动部分
arch/armnommu/mach-lpc/arch.c 添加 LPC2210 结构定义
arch/armnommu/mach-lpc/irq.c 添加 关于LPC2210中断管理部分
arch/armnommu/mach-lpc/Makefile 添加 makefile 文件
armnommu/Makefile 定义内核开始地址
drives/block/blkmem.c 修改 ROMFS 的地址
uClinux-dist/vendors/PHILIPS/lpc2200/rc 修改启动脚本
2.2 设备驱动程序的编写[5]
(1)设备驱动程序的一般编写步骤。
①确定设备的主设备号。
②填充static struct file_operation这样的结构。
③定义一个类似__init mydriver_init(void)这样的注册函数。
(2)填充驱动程序子函数集struct file_operation结构。
(3)中断处理:首先,中断不是必须的。如果设备要用中断模式,就要构造中断处理函数,并注册中断处理函数。uClinux中断处理过程由中断子系统完成;而中断处理函数只是处理具体操作,即读写数据等。成功注册该中断处理函数,就挂接到中断子系统上了。
(4)时间处理:在驱动程序中可以使用定时器来调度函数在未来某个特定时间执行。定时器包括它的超时值(timeout, 单位是jiffies)和超时时调用的函数。
图6为本系统按键驱动程序的流程。
2.3 上层应用程序的设计[4]
在本系统中,为了保证准确性和实时性,要求多个任务可以同时进行,如果采用单任务的模式缺少灵活性,难以满足系统的实时性要求,所以整个系统需要多任务的模式运行。uClinux是专为无存储器管理单元(MMU)的微控制器打造的嵌入式Linux操作系统。在uClinux下,其对线程的支持较差,所以还是选用多进程来实现。
目前uClinux已成功移植到ARM7TDMI微处理器上。 由于uClinux主要是针对无MMU 微处理器开发的,大多数内核的二进制代码和源代码都被重写,但保留了Linux 操作系统的主要优点:稳定性、优异的网络能力以及优秀的文件系统支持。 uClinux的内存管理与传统Linux区别最大的地方在标准Linux是针对有MMU的处理器设计的。在这种处理器上,虚拟地址被送到MMU,把虚拟地址映射为物理地址。通过赋予每个任务不同的虚拟物理地址转换映射,支持不同任务之间的保护。对于uClinux来说,其设计是针对没有MMU的处理 器,即uClinux不能使用处理器的虚拟内存管理技术。uClinux仍然采用存储器的分页管理,系统在启动时把实际存储器进行分页,在加载应用程序时,程序分页加载。但是由于没有MMU管理,所以uClinux实际上是采用实存储器管理策略的。这一点影响了系统工作的很多方面。uClinux系统对于内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。操作系统对内存空间没有保护,各个进程实际上共享一个运行空间。一个进程在执行前,系统必须为进程分配足够的连续地址空间,然后全部载入主存储器的连续空间中。
在本文的系统里,根据功能划分为三个进程:将LCD显示为一个进程函数LCDShowTask();三路AD采集以及数据处理作为一个线程函数MainTask();测温等为一个进程函数TempTask()。最终结果表明此系统完全满足实时性及稳定性的要求。
3 结束语
本文介绍了基于ARM7和uClinux操作系统的电子智能计步器,便携操作的现代检测技术,利用uClinux使得设计得以简化并保证了系统的实时性和稳定性,可以非常方便地应用于现代人的健康减肥生活中。
摘要:为满足现代日益增长的健康减肥的需求,文中以ARM7为微处理器设计了一款嵌入式电子产品计步器,运用液晶图形化显示技术,大容量信息存储,测量和控制数据处理技术,网络通信技术等,加入嵌入式系统的应用,移植了uClinux实时操作系统,实现了仪表的智能化、信息化和网络化。实践证明其满足了实用性和可靠性的要求。
关键词:uClinux,LPC2210,ADXL330,LCD
参考文献
[1]周立功.ARM嵌入式系统实验教程[M].北京:北京航空航天大学出版社,2004:1-28.
[2]ADXL330datasheet[Z].AD公司,2002.
[3]戴剑松,李靖,顾忠科,等.步行和日常体力活动能量消耗的推算[J].体育科学,2006(11):91-95.
[4]Kurt Wall.GNU/LINUX编程指南[M].2版.张辉,译.清华大学出版社,2005.
计步数据 篇6
随着人们对自身的身体健康状况的重视, 各种各样的计步器应运而生。目前, 计步器根据其实现原理可分为三大类: 第一类是机械式的计步装置, 主要是利用人体行走时的振动引起计步器内部弹簧片或者弹力小球的振动来产生电子脉冲, 内部处理器通过判断电子脉冲的有无来达到计步的目的[1], 该方式虽然成本比较低, 但是其计步十分不准确。第二类计步器是基于ISO平台和Android平台[2,3], 利用无线通讯技术将步数信息发送至手持移动设备[4,5], 准确率较低。第三类是加速度式计步器, 利用加速度传感器, 测出使用者步行时各个方向的加速度值, 通过一定的算法得到使用者的步数值[6,7]。
本文介绍一种基于Cortex-M0+ 内核的32 位微控制器MKL25Z, 采用三轴加速度传感器MMA8451Q的智能化计步器。所设计的计步器使用寿命长、检测精度高、系统功耗低、人机界面友好, 能满足用户的日常需求[8]。除此之外, 还有行走距离换算、能量消耗计算、提醒是否满足日常运动需求等增值功能, 并对温度、湿度、气压等环境变量的实时监测, 通过USB将采集的数据传送到上位机。整个系统的设计理念为高精度,低功耗[9]。
2 智能立体车库系统整体结构
本系统共有以下七个部分组成:MKL25Z最小系统模块、三轴加速度触感器模块、温湿度传感器模块、电容触摸按键输入模块、LCD5110 显示模块、无线通讯模块以及上位机通讯模块。系统总体设计框图如图1 所示。
本设计利用三轴加速度传感器获取佩戴者运动时身体在三个轴的加速度分量, 通过滤波算法和计步算法分析获取步数, 配合用户的身高、体重、步距等信息,换算得到行走距离和消耗的能量, 并将相关信息显示在液晶屏上。利用本设计的电容触摸按键可快捷地控制屏幕显示相应信息。温湿度传感器采集到环境的温湿度参数后将环境的温湿度变化显示在液晶屏上。当佩戴者的特征信息和运动数据确定后, 通过电容触摸按键的相关操作将其储存到微控制器的内部Flash中,保证信息在系统掉电后不丢失。用户也可以通过USB数据线将计步器连接至电脑终端, 将记录的信息上传至上位机显示。
此外, 在开发调试阶段, 为实现对计步器的远程监控, 本设计又另外增加了无线模块, 将佩戴者X、Y、Z三个方向的加速度分量实时传送至上位机显示[10], 可视化效果明显。为配合上述功能, 本设计运用C语言编写了一个计步器专用的上位机软件。
3 系统硬件设计
3.1 系统硬件总体设计
Cortex-M0+ 内核基于ARMv6 架构, 支持Thu mb/Thumb-2 子集ISA, 单核心, 采用低成本的90nm LP工艺制造, 核心面积仅0.04mm2, 每MHz单位频率消耗的电流、功耗分别有9μA、11μW, 是现今其它8/16位微控制器的大约三分之一,而性能上又比它们高出很多。Cortex-M0+ 内核的Kinetis L系列MKL25Z128VLK4超低功耗模式多种灵活的功率模式, 适合不同的应用情形, 可最大限度延长电池寿命; 多种技术优化功耗, 包括90nm薄膜存储(TFS) 技术、时钟和电源门控技术, 以及位处理引擎、外围交叉桥和零等待闪存控制器的高效平台等; 深度睡眠模式下, 可在不唤醒内核的情况下进行智能决策并处理数据。结合价格、功耗和精度等多方面考虑,选择飞思卡尔公司的三轴加速度传感器MMA8451Q作为计步传感器[11], 它采用的是I2C通讯协议。
为尽可能的降低功耗, 可只引出使用到的端口。对于功耗高的模块, 可通过一个IO控制P沟道MOS管的通断, 从而控制对模块的供电。为了实现远程监控计步器的工作状态, 确保计步器正常工作, 同时为了直观的快捷的观测传感器数据, 本设计增加了NRF24L01 模块和UART接口作为系统的调试接口。
3.2 各模块设计与分析
(1) 最小系统电路
最小系统电路由电源电路、SW下载电路、复位电路、系统时钟电路、RTC时钟电路和滤波电路组成。本设计采用聚合物锂电池供电, 故选择低压差稳压器件MIC5203 来满足设计要求, 同时又设计了通过USB接口进行为锂电池充电, 电路如图2 所示。另外, 复位引脚低电平可导致该MCU复位, 系统时钟电路采用无源晶振,RTC时钟电路中采用有源晶振。
(2) 电容触摸按键电路
电容式触摸按键的硬件电路仅将TSI引脚连接到一定面积的覆铜区即可。PCB制作过程中, 应注意尽量使触摸按键到MCU触摸引脚的走线尽量短和细; 触摸按键走线尽量远离其他元件和走线,尤其是远离信号线(如IIC,SPI, 高频通信线) 如图3 和图4 分别为传感线与通讯线在同层与不同层的分布示范; 不推荐将传感器的走线放在任何电源层上等。
根据分析, 本设计了如图5 和图6 所示的滑动条电容触摸按键的PCB设计, 整个设计最终取得了灵敏度高、功耗低等效果。
(3) 液晶显示电路
LCD5110 是一块集成了低功耗CMOS LCD控制驱动器的液晶屏, 分辨率为84×48, 采用串行接口与主处理器进行通信, 接口信号线数量大幅度减少, 包括电源和地在内的信号线仅有8 条。模块的体积很小, 采用3.3V低电压供电, 正常显示时的工作电流在200µA以下, 传输速度快, 是LCD12864 的40 倍, 是LCD的20 倍。本设计采用P沟道MOS管控制对液晶的供电,采用N沟道MOS管控制液晶的背光, 根据实际需要控制液晶的工作状态, 从而达到降低功耗的目的。接口电路如图7 所示。
(4) 传感器接口电路
本设计优先选择功耗极低, 分辨率较高的三轴加速度传感器MMA8451Q, 它采用的是I2C通讯协议。传感器外围电路非常简单, 如图8 所示。其中I2C数据线需要上拉电阻将引脚电平拉高,SA0 引脚用来选择传感器的节点地址。而温湿度传感器DHT11 的缺点是传输速度慢, 耗时长, 功耗高, 所以在硬件设计的时候,增加了MOS管控制温湿度传感器的工作状态, 达到控制功耗的效果。
(5) 通讯接口电路
为了在设计计步算法时获取步伐的真实数据, 我们增加了无线模块作为辅助调试手段。同时我们设计了用一个P沟道MOS管控制供电, 以避免正常工作状态下不必要的功率消耗。USB是具有抗干扰能力的差分信号传输。在数据线上各串联一个33Ω 的电阻, 防止差分信号在高速传输过程中, 由于阻抗不匹配, 造成信号反射。
4 系统软件设计
4.1 软件整体设计
本设计主要有计步算法的实现、Flash存储运动数据、USB与上位机的通信、温湿度传感器的实现、TSI电容触摸按键的实现、及人机界面6 个功能设计。上电之后, 主界面显示当前时间和温湿度, 输入性别、步长、体重等个人参数后, 进入计步状态, 加速度计正常工作,实时显示当前步数、距离和消耗的热量。计步完成后,可以将信息存储起来, 计步器可记录七天的运动信息。计步器可通过USB数据线与上位机通讯。在没有按键按下的情况下, 系统自动关屏, 以降低功耗; 在加速度传感器处于休眠模式且没有其他操作时, 系统经过一段时间后自动进入低功耗模式。
图9 为主程序流程图。首先初始化系统时钟, 配置液晶屏的初始界面, 以及加速度传感器、温湿度传感器、USB、Flash和个人信息配置等初始化工作, 并取得电容触摸按键无遮挡状态下的电容值。然后进入任务循环,根据当前的按键操作调用相应的功能函数, 如若在主界面, 则正常显示日期、时间, 环境的温湿度; 要开始运动, 则使加速度传感器处于激活状态, 并开始计步; 若要存储运动信息, 则调用Flash读写函数。如果一段时间没有使用计步器, 则系统进入低功耗状态, 传感器暂停工作, 并切断液晶屏的电源。此时, 可通过滑动方式解除低功耗模式, 使得计步器正常工作。软件部分采用模块化设计的思想, 把系统分为七个模块, 然后每个模块对外留出接口, 方便其他模块与其通信, 每个模块之间无干扰, 相对独立。
4.2 计步算法的程序设计
图10 和图11 是实现计步算法的流程图。其中图10是主机程序流程图, 图11 是从机接收无线数据的程序流程图。
缓冲区数据经过滤波算法后, 得到了比较理想的波形曲线。计步算法分为两步: 第一、选择波动最大的那个方向的数据, 实现动态阈值, 如程序清单所示; 第二、采用迟滞比较算法实现计步, 并更新步数。
4.3 实现低功耗的程序设计
K L25Z系列微控制器共有十种工作模式, 分别是两种Run模式, 两种Sleep模式, 六种Deep Sleep模式。在这八种睡眠模式中, 各自的功耗不同, 唤醒条件, 唤醒所需时间, 均不相同, 工作电流在174n A至7m A不等。用户可根据实际需求配置和切换微控制器的工作模式。本系统选择了功耗最低的Deep Sleep模式中的VLLS1(Very Low Leakage Stop) 模式,以及Deep Sleep中唤醒方式最灵活的VLPS(Very Low Power Stop) 模式, 作为低功耗的实现模式。如图12 所示。
5 测试结果
本设计统计了用户在跑步和行走时计步器的测量结果。如表1 所示:
可以看出,佩戴者在跑步时计步器的准确度高一些,这是由于佩戴者在跑步时垂直方向的加速度变化较为剧烈, 加速度数据的波形变化明显, 且伴有明显的节奏性,周期特性好[12]; 而佩戴者在行走时, 波形振幅较小, 与抖动波形区分不明显。
6 结束语
本文讨论了基于飞思卡尔Cortex-M0+ 微控制器及液晶显示模块的高精度、低功耗计步器的设计与实现,并对具体的硬件电路和软件系统进行了详细的介绍。三轴加速度传感器MMA8451Q具有三轴数字输出功能,无佩戴位置的要求,方便携带、实用性强。实验结果表明,本计步器具有、体积小、使用简单、稳定性好、计步精度高等优点。
参考文献
[1]朱培辉.一种计步器[P].中国实用新型专利.ZL200520059793.0,2006-8-2.
[2]马松岩.基于ISO平台的计步器应用的设计与实现[J].软件,2012,33(12):66-68.
[3]WU SHYI-SHIOU,WU HSIN-YI.The Design of an Intelligent Pedometer Using Android[J].Procee dings-2011 2nd International Conference on Innovations in Bio-Inspired Computing and Applications,IBICA,2011:313-315.
[4]储开斌,周耀军,何宝祥等.基于射频技术的短跑训练计步器设计[J].常州大学学报(自然科学版),2010,22(2):58-61.
[5]彭云,杨易华,杨启辉等.无线嵌入式计步鞋的设计[J].医疗卫生装备,2009,30(12):15-17.
[6]韩文正,冯迪,李鹏等.基于加速度传感器LIS3DH的计步[J].传感器与微系统,2012,31(11):97-99.
[7]宋浩然,廖文帅,赵一鸣.基于加速度传感器ADXL330高精度计步器[J].传感技术学报,2016,19(4):1005-1006.
[8]王军利,张冰,贾丽雅,孙忠伟.4种运动传感器测量身体活动能耗的有效性研究[J].天津体育学院学报,2012,27(5):427-431.
[9]蒋伟.基于ARM7及u Clinux的电子智能计步器的设计[J].信息技术,2012,11(4):114-117.
[10]AGGARWAL,VARUN.Power-saving pedometer also measures speed[J].Electronic Design,2004,16(52):63-64.
[11]SHEU,JIA-SHING;HUANG,GUO-SHING;JHENG,WEI-CIAN;HSIAO,CHIH-HUNG.Design and implementation of a three-dimensional pedometer accumulating walking or jogging motions[C].2nd International Symposium on Computer,Consumer and Control,IS3C 2014.Proceedings-2014 International Symposium on Computer,Consumer and Control,IS3C.New Jersey:IEEE Computer Society,2014:828-831.
【计步数据】推荐阅读:
数据挖掘数据存储07-01
大数据推荐数据模型08-27
财务数据和业务数据09-01
大数据与数据挖掘10-15
大数据时代的数据观05-14
数据存储与数据管理07-05
数据安全与数据恢复09-06
大数据和数据化思考05-21
大数据时代数据库技术09-10
大数据时代的数据挖掘09-26