摘 要: 在传统的数据采集系统基础上,引入了基于Windows CE 5.0的嵌入式操作系统平台,通过GPRS(通用无线分组业务)的远程控制技术实现了一个远程数据采集与控制系统。实验结果表明,本文方法可以满足多任务、大容量、高实时性和高稳定性的系统要求,同时具有远程控制方便快捷、成本低等特点,具有良好的人机界面,在物联网和智能家居控制等领域具有一定的应用价值。
关键词: 嵌入式系统; 数据采集; Windows CE; GPRS技术; 远程控制
随着信息技术的飞速发展,数据采集系统在工业控制、智能仪器以及仪表检测等领域得到了广泛的应用[1]。传统的数据采集系统一般采用两种方式完成:(1)使用数据采集卡加微机系统; (2)采用各种单片机集成数据采集系统。前者虽然功能较强,但成本高、功耗大、普及性差。后者由于自身的资源有限,无法满足多任务、大容量、高实时性和高稳定性的要求。而在远程控制方面,工业上一般使用基于TCP/IP的控制模式,该方法虽然引入了网络技术,可以快速稳定地传输数据,但是成本较高、移动性较差且维护困难。因此,本文以Windows CE5.0作为操作系统平台,基于ARM9内核的S3C2440A作为微控制器,引入GPRS无线技术,实现了人机交互友好、扩展性强、实时性强、低功耗和低成本的远程数据采集与控制系统。本系统能对室内的温度、湿度等各种物理量进行检测控制,并按照要求进行反馈;对若干种家用电器进行监控,如电器电压、热水器流量等,以便用户及时发现问题(例如很多太阳能热水器容易出现爆裂等情况);此外可以加入视频采集与发送扩展模块,通过MMS协议模块发送实时图像数据。
1 系统结构
系统以S3C2440为控制器,由数据采集模块,GPRS模块、远程控制模块、报警系统模块、视频采集与发送模块以及其他可扩展的外围电路等组成。系统的结构框图如图1所示。
首先启动系统,用户可以随时通过GPRS网络向系统发出远程控制指令,例如发送“开始采集”指令,则系统开始利用ADC模块采集电压、流量、温度、湿度以及触摸屏坐标等模拟量,并且转化为相应的数字量,然后在人机界面上显示出来。一旦所采集的数据超过给定阈值,则系统向用户发出报警信息,以便于用户采取进一步的控制措施。
1.1 系统硬件设计
本系统的硬件开发平台以三星S3C2440为核心。S3C2440是以ARM920T为内核的32 bit高性能微控制器、性价比高、功耗低、扩展功能丰富,因此应用非常广泛。其带有的MMU(存储管理单元),可以运行主流的嵌入式操作系统,如Linux以及WinCE[2]等。数据采集模块使用8路10 bit的A/D转换器,该转换器有采样保持功能,可以实现独立转换和触摸屏位置转换两种模式,最高转换速率可达500 KS/s[3]。A/D模块的应用接口电路如图2所示。其中8路通道除第5路和第7路用于触摸屏输入外其余均可使用,本文使用4路分别与温度采集传感器、湿度采集传感器、电阻器以及水流量传感器相接,因此可以并行采集4路信号互不干扰。
GPRS控制模块是以西门子公司TC35i为核心的GPRS modem。GPRS技术是基于二代移动通信技术的改进,因此也被称为2.5 G。相对于GSM以电路交换数据的方式而言,GPRS采用分组交换技术,在传输费用、传输速率以及实时性上均优于前者。即使与最新的第三代移动通信技术相比,GPRS技术在成本、速度以及性价比等方面,依然具有一定的优势。TC35i提供了标准的9针RS-232接口,因此需要加入MAX232进行电平转换,与S3C2440的串口进行全双工通信[4]。图3所示为GPRS硬件接口电路,其中GSM基带处理器是TC35i的核心部件,用来处理串口指令,J1为SIM卡座。
外围报警设备通过S3C2440提供的PWM定时器,由通用输入输出GPIO口来控制。
1.2 系统软件设计
1.2.1 AT指令集
本系统使用的GPRS模块采用的是GSM07.05规范,它规定了SMS的DTE-DCE接口标准,即AT指令集。AT(Attention AT)命令集是从TE(Terminal Equipment)或DTE(Data Terminal Equipment)向TA(Terminal Adapter)或DCE(Data Circuit Terminating Equipment)发送,并通过TATE 发送AT 命令来控制MS(Mobile Station)的功能,实现与GSM 网络业务的交互。用户可以通过AT 命令进行控制[4]。本文主要使用短消息相关的AT命令集。如发送AT+CMGF=n,其中n为0,选择PDU格式,n=1,选择文本方式。如发送AT+CSCA=<string>来选择运营商,string=+8613800270500;即选择中国移动。在文本格式下发送AT+CMGS=“string”(string)为对方手机号码,成功则返回“>”然后输入要发送的内容以“^Z”结束。本文的GPRS类都是通过调用串口驱动来实现相关的功能。
1.2.2 Windows CE下的驱动编写
Windows CE是微软公司推出的嵌入式实时操作系统,凭借其简单易用,功能强大,在智能手机、PDA以及汽车电子领域有广泛的应用。本文系统中的驱动编写是软件设计的核心内容。
基于Windows CE的2种驱动模型是流接口驱动和本机驱动模型,本机驱动模型是操作系统本身的一部分,例如电源管理,这些驱动是通用的驱动。流驱动则是指一般的驱动,具有可定制的接口和功能,是专用的驱动。本文所有驱动都是流驱动,流驱动将外部设备当作文件进行操作,因此应用程序可以很方便地使用系统API文件进行操作。流驱动由一组标准的函数集合来实现,在Windows CE中定义的流接口函数有12个,主要包括XXX_Init、XXX_Deinit、XXX_Open(由应用程序调用CreateFile()函数打开驱动)、XXX_ Close(由应用程序调用CloseHandle()函数关闭驱动)、XXX_Read(由应用程序调用ReadFile()函数打开驱动)、XXX_Write(由应用程序调用WriteFile( )函数打开驱动)、XXX_Seek、 XXX_Power
Up、XXX_Pow-erDown、XXX_IOControl。其中,XXX是驱动程序的设备名称[5]。
本文的流驱动需要具备3个功能:(1)驱动数据采集模块;(2)驱动报警器电路;(3)驱动GPRS模块。
1.2.3流驱动的实现
(1)将驱动取名为RDA(Remote Data Acquisition)。由于要在操作系统层面调用设备,因此首先应该完成对硬件,尤其是寄存器的虚拟地址分配,在函数RDA_Init()中实现。通过调用Windows CE提供的VirtualAlloc()和VirtualCopy()访问物理内存,其中前者负责保留虚拟内存,后者负责绑定物理内存和虚拟内存。实际上最终是通过访问虚拟内存来完成访问物理内存的,主要部分代码如下:
v_pAdcPreg=(volatileADCreg*)VirtualAlloc(0,sizeof(ADCreg),MEM_RESERVE,PAGE_NOACCESS);
…if (!VirtualCopy((PVOID)v_pAdcPreg, (PVOID)(ADC_
BASE_PHY_ADD>>8),sizeof(ADCreg),PAGE_PHYSICAL| PAGE_
READWRITE | PAGE_NOCACHE))
v_pIOPregs=(volatile IOPreg*)VirtualAlloc(0,sizeof(IOPreg),MEM_RESERVE,PAGE_NOACCESS);…
接着系统通过v_pAdcPreg和v_pIOPregs来调用各自的寄存器进行初始化,其中ADC_BASE_PHY_ADD和IOP_BASE_PA是硬件物理地址。
随后完成RDA_IOControl(),这个函数负责完成修改设备的功能,例如本文的数据采集模块有8路通道,因此每次采样时都需要转换通道,同时采样频率也是可以转换的,所有的控制码都在头文件中完成。通过控制码用户可以自由选择通道,这与本文的要求完全一致。
最重要的是读函数RDA_Read(),应用程序通过读函数与底层驱动联系,应用程序通过ReadFile()函数读出ADC寄存器的值。
PUBLIC DWORD RDA_Read(DWORD Handle, LPVOID pBuffer, DWORD dwNumBytes)
最后,在驱动程序关闭时,应用程序通过CloseHandle( )函数来调用RDA_Close ( )关闭。
1.2.4应用程序的实现
在流驱动编写完成后,通过PB完成编译,加入注册表信息,然后定制专有系统,这样就可以在自己定制的系统中调用驱动。应用程序的编写步骤如下,首先利用PB生成所需的SDK,并且安装,其次编写界面利用模拟器进行仿真,最后连接硬件,打开驱动测试程序。本文的所有程序已经在EVC4.0中编写实现。
本系统需要完成触摸屏的功能、视频采集模块功能以及用户自定的四路数据采集功能,因此窗体主线程中加入了:ADC采集、触摸屏控制、视频采集以及反馈模块等4个子线程。图4是应用程序的基本流程图。
2 实验结果
在测试过程中,系统会根据用户发送的短信内容,实时控制与显示所采集的数据。系统采集到的电器电压、室内温度、湿度以及热水器流量与实际情况完全相符。而系统的控制功能也很好实现,当系统采集到的数据大于阈值时,例如当室内温度过高、湿度过大、流量过大等异常情况发生时,报警信息都会由远程系统实时传递到用户的手机;视频采集系统主要由主机控制采集,用户可以方便地通过系统进行监控。因此通过实际测试,系统可以实现所需要的功能且具有良好的人机交互界面,实用性很强。
本文基于ARM9内核以及Windows CE嵌入式操作系统,同时结合GPRS技术,提出一种远程数据采集和控制的方法。利用嵌入式系统的低功耗、低成本、多任务以及高可靠性和高实时性等特点,通过设计、调用核心的流驱动函数,实现了一个具有远程数据采集和控制功能的应用系统,扩展相应的外围设备可以将该系统应用于更多领域。在后续的工作中,将继续研究利用另一个嵌入式系统作为客户机,通过MMS协议模块发送实时图像数据,从而增强系统的功能,进一步加深在物联网和智能家居控制等领域的应用。
参考文献
[1] 凌有铸,徐晓光,潘伟.基于WinCE的嵌入式远程实时监控系统[J].计算机技术与发展,2007,17(2):204-206.
[2] 王黎明,陈双桥,闫晓玲,等.ARM9嵌入式系统开发与实践[M].北京:北京航空航天大学出版社,2008.
[3] Samsung Electronics.S3C2440A User Manual[Z].2004.
[4] TC35i AT Command Set[Z].2006
[5] 刘彦峰,李峥. Windows CE和桌面Windows 2000/XP设备驱动开发的区别[J].电子技术应用,2010,36(3):127-132.