基于nRF905和MSP430的惯性传感器无线数传系统设计*
2013-10-22宁运琨熊显名赵国如
宁运琨,熊显名,赵国如
(1.桂林电子科技大学 电子工程与自动化学院 ,广西 桂林 541004;2.中国科学院深圳先进技术研究院生物医学与健康工程研究所,广东深圳 518055)
0 引言
跌倒是对老年人健康乃至生命的严重威胁,在我国,跌倒是65岁以上老年人首位伤害死因[1]。在对人体跌倒实验数据分析阶段,目前普遍采用的方法是在传感器节点模块上内置存储介质,实时存储姿态数据,然后后期用Matble分析处理,采用该方法,测量数据不容易丢失,但分析数据不够灵活。考虑到人体佩戴的方便性和功耗,不适合在传感器节点端安装人机交互模块(按键或触摸屏等)进行配置和显示。在数据采集系统中,有线方式可靠、稳定,但需要在测量现场布置大量的导线或电缆,安装、拆卸都比较复杂,灵活性差,成本高[2]。而射频通信具有成本低,布线简单的优点,特别适用于电池供电的手持或者人体佩戴设备。
本文提出一种基于nRF905的数据包和配置命令无线传输的软硬件解决方案,可以实现将节点采集到的加速度和角速度通过射频方式上传到界面友好的PC机显示控制和分析,无线传感器节点上传感器的量程、采样率等以及数据采集命令均可以通过PC机可视化操作。
1 系统硬件结构与功能
如图1所示,系统主要由无线传感器节点、基站和上位机组成。节点模块通过腰带绑定在人体腰部,确保传感器三维坐标随同人体坐标而变化,节点的MCU负责将传感器数据通过无线方式发往基站,并可以接收基站上位机发来的各种配置命令从而对传感器和MSP430配置,而基站负责将接收的数据发送到上位机。上位机可实现跌倒过程的加速度和角速度波形显示控制、配置命令发送等功能。
节点的电源管理单元包括充电电路和稳压电路,采用3.7 V锂电池给各模块供电。
图1 系统硬件结构图Fig 1 Structure diagram of system hardware
1.1 主控芯片、射频模块和传感模块介绍
主控芯片采用了TI公司的基于16位精简指令集架构的微控制器MSP4302418作为处理器单元,该芯片电源电压范围为1.8~3.6 V,具有5种节能模式,从待机模式中唤醒仅需不到1 μs的时间,内含116 kB+256 B的FLASH,8 kB的RAM,在芯片上集成了4个独立的SPI同步串行接口和2个RS—232异步串行接口,可以方便地与PC机和采用SPI通信的MEMS硬件模块连接。MSP4302418 P1.P2口具有外部中断能力,可以对P1,P2口的每个引脚独立的设置为上升沿或者下降沿中断,在功耗体积要求苛刻而运算处理速度要求较快的场合得到了广泛的应用[3]。
系统采用NORDIC公司的nRF905芯片,配上外围电路和天线作为射频模块,该芯片采用32引脚的QFN 5 mm×5 mm封装结构,nRF905是工作于433/868/915 MHz ISM频段的单片射频收发器,最高数据传输速率为50kps,收发模式切换时间小于650 μs,内置CRC检错和高效GFSK调制,抗干扰能力强,125频道,通过SPI总线可以对nRF905进行点对多点地址控制和频率、功耗等控制,满足多点通信和调频通信的要求。采用1.9~3.3 V的工作电压,待机模式下仅消耗2.5 μA的电流,在发送模式下,当发射功率为10 dBm的时候仅消耗30 mA的电流,接收模式下仅消耗12.2 mA的电流[4]。
传感器组件采用美国 InvenSense公司的 MPU6000,4 mm×4 mm ×0.9 mm QFN 超小封装,MPU—6000整合了3轴陀螺仪、3轴加速器,量程分别为±2,±4,±8,±16gn;±250°/s,±500°/s,±1000°/s,±2000°/s。
1.2 硬件电路
如图2所示,MSP430自带同步串行总线接口,相比普通单片机的软件模拟SPI方式,它不需要CPU过多的干预,使得CPU有更多的时间处理其他事务,SPI总线的时钟、相位、极性、中断等可以通过相应的寄存器进行灵活的配置。相比I2C方式,具有速度快、编程简单的优点,故MSP430采用四线制SPI总线与MPU6000和nRF905进行数据传输。在节点中MPU6000和nRF905都作为从机,时钟和片选都由MSP430控制,MPU6000中断输出线 INT用于当MPU6000三轴上的所有传感器数据准备好,INT置高,通知MSP430进行SPI读取数据。nRF905的3根状态指示线:CD(当载波侦听置1)、AM(当地址匹配置1)、DR(当数据准备好置1)分别与 P2.3,P2.4,P2.5 相连,作为 MCU 的中断输入线。模式控制线用于模式转换[5],如表1所示,三线不同组合指示nRF905不同的工作模式。基站的MSP430与nRF905的硬件电路一样,只是多了串口模块,采用RS—232与PC机通信,虽然效率比不上并口,但是具有线路少、成本低、结构简单的优点,而且基站的MSP430本身就带有波特率可设置的异步串行硬件接口,为数据通信提供了方便。
图2 节点硬件电路图Fig 2 Circuit diagram of node hardware
表1 nRF905工作模式Tab 1 Operating mode of nRF905
2 系统软件设计
系统软件分为节点数据采集、节点数据包无线发送、节点命令接收处理,基站数据包接收、基站命令中转,系统采用模块化的设计方法,兼顾功耗与运算速率,充分利用MSP430的中断系统来确保数据的实时传输。
2.1 惯性传感器数据命令格式
为了提高节点端MSP430的处理速率和充分发挥PC机强大运算能力和面向对象可视化编程的优势,数据包仅包括三轴加速度和三轴陀螺仪原始数据和中断状态寄存器内容,MPU6000内置3种运动状态检测:自由落体、运动、零运动,在相应配置寄存器中使能相应状态检测中断之后,当MPU6000检测到的加速度阈值低于或者高于设定的加速度阈值时,就会触发中断,中断状态寄存器中相应标志位置1,MPU6000运动状态检测系统的运用能够降低CPU处理跌倒算法的难度。从原始数据到相应物理数据的转换和波形可视化分析的工作,都由上位机完成,数据包格式如表2所示,Acc-X,Gyr-X分别代表X轴16位补码(实质上是高8位和低8位寄存器数据的组合)加速度和陀螺仪原始数据,均占2个字节,Y,Z依次类推,0xab代表包头,INT-STATUS代表8位中断状态寄存器,数据包一共14个字节。
表2 数据包格式Tab 2 Data packet format
在人体跌倒惯性数据的传输实验中,需要结合各种日常生活行为和跌倒行为进行对比分析(比如:快速坐下、缓慢蹲下,跳跃等),MPU6000需要根据实验条件设定不同的加速度、角速度量程、采样率、滤波器频率等。这些配置都由上位机以命令包的形式下发,然后通过节点无线接收、解析后再通过SPI写入配置寄存器。命令包如表3所示,Reg1—a和Reg1—d都是1个字节宽度,分别代表包中第一个寄存器的地址编号和配置内容,后面依次类推。一个命令包共32个字节,0xba代表命令包包头,一条命令最多只能同时配置8个MPU6000寄存器,后面15个字节是MSP430和nRF905的配置信息,包括节点MSP430的SPI配置和启动采集、停止采集等特殊命令。
表3 命令包格式Tab 3 Command packet format
2.2 节点软件设计
节点主要包括MPU6000和nRF905初始化,惯性数据采集、打包处理,数据包无线发送,中断响应接收几大模块。流程图如图3所示。当系统进行一系列的初始化之后,节点软件系统进入待机模式(低功耗模式LPM0)并且开启中断等待命令,当nRF905接收到载波频段匹配和接收到的数据包中的地址与本身地址一致的时候,AM引脚即可置高,MSP430马上退出LPM0并触发中断。以PC机端的启动命令来开启“采集数据—发送数据”的循环,以结束命令结束该循环并返回待机模式。这为灵活控制采集数据的时段和增强电池续航能力提供了良好解决方案。为了保证该循环处理数据的实时性,所有的命令配置的接收和处理都放在P2.4(AM)中断服务函数。因为节点端数据包发送完毕同样会令DR端置1,所以,节点若利用DR来通知命令接收将会引起严重干扰,只能采用AM检测。系统软件中在初始化和发送数据后必须根据表1让nRF905进入接收模式,否则,不能接收命令。
2.3 基站软件设计
基站的初始化大部分与节点类似,但多了串口初始化部分,软件采用9600 kbs的波特率通信。流程图如图4所示。当节点不发送数据的时候,基站可以进入低功耗模式或者做其他事务处理。经测试发现,系统若采用轮询方式接收数据包,当节点端数据包发送太快会出现丢包现象,而采用外部中断接收可以避免上述现象,当基站的nRF905的DR端置1,说明数据已经接收成功,并放到了nRF905的接收寄存器,触发P2.5(DR)上升沿中断,之后系统退出低功耗或者终止其他事务处理,之后在P25外部中断服务函数里面,令nRF905进入待机模式,通过SPI读取nRF905接收数据寄存器的内容,再通过RS—232发往上位机。为了快速响应命令,基站的MCU采用串口中断接收上位机的命令,流程图如图4所示。
图3 节点软件流程图Fig 3 Flow chart of node software
图4 基站软件流程图Fig 4 Flow chart of base station software
3 上位机软件设计
上位机采用VC++6.0开发,上位机通过调用动态链接库Pcomm.dll来进行串口通信,避免了基于MSComm控件的通信函数中数据类型转换和配置的复杂性,并减少了应用程序执行时所占内存空间[6],可以通过按钮、文本框等操作对波特率、串口端口号、节点各个模块进行可视化配置,上位机利用绘图的双缓冲技术,有效避免了绘制波形过程中的闪烁,并且提高绘图速率。上位机还利用了多线程技术,X,Y,Z轴的加速度和陀螺仪六通道数据都可以实时采集并显示波形。结合MPU6000的运动状态中断寄存器检测结果,可以对波形进行触发控制,波形数据还可以保存打印输出。
4 实验结果
系统调试分为命令测试和数据测试,篇幅有限,仅给出部分测试数据。表4为节点处于静止条件,根据传感器量程不同和MPU6000的X轴所处在的姿态不同,对应的X轴加速度测量数据,图5是节点佩戴到人体身上后人体跌倒过程中上位机捕获到的三轴加速度、三轴角速度数据。根据表中可以看出,采集的数据和实际很相符,无线传输具有良好的可靠性。
图5 上位机捕获到的加速度和角速度波形Fig 5 Acceleration and angular velocity wave captured by upper computer
5 结束语
该系统的数据传输是在单一节点单一基站之间进行实验该系统的数据传输是在单一节点单一基站之间进行实验的,因此,功能上有一定的局限性。因为软件中采用中断方式处理数据,使得无论基站还是节点都可以实现实时发送接收,实时响应命令,数据包不丢失,该系统在多节点多基站构成的无线传感器网络或者其他无线传输应用系统中也有一定的参考价值。
表4 X轴加速度值Tab 4 Acceleration value of X axis
[1] 张 玉.老年跌倒研究概况与进展[J].中国老年学杂志,2008,28(5):929 -931.
[2] 赵建华,韩玉杰.基于nRF905的温室无线数据传输系统[J].机电产品开发与创新,2009,22(6):141-142.
[3] 沈建华,杨艳琴.MSP430系列16位超低功耗单片机原理与实践[M].北京:北京航空航天大学出版社,2008.
[4] 蒋 博.nRF905的无线数据传输系统[J].工业仪表与自动化装置,2006(3):59-60.
[5] 张孝云,江小华.基于nRF905的无线加速度测量系统设计[J].现代电子技术,2011,34(17):155 -156.
[6] 孙 鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.