4 系统软件设计与实现
4.1 系统软件总体设计
节点的软件平台是基于加州大学伯克利分校TinyOS操作系统。传感器节点下位机软件的作用是定时采集传感器感知对象的数据,通过无线传输,发送至基站。基站连接在PC端上。当数据传送至基站时,基站通过与上位机通信,在上位机中再次进行数据处理,并将最终结果显示在上位机软件的界面中,从而实现实时监测的目的,并且可以很好地进行人机交流。
节点的软件设计方案如图4-1所示:
图4-1 节点的软件设计方案
节点每个一定的时间就启动A/D转换进行数据采集,同时将采集到的数据打包通过无线传输方式传输到基站,数据到基站后进行相应的数据处理,然后将最终结果显示在PC段的人机交换界面上。
上位机软件总体设计方案如图4-2所示:
图4-2 上位机软件总体设计方案
数据到达基站后,通过配置串口,使得其能够与上位机进行通信。配置好以后,数据进入到上位机处理程序,将得到的数据包解包,得到采集来的数据,将其转换为所需要的数据类型并显示,同时实现监控,在该次处理结束后,将数据保存,以便数据管理。
4.2 节点基于TinyOS操作系统的软件设计
4.2.1 基于MSP430F1611的数据采集的软件配置
节点的数据采集的实现核心就是MSP430F1611的合理配置。MSP430F1611的电路图[ ]如图4-3所示:
图4-3 MSP430F1611引脚图
要实现节点上某一路信号的采集,必须根据MSP430的配置函数进行合理配置,在TinyOS2.x系统中,MSP430的配置内容位于tinyos-2.x\tos\chips\msp430\adc12\
Msp430Adc12.h中,具体如下所示:
typedef struct {
unsigned int inch:4; //设置信号输入通道
unsigned int sref: 3; //设置基准电压
unsigned int ref2_5v:1; //设置基准电压等级
unsigned int adc12ssel:2; //设置A/D采样时钟基准
unsigned int adc12p:3; //设置A/D采样的时钟分频系数
unsigned int sht:4; //设置采样保持时间
unsigned int sampcon_ssel:2; //设置采样时钟信号
unsigned int sampcon_id:2; //设置采样时钟分频
unsigned int :0; //设置采样数据位数最大为16位
}msp430adc12_channel_config_t;
根据实际需要,改变上述结构体中的数据,即改变采集通道,采样时钟信号,采样保持时间等,便可以使Msp430F1611按照需求进行数据采集。
4.2.2 TinyOS中A/D采样数据的读取
如前所述,TinyOS是基于组件的,因此,TinyOS为应用程序提供了不同级别的硬件抽象,就ADC采样而言,其硬件抽象[ ]如图4-4所示:
图4-4 访问Msp430的ADC硬件抽象
不难看出,要得到A/D采样数据,必须通过应用程序的Read接口,通过调用Read.read()函数才可以将转换结果读入到缓冲区中。然后在Read.readDone()函数中,将得到的数据打包放入格式为message_t的结构体中,message_t的结构定义在tos/types/message.h文件中:
Typedef nx_struct message_t{
nx_uint8 header[sizeof(message_header_t)];//头部
nx_uint8 data[TOSH_DATA_LENGTH];//有效载荷区,即采样得到的数据
nx_uint8 footer[sizeof(message_footer_t)];//尾部
nx_uint8 metadata[sizeof(message_metadata)];元数据
}message_t;
其中,header、footer、metadata都是不透明的,不能直接访问。 LabVIEW传感网动态信号监控软件开发+文献综述(6):http://www.youerw.com/tongxin/lunwen_3658.html