引言
步态作为生物特征之一,在身份识别和运动分析方面都有着重要的研究意义,国内外已有许多学者投入到该热点研究中。步态研究需要以大量可靠的原始步态数据为基础,目前公开的步态数据库都基于步态图像[12]。然而动态环境中拍摄的图像容易受光照变化、运动目标的影子等多种因素影响,给步态特征的提取带来较大困难。Ailisto H.等人提出了一种采用加速度传感器来获取步态数据的新方法[3],避免了动态环境中多方面因素对捕捉图像的不利影响,降低了数据处理的难度,从而开辟了步态数据获取的新途径。但是该方法采用装有DAQ1200数据采集卡的笔记本电脑采集数据,不仅成本高,而且不便于测试对象携带。
近几年随着传感器技术的发展和制作工艺的不断改进,具有尺寸小、精度高、功耗低等优点的MEMS(MicroElectroMechanicalSystem)加速度传感器已经进入应用领域,使得基于运动传感器的步态研究更为方便。本文介绍的步态加速度信号无线采集装置,就是采用了MEMS三轴加速度计LIS3LV02DQ[4]、无线收发芯片nRF2401[6]、8位微控制器μPD78F0547[5]等主要器件而设计的。
1 硬件电路设计
步态加速度信号无线采集装置主要由两部分构成:数据采集及无线发送模块,无线接收及数据传输模块。主要的接口电路包括微控制器与加速度计之间的CSIA0串行接口电路,与无线收发芯片之间的CSI11串行接口电路,以及UART转USB的桥接电路等。其原理如图1、图2所示。由固定于人体腰后部的数据采集及无线发送模块获取并无线发送人运动时的三维加速度数据;计算机端的无线接收及传输模块将接收到的数据通过USB串行接口传输到计算机中,作为后续数据处理的数据源。
图1 数据采集及无线发送模块主要电路原理图
图2 无线接收及数据传输模块主要电路原理图
2 控制软件设计
数据采集及无线发送程序流程如图3所示。其中初始化包括微控制器的I/O端口初始化、串行接口初始化、中断初始化、加速度计和无线收发芯片的初始化配置。初始化完成后等待按键命令,第一次按键进入开始采集数据状态,再按一次键则停止采集数据。按键由被测试人控制。
图3 发送端程序流程
有关加速度计的主要程序代码如下:
#pragma interrupt INTACSICSIA0_INT
#pragma interrupt INTP6ACC_RDY_INT
#pragma interrupt INTP0key_int0
#define bCSIS 0b00000000//fW=fPRS=8 MHz
#define bBRGCA 0b00000001 //CSIA0时钟为fW/8
#define bCSIMA0b00011100//通信方式
void LIS3LV02DQ_init(void) {// 设置串行接口CSIA0
PM0.0 = 0;P0.0 = 1;//设置CS→SPI mode
PM14.0 = 1; PU14.0=1; P14.0 = 0; //设置P140/INTP6
PM14.2 = 0; P14.2 = 1;//设置P142/SCK
PM14.4 = 0;P14.4 = 0;//设置P144/SOA
PM14.3 = 1;//设置P143/SIA
CSIS0 = bCSIS;
BRGCA0 = bBRGCA;
CSIMA0 = bCSIMA;
CSIAE0 = 1;// 设置CSIA0通信完成中断
ACSIIF = 0;//清CSIA0中断标志
ACSIMK = 0;//中断服务使能设置INTP6=数据准备好中断
PPR6 = 0;//加速度高中断优先级
PIF6 = 0; PMK6 = 0;//使能INTP6中断
EGP.6=1; EGN.6=0; //INTP6上升沿配置加速度计
write_comm(WRITE_CTRL_REG2,ACC_RESET);
write_comm(WRITE_CTRL_REG1,bCTRL_REG1_01);
write_comm(WRITE_CTRL_REG2,bCTRL_REG2);
}
__interrupt void CSIA0_INT(void) {//采集加速度计输出的数据,存入data[5]数组后无线发送
DI( );
--LIS3LV02DQ_count;
switch(LIS3LV02DQ_count) {
case 0:
data[5]= SIOA0;
P0.0 = 1;
Transmit_data( );
write_comm(WRITE_STATUS_REG,0x00);
PIF6 = 0;
break;
case 1:…… break;
case 2:…… break;
case 3:…… break;
case 4:…… break;
case 5:
data[0]= SIOA0;
P0.0 = 1;
virtual_write0_comm(READ_X_L);
break;
default: break;
}
EI( );
}
__interrupt void ACC_RDY_INT(void) {//依次读取加速度计内部的特殊寄存器OUTX_H、OUTX_L、OUTY_H、OUTY_L、OUTZ_H、OUTZ_L的值
DI( );
if (keyvalue==1) {//按键次数变量keyvalue
LIS3LV02DQ_count = 6;
virtual_write0_comm(READ_X_H);
}
EI( );
}
注意:
① 当CSIA0工作在1字节通信时,如果只执行接收操作,则只能通过向串行I/O移位寄存器SIOA0写入虚拟数据才可启动通信,通信结束后产生1个中断请求信号(INTACSI),此时读取SIOA0即为所要的值。
② 每采集完1组加速度值,必须执行语句:
write_comm(WRITE_STATUS_REG,0x00)
通过对状态寄存器STATUS_REG清零,可以清除加速度计输出的Data-Ready信号,从而产生新的一组加速度值。
无线接收及数据传输程序流程如图4所示。在完成初始化后进入循环监听状态。当接收到数据时,无线收发芯片nRF2401向MCU发出数据就绪信号,MCU读取数据后和计算机通过串行通信将数据以文件的形式保存到计算机中。
图4 接收端程序流程
3 实验
本设计中的无线发送、接收天线采用的是PCB板上的环形线,其发射能力较弱,因此实验是在发送端和接收端处于可视范围内,并且无障碍物阻隔的条件下完成的。被测试对象将装置的数据采集及无线发送模块固定于腰后部,并且按照要求使加速度计3个轴的正方向分别指向人体侧向、垂直方向和前进方向。实验结果表明,加速度计以其采样频率范围内的任意采样率工作时,该装置均能满足采集与传输的要求。图5是加速度计工作在160 Hz,被测试人平地行走时接收并保存到计算机中的时间加速度图。
图5 某个体平地行走时三个方向的时间-加速度图
结语
本文所设计的步态数据无线采集装置,通过完成对特定环境下步态加速度数据的采集及存储,为进一步完成便于携带的采集装置作了有效的尝试。通过进一步改进和完善,将会成为建立原始步态加速度数据库、跟踪检测和记录人的运动状态的有效工具。