本文振动信号的检测采用 ADXL202实现,ADXL202是美国模拟器件公司设计生产的的新型单芯片双轴加速度传感器,加速度测量范围是士 2g;动态测试带宽为 0~5kHz,可测量静态加速度、振动和倾角。本文采用加速度传感器用于监测较大的振动或移动,达到防盗的目的。由于振动在微观上是物体加速度的快速变化,因此本文采用此原理进行振动信号的监测。将 ADXL202的 X轴和 Y轴加速度输出引脚与 CPU的定时计数器相连接,利用 TC捕获芯片的 PWM信号得到当前的加速度,如果连续监测到芯片加速度的急剧变化,则可判定振动的产生,加速度的变化程度对应于振动的强弱。设置与芯片 T2引脚连接的电阻值为
1.25MS2,使得其输出信号的周期为 l 0ms,从而获得较好的分辨率,其原理图如图 5所示。
3.系统软件设计
3.1 GPRS模块软件设计
GPRS模块用于无线传感器网络间的通信,它是节点的重要组成部分之一。通过 GPRS模块进行数据传输本质上是利用了移动通信网络与 Internet网络之间的互联,因而传输的数据需要符合 Internet网络的 TCP/IP协议标准。无线传感器网络节点利用 GPRS实现数据传输的过程为:首先利用 ARM处理器控制 MC39i模块实现与 Internet网络的连接,通过 PPP协议获得 IP地址;然后将经过 TCP/IP以及 PPP协议封装的数据通过 RS232串口发送给 MC39i。根据 GPRS拨号上网的通信规程以及 MC39i模块的控制说明,本文设计如图 6所示系统流程图完成 GPRS模块拨号上网以及后续的数据传输处理,其中 PPP协商处理和数据的 TCP/IP以及应用层的封装处理是本模块设计的重点和难点。
3.2 MC39i驱动程序设计
MC39i模块驱动设计主要包括 FreeRTOS下 USART驱动程序设计,MC39i模块的初始化和 GPRS网络参数设置。它在保证 GPRS模块可用性的前提下,为数据的传输提供通道,为链路层以及上层协议的实现提供方便的接口。
串口驱动程序的工作过程为:当某一个任务需要通过串口发送数据时,必须先得到该串口发送队列的信号量时才可发送数据,发送结束后释放信号量 ;如果无法取得信号量,则挂起该任务等待信号量有效。驱动程序中为 USART建立发送队列和接收队列两个队列。当发送队列不为空时,发送中断使能,从而将发送队列中的数据通过串口中断服务程序发送到串口。如果需要发送数据,只需调用 xSerialPutChar函数向发送队列传送数据即可 ;如果需要从串口接收数据,需调用 xSerialGetChar函数,等待从队列接收数据,串口驱动程序即可使能 USART接收中断,进行数据接收的准备,串口接收中断服务会将接收到的数据自动发送到串口接收队列中。
建立发送和接收队列的代码如下: xRxedChars=xQueueCreate( uxQueueLength, (portBASE TYPE)sizeof( *pDataPackage)); xCharsForTx=xQueueCreate(uxQueueLength+1, portBASE_TYPE)sizeof(*pDataPackage)); 其中 xQueueCreate为 FreeRTOS操作系统提供的创建队列的 API接口函数。第一个参
数指定了队列的深度,第二个参数指定了队列的宽度。驱动程序为应用程序提供了以下函数接口:signed portBASE_TYPE xSerialPutChar( xComPortHandle pxPort, signed portCHAR cOutChar, portTickType xBlockTime) void vSerialPutString( xComPortHandle pxPort, const signed portCHAR * const pcString, unsigned portSHORT usStringLength) void Uartse Printf(char *fmt,...);void IntSendString(char *pt) signed portBASE_TYPExSerialGetChar(xComPortHandlepxPort,signed ortCHAR*pcRxedChar, portTickType xBlockTime)
3.3振动传感器任务设计
本文采用 AT91 SAM7S256处理器的定时计数器实现对振动传感器 ADX202输出 PWM信号的测量。采用加速度传感器测量振动信号用于监测较大的振动或移动,达到防盗的作用。由于振动是物体加速度的快速变化,本文采用此原理进行振动信号的监测。验。最后确定当加速度连续两次变化超过 0.03 m/s2时,发出振动警报,这样可以灵敏的监测汽车移动和碰撞等事件,并且排除了由于其他情况导致的信号波动。,以下给出加速度传感器处理任务的核心代码如下:
void vADXLTask( void *pvParameters) { (void)pvParameters;
InitTC1Capture();//初始化 TC1, 2工作模式 InitTC2Capture();
while(1) { xQueueReceive(ADXLCapDataQ, pcBuffer, xBlockTitne) pShkData=AnalysisADXLdataQ; //分析 X, Y轴的所得的计数器捕获数值 AssertX=pdFALSE;//状态变量复位 AssertY=pdFALSE; xQueueSend(ShakeDataQ, pShkData, xBIockTime)://将振动信号发送到队列中 vTaskDelay(WAIT*TICK_PER_SEC);//任务延时 portENTER_CRITICAL(); startTC1Capture(); //启动定时 /计数器 1再次进行测 t startTC2Capture();//启动定时 /计数器 2再次进行测盆 portEXIT_CRITICAL(); } }
4总结
本文创新点:无线传感器网络是一种全新的信息获取和处理方式,具有广泛的应用前景。本文在分析国内外研究现状和无线传感器网络功能需求的基础上,提出并实现了利用 ARM处理器采用嵌入式技术设计无线传感器网络汽车防盗系统的总体方案,并重点开展了节点的软硬件方面的研究,采用嵌入式 ARM处理器,结合 GPRS通信模块 MC39i,振动传感器实现了一种高性能无线传感器网络节点的硬件设计,在实际使用,系统灵敏度高,运行稳定,具有较高的实用价值