近年来,基于gsm模块的短信收发功能的各种应用系统如:被盗机动车追踪系统、家庭网络系统等已逐渐成为关注的焦点[1-3]。对于这些应用系统中如何通过短信收发模块实现短信收发的功能是一个非常基本而又非常关键的问题。随着通信技术的不断成熟以及用户对通信质量越来越高的要求,现有的gsm网络将不可避免的向w-cdma(宽带码分多址)演变。cdma网络覆盖范围广、使用费用低、技术完善、安全可靠,采用cdma网络的短信息业务实现无线数据传输,既方便又可靠。
1 系统设计
本系统主要是利用cdma移动通信网络的短信息业务完成数据的无线传输,免去了现场组网的初期建设费用以及日后的网络维护费用。通过数据终端,将采集到的现场数据以短信息的形式发送到监控中心,在监控中心进行数据处理、存储、并提供相应的查询、统计、报表功能。监控中心也可以通过向数据终端发送短信息,设定监控终端配置信息或控制命令,更新数据终端的实时数据。系统组成包括现场设备、采集器、数据终端、监控中心。原理框图如图1所示。
2 数据终端的硬件设计
数据终端采用cygnal c8051f020作为控制主芯片,该芯片具有集成度高、功耗低(供电电压为2.7~3.6v,典型工作电流为12ma,并具有多种节电休眠和停机模式)、处理能力强(采用流水线结构,机器周期由标准的12个系统时钟周期降为1个系统时钟周期,峰值性能可达25mips)的特点,使其很适合应用于需要高可靠性、低功耗的控制系统中。cygnal c8051f为兼容:mcs-51内核的单片机,内置64kb flash程序存储器和4352b数据ram,具有2个双全工的uart。正是利用这2个串口实现了单片机与手机模块和pc机的同时通讯。数据终端硬件结构框图如图2所示。
2.1 通信单元电路设计
通信单元采用cdma无线模块来实现。cdma无线模块作为终端的无线收发模块,把单片机接收到的数据信息进行编码后以短信息的格式发送出去。cdma的无线模块采用zteit的mg801a模块,mg801a-cdma模块是内置软件支持cdma2000 1x rev0标准和gota协议的工业级应用模块,工作频段为800mhz。能完成语音、数据、传真、短信息服务以及多种附加业务的功能。具有容量大、辐射小、低功耗、体积小等特点。模块通过80脚的插座与外围电路进行接口,电路如图3所示。该模块的供电电压为3.3~4.25v,典型值为3.8v。
2.1.1 开关机控制
有两种方法可以使模块开机,第一种方法是通过系统连接器上的on/off引脚,第二种方法是使用外部充电器。
系统连接器上的第51引脚是on/off引脚,在此引脚上加一瞬时低电平会使模块开机,模块关机是通过at指令实现的,关机指令为at+zpwroff。第二种方法是使用外部充电器为模块供电,如果外部电压同时加于v_main(pin 71,72,73,74,75)和vchg(pin 79)就会使模块开机,当充电电源移走后,模块会关机。
2.1.2通讯
mg801a模块提供串行异步通讯接口uart(他与串口的数据通讯遵从rs232接口协议),因为单片机与模块都是3v左右的供电电压,都符合ttl电平标准,所以可以直接连接,实现通讯功能。
2.1.3 uim卡
uim卡是cdma手机运用的一种智能卡。uim卡提供个人认证信息,可以允许ms或手机连接网络。uim卡可以允许用户拨打或接听电话和收发短信息。uim卡固定在卡座上,通过卡座的6个引脚与外部连接。mg801a模块为了减少功耗为uim提供了一个使能引脚,在此可以不用,使uim卡一直处于工作状态。
2.2 稳压电源电路
数据终端的工作电压为5 v dc。另外,电源的指标不仅仅有电压的要求,而且功率容限等指标都要满足要求。故采用图4的设计方案。在该系统中,开关电源芯片lm7805完成12v到5v的转换,加两个二极管起降压保护的作用,为模块供电。电源电路主要由lm7805和as117—3.o这两个三端稳压电源模块构成,电源模块as117—3.o接收lm7805输入的5v电压,输出为整个单片机系统和uim卡的3v供电电压。电源的输出基本不会受外部输入变动的干 扰,而且有效地消除了电磁干扰。
2.3 单片机外围电路
单片机采用cygnal公司的带双串口的c8051f020,一方面实现了对无线模块的初始化和控制,另一方面实现了与带有标准rs232串口的通讯。需要说明的是要加电平转换电路,把ttl电平转化为rs232电平,在本设计中选用的是sp3223芯片。c8051f020单片机在功能、性能上比以往的传统单片机有了很大的提高,但复位和时钟电路和以前单片机没有区别。增加了jtag接口,能实现在线下载,在下调试功能,从而使整个开发过程简单、可靠。
3 系统软件设计与实现
系统软件设计就在于单片机的编程,通过向mg801a模块发送不同的at指令来实现不同的功能,如读取短信息的内容,删除短信息、列出模块中还未读的短信息等。下面主要介绍at指令和双串口cpu同时通讯的实现。
3.1 at指令
at(attention)指令最初由hayes公司推出,主要用于对调制解调器的控制,现在已演化为一种标准,所有移动模块都支持at指令。虽然不同厂家的手机模块都参照gsm协议,但格式还是有所不同,开发过程中一定要认真参考厂家给的资料。同时在开发过程中发现指令的执行过程需要单片机与手机交互应答完成,每一次发送或接收的字节数有严格的规定,二者必须依据这些规定实现数据交换,否则,通信就是失败的。笔者经过对几种手机模块反复测试,总结出一些规律,以下是对几个问题的说明:
所有at指令的指令符号、常数、pdu数据包等都是以ascⅱ编码形式传送的,比如“a”的ascⅱ编码为41h,“t”的ascⅱ编码为54h数字,“o”的ascⅱ编码为30h等。
单片机控制手机工作,如果要发送中文短信,使用的是gsm模块必须短信息工作模式设置为pdu格式,即通过指令at+cmgf=0完成。使用mg801a模块必须设置为中文unicode码格式,即通过at+zmsgl=6,4完成。
单片机向手机发送一条指令后,必须以回车符作为该条指令的结束,回车的ascⅱ编码为odh,回车符表示该条指令结束,如果没有这个回车符,手机将不识别这条指令。
当手机接收到一条完整的at指令后,手机并不立即执行这条指令,而是:先把刚才接收到的at指令的全部ascⅱ编码序列全部反发送出来(含odh);其次发送一个回车符和换行符的ascⅱ编码,即odh和oah;最后才执行该条指令。
3.2 单片机双串口同时通讯的实现
由于c8051f020单片机实现和上位机与手机模块的同时通讯,所以采用一片具有双串口的cpu,该cpu具有2个串口和2个串口中断,串口1中断处理与上位机的通讯,串口2中断处理与手机模块的通讯,串口1中断设置为高优先级中断,每接收到或发送完1个字节都进人中断处理,处理完毕立即退出中断,通讯波特率都为115 200 b/s,1个起始位和1个停止位。
编程语言采用c51语言,尽量采用模块化、结构化、对象化编程,使串口通讯程序和其他程序之间、2个串口通讯程序之间相互独立,以减少发生错误的机会。另外在串口通讯中,还要增加通讯超时处理机制,中断处理中要注意数据和程序状态的保护,完善出错处理程序等。同时要解决时间冲突问题,硬件接收或发送一个字节的时间与软件接收或发送一个字节的时间有很大的不同,这就为双串口同时通讯提供了条件。其次要解决数据冲突问题,2个串口通讯分别使用各自的接收发送数据缓冲区和控制变量,以减少中断保护数据量和防止数据冲突。当主程序、串口2中断处理程序和其他中断处理程序向存储器(与上位机的通讯用存储器)中写数据时,需在尽量短的时间内关闭串口1中断,关闭中断时间应小于几μs,防止其他程序数据没有写完之前串口1读此数据。
4 结语
随着通讯技术、微电子技术的进步和智能化建设的发展,越来越多的设备,如家电、电表、工业终端等,都有了联网的需要,并且有大量的数据需要传输;而且在很多场合有线连接的方式已经不能满足人们的需要。无线接入以其方便、快捷和廉价的优势,弥补了有线方式的不足。覆盖全国的cdma网络已经成为一种可持续利用和开发的资源,因而在此基础上利用cdma的短信息业务开发出满足需要的无线接入产品已成为可能。
评论
查看更多