- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
微控制器的GPRS无线上网方案
引言
微控制器以其体积小、功耗低、使用方便等特点,广泛应用于各种工业、民用的嵌入式系统中;而随着互联网(Internet)的兴起与普及,使微控制器通过互联网传送数据就变得非常有意义。目前使微控制器上网的解决方案一般有两种:一种是采用微控制器驱动网卡,通过以太网连接Internet;另一种是使微控制器直接驱动调制解调器(MODEM)通过电话线向ISP拨号上网。这两种方案的缺点在于都要使用有线的网络,无法应用于在边远地区或可移动系统中。
针对这一问题,本文提出一种基于GPRS的微控制器上网的解决方案,即在微控制器中实现PPP协议,并通过驱动GPRS模块经过GPRS无线网连接到Internet实现上网。这种方案的优点在于:① 覆盖面广,适用于广大偏远地区;② 无线上网,适用于可移动目标;③使用廉价的微控制器实现简单、成本低;④ 安装简便,维护方便。
1 GPRS技术及其特点
GPRS(General Packet Radio Service)是通用分组无线业务的简称,是在GSM基础上发展起来的一种分组交换的数据承载和传输方式。与原有的GSM比较,GPRS在数据业务的承载和支持上具有非常明显的优势:通过多个GSM时隙的复用,支持的数据传输速率更高,理论峰值达115kb/s;不同的网络用户共享同一组GPRS信道,但只有当某一个用户需要发送或接收数据时才会占用信道资源。这样,通过多用户的业务复用,更有效地利用无线网络信道资源,特别适合突发性、频繁的小流量数据传输,很好地适应数据业务的突发性特点;GPRS计费方式更加灵活,可以支持按数据流量来进行计费;与无线应用协议(WAP)技术不同,GPRS能够随时为用户提供透明的IP通道,可直接访问Internet中的所有站点和资源;采用信道复用技术,每一个GPRS用户都能够实现永远在线;另外,GPRS还能支持在进行数据传输的同时进行语音通话等等,而且相对于短消息等其它无线数据通信业务,GPRS的价格优势比较明显。目前,我国移动推出的GPRS上网业务最高每千字节也只有3分钱,而且用户可以根据自己的需要,以月租、包月等多种形式进一步降低GPRS通信的费用。
因此使用GPRS实现远程数据的传送是非常经济实用的,特别是对于不易架设有线网络的边远地区和可移动装置。
2 硬件连接和GPRS模块设置
通过GPRS网进行数据传输一般需要使用GPRS模块。目前,GPRS模块一般是指带有GPRS功能的GSM模块,可以利用GPRS网进行数据通信。其中比较流行的有法国Wave公司的WISMO系列和西门子公司的S系列等等。WAVECOM的WISMO模块接口简单、使用方便且功能非常强大,它与微控制器、SIM卡、电源之间的连接如图1所示。
图1 GPRS模块的硬件连接图
其中GPRS模块与微控制器间是通过串行口进行通信的,通信速率最快可以达到115 200b/s。模块与控制器间的通信协议是AT命令集,其中大部分命令是符合协议"AT command set for GSM Mobile Equipment (ME) (GSM 07.07 version 6.4.0 Release 1997)"的,但也有一些是Wavecom自己定义的AT命令。除了串口发送(TX)、串口接收(RX)之外,微控制器与GPRS模块之间还有一些硬件握手信号,如DTR、CTS、DCD等。为了简化微控制器的控制,硬件设计时没有使用全部的硬件握手信号,而只使用数据载波检测(Data Carrier Detect, DCD)和终端准备(Data Terminal Ready, DTR)信号。DCD信号可以检测GPRS模块是处于数据传送状态还是处于AT命令传送状态。DTR信号用来通知GPRS模块传送工作已经结束。
硬件连接完成后,在进行GPRS上网操作之前,首先要对GPRS模块进行一定的设置。主要的设置工作有:① 设置通信波特率,可以使用AT+IPR=38400命令,把波特率设为38 400b/s或其它合适的波特率,默认的通信速度为9600b/s。② 设置接入网关,通过AT+ CGD CONT=1, "IP", "CMNET"命令设置GPRS接入网关为移动梦网。③设置移动终端的类别,通过AT+CGCLASS="B"设置移动终端的类别为B类,即同时监控多种业务;但只能运行一种业务,即在同一时间只能使用GPRS上网,或者使用GSM的语音通信。④ 测试GPRS服务是否开通,使用AT+CGACT=1,1命令激活GPRS功能。如果返回OK,则GPRS连接成功;如果返回ERROR,则意味着GPRS失败。这时应检查一下SIM卡的GPRS业务是否已经开通,GPRS模块天线是否安装正确等问题。(其它相关的AT命令请参阅文献3。)
中国移动在GPRS与Internet网中间建立了许多相当于ISP的网关支持节点(GGSN),以连接GPRS网与外部的Internet网。GPRS模块可以通过拨"*99***1#"登录到GGSN上动态分配到Internet网的IP地址。其间GPRS模块与网关的通信要符合点对点协议(Point to Point Protocol, PPP),其中身份验证时用户名、密码都为空。使用PPP协议登录上之后,就可以通过GGSN接上Internet了。
3 软件整体结构
3.1 软件层次结构
程序中的所有代码都是由C语言编写的,并采用分层的结构,从底到上分别为:串口驱动层、GPRS模块驱动层、PPP协议层、IP协议层、UDP协议层与应用层。上层函数的实现需要应用到底层函数,而底层函数的任务就是为上层函数提供服务,最终完成应用层任务——传送数据。各层的主要函数如图2所示。
图2 软件层次结构
3.2 驱动程序编写
首先是串行口驱动层。它实现打开串口(OpenComm)、关闭串口(CloseComm)、读串口数据(ReadComm)、写串口数据(WriteComm)等函数。例如WriteComm函数向串口发送一个字节的数据,而transmit函数向串口发送一个字符串的数据:
void WriteComm(char c){
ES = 0;
SBUF = c;
while(TI==0);
TI=0;
ES = 1;
}
void transmit (char *data) {
Delay (250);
while (*data) {
WriteComm (*data++);
}
}
作者:清华大学 黄承安 张跃 来源:伟纳电子