GPRS模块开发Word格式文档下载.docx
《GPRS模块开发Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《GPRS模块开发Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
针对这一问题,提出一种基于GPRS的单片机上网的解决方案,即在单片机中实现PPP协议,并通过驱动GPRS模块经过GPRS无线网连接到Internet实现上网。
这种方案的优点在于:
①覆盖面广,适用于广大偏远地区;
②无线上网,适用于可移动目标;
③使用廉价的微控制器实现简单、成本低;
④安装简便,维护方便。
GPRS技术及其特点
GPRS(GeneralPacketRadioService)是通用分组无线业务的简称,是在GSM基础上发展起来的一种分组交换的数据承载和传输方式。
与原有的GSM比较,GPRS在数据业务的承载和支持上具有非常明显的优势:
通过多个GSM时隙的复用,支持的数据传输速率更高,理论峰值达115kb/s;
不同的网络用户共享同一组GPRS信道,但只有当某一个用户需要发送或接收数据时才会占用信道资源。
这样,通过多用户的业务复用,更有效地利用无线网络信道资源,特别适合突发性、频繁的小流量数据传输,很好地适应数据业务的突发性特点;
GPRS计费方式更加灵活,可以支持按数据流量来进行计费;
与无线应用协议(WAP)技术不同,GPRS能够随时为用户提供透明的IP通道,可直接访问Internet中的所有站点和资源;
采用信道复用技术,每一个GPRS用户都能够实现永远在线;
另外,GPRS还能支持在进行数据传输的同时进行语音通话等等,而且相对于短消息等其它无线数据通信业务,GPRS的价格优势比较明显。
目前,我国移动推出的GPRS上网业务最高每千字节也只有3分钱,而且用户可以根据自己的需要,以月租、包月等多种形式进一步降低GPRS通信的费用。
因此使用GPRS实现远程数据的传送是非常经济实用的,特别是对于不易架设有线网络的边远地区和可移动装置。
硬件连接和GPRS模块设置
通过GPRS网进行数据传输一般需要使用GPRS模块。
目前,GPRS模块一般是指带有GPRS功能的GSM模块,可以利用GPRS网进行数据通信。
其中比较流行的有法国Wave公司的WISMO系列和西门子公司的S系列等等。
WAVECOM的WISMO模块接口简单、使用方便且功能非常强大
其中GPRS模块与单片机间是通过串行口进行通信的,通信速率最快可以达到115200b/s。
模块与控制器间的通信协议是AT命令集,其中大部分命令是符合协议“ATcommandsetforGSMMobileEquipment(ME)(GSM07.07version6.4.0Release1997)”的,但也有一些是Wavecom自己定义的AT命令。
除了串口发送(TX)、串口接收(RX)之外,微控制器与GPRS模块之间还有一些硬件握手信号,如DTR、CTS、DCD等。
为了简化微控制器的控制,硬件设计时不要使用全部的硬件握手信号,而只使用数据载波检测(DataCarrierDetect,DCD)和终端准备(DataTerminalReady,DTR)信号。
DCD信号可以检测GPRS模块是处于数据传送状态还是处于AT命令传送状态。
DTR信号用来通知GPRS模块传送工作已经结束。
硬件连接完成后,在进行GPRS上网操作之前,首先要对GPRS模块进行一定的设置。
主要的设置工作有:
①设置通信波特率,可以使用AT+IPR=38400命令,把波特率设为38400b/s或其它合适的波特率,默认的通信速度为9600b/s。
②设置接入网关,通过AT+CGDCONT=1,“IP”,“CMNET”命令设置GPRS接入网关为移动梦网。
③设置移动终端的类别,通过AT+CGCLASS=“B”设置移动终端的类别为B类,即同时监控多种业务;
但只能运行一种业务,即在同一时间只能使用GPRS上网,或者使用GSM的语音通信。
④测试GPRS服务是否开通,使用AT+CGACT=1,1命令激活GPRS功能。
如果返回OK,则GPRS连接成功;
如果返回ERROR,则意味着GPRS失败。
这时应检查一下SIM卡的GPRS业务是否已经开通,GPRS模块天线是否安装正确等问题。
中国移动在GPRS与Internet网中间建立了许多相当于ISP的网关支持节点(GGSN),以连接GPRS网与外部的Internet网。
GPRS模块可以通过拨“*99***1#”登录到GGSN上动态分配到Internet网的IP地址。
其间GPRS模块与网关的通信要符合点对点协议(PointtoPointProtocol,PPP),其中身份验证时用户名、密码都为空。
使用PPP协议登录上之后,就可以通过GGSN接上Internet了。
软件整体结构
程序中的所有代码最好采用C语言编写,并采用分层的结构,从底到上分别为:
串口驱动层、GPRS模块驱动层、PPP协议层、IP协议层、UDP协议层与应用层。
上层函数的实现需要应用到底层函数,而底层函数的任务就是为上层函数提供服务,最终完成应用层任务——传送数据。
驱动程序编写
首先是串行口驱动层。
它实现打开串口、关闭串口、读串口数据、写串口数据等函数。
然后,在这些串口函数的基础上编写GPRS模块的驱动函数。
单片机通过串行口控制GPRS模块,进行拨号、设置等操作。
控制的方法是采用AT命令。
在控制GPRS模块拨打移动梦网GGSN的登录号码“*99***1#”之后,GPRS模块就转入在线模式(On-Line)。
此时单片机向串行口发送的所有数据都透明地传送给了GGSN,同样GGSN的回答也传回单片机的串行口。
当数据传送完成后,单片机需要通知GPRS模块结束会话,并从在线模式转回普通的命令模式,这可以通过置高DTR线完成。
同时,如果线路由于异常断开,CD线会回复到平常的低电平,所以处于在线模式下也要不断检测CD线是否处于高电平。
根据这些操作,可以编写GPRS驱动函数:
初始化GPRS模块函数、拨号函数、断开连接函数、检测是否处于在线状态函数。
这些底层的驱动函数将会使上层协议的编写很方便,更重要的是,它为我们提供了一个驱动抽象层。
当底层硬件做出改动的时候,只需要对底层的驱动函数进行改动,而上层函数的代码不变。
PPP协议的实现
由于移动梦网的GGSN与GPRS模块通信时遵循PPP协议,所以要在单片机中也实现一部分PPP协议才能与之对话。
GPRS模块在拨号后首先要与GPRS网关进行通信链路的协商,即协商点到点的各种链路参数配置。
协商过程遵守LCP(LinkControlProtocol)、PAP(PasswordAuthenticationProtocol)和IPCP(InternetProtocolControlProtocol)等协议。
其中LCP协议用于建立、构造、测试链路连接;
PAP协议用于处理密码验证部分;
IPCP协议用于设置网络协议环境,并分配IP地址。
协商机制用有限状态机的模型来实现。
一旦协商完成,链路已经创建,IP地址已经分配就可以按照协商的标准进行IP报文的传输了。
根据应用的不同,IP报文中可以携带UDP报文,也可以是TCP或ICMP报文。
本系统正是采用UDP报文传送数据信息的。
数据传输完成之后,单片机会向GGSN发送LCP的断开连接报文,以终止网络连接。
PPP协议的帧结构(图略)。
单片机的串口中断接收程序首先以包起始和结束符来判断是否有完整的PPP包,并对PPP包的内容进行校验,以确定数据包的完整性和正确性。
然后,在主循环中进入PPP报文解析模块。
登录GGSN的过程
系统的一个难点是单片机登陆GPRS网关(GGSN)并与网关通过LCP、PAP、IPCP协议进行协商的过程。
LCP、PAP与IPCP协议的帧结构大同小异,最常用的为请求(REQ)、同意(ACK)和拒绝(NAK)三种帧。
单片机与GGSN各为一方进行协商,任何一方都可以发送REQ帧请求某方面的配制,另一方觉得配置不能接受会回应NAK帧,如果可以则回应ACK帧。
为了节省资源,我们只处理这三种数据帧,其它链路问题都由单片机在程序控制下自己重新拨号解决。
协商过程大致描述如下:
在拨号成功连接后,GGSN首先会返回一个PAPREQ数据帧。
我们发送一个空LCPREQ帧,以强迫进行协议协商阶段。
随后,GGSN发送LCP设置帧,我们拒绝所有的设置并请求验证模式。
GGSN选择CHAP或PAP方式验证,我们只接受PAP方式。
然后,进行PAP验证用户名和密码过程,在GPRS中用户名与密码都为空,如果成功,GGSN会返回IPCP报文分配动态IP地址。
此时,就完成了与GGSN的协商过程。
协商过程的状态转换如图4所示。
协商完成后进入IP数据报通信阶段。
此时,单片机向GGSN发送的所有包含IP报文的PPP报文都会被传送给Internet网中相应的IP地址;
而远端所有向单片机IP地址发送的报文也都会经GPRS网传送到单片机上,从而完成单片机与远程主机通过互联网的数据传输。
GPRSDTU是什么?
其工作原理是什么?
GPRSDTU全称GPRS数据传输单元,在国内目前实际上对GPRSDTU具有更加明确的约定:
GPRSDTU是专门用于将串口数据通过GPRS网络进行传送的GPRS无线设备。
GPRSDTU的四个核心功能:
1)内部集成TCP/IP协议栈
GPRSDTU内部封装了PPP拨号协议以及TCP/IP协议栈并且具有嵌入式操作系统,从硬件上,它可看作是嵌入式PC与无线GPRSMODEM的结合;
它具备GPRS拨号上网以及TCP/IP数据通信的功能。
2)提供串口数据双向转换功能
GPRSDTU提供了串行通信接口,包括RS232,RS485,RS422等都属于常用的串行通信方式,而且GPRSDTU在设计上大都将串口数据设计成“透明转换”的方式,也就是说GPRSDTU可以将串口上的原始数据转换成TCP/IP数据包进行传送,而不需要改变原有的数据通信内容。
因此,GPRSDTU可以和各种使用串口通信的用户设备进行连接,而且不需要对用户设备作改动。
3)支持自动心跳,保持永久在线
GPRS通信网络的优点之一就是支持GPRS终端设备永久在线,因此典型的GPRSDTU在设计上都支持永久在线功能,这就要求DTU包含了上电自动拨号、采用心跳包保持永久在线(当长时间没有数据通信时,移动网关将断开DTU与中心的连接,心跳包就是DTU与数据中心在连接被断开之前发送一个小数据包,以保持连接不被断开)、支持断线自动重连、自动重拨号等特点。
4)支持参数配置,永久保存
GPRSDTU作为一种通信设备,其应用场合十分广泛。
在不同的应用中,数据中心的IP地址及端口号,串口的波特率等都是不同的。
因此,GPRSDTU都应支持参数配置,并且将配置好的参数保存内部的永久存储器件内(一般为FLASH或EEPROM等)。
一旦上电,就自动按照设置好的参数进行工作。
GPRSDTU的扩展功能:
较为专业的GPRSDTU还提供一些扩展功能,主要包括:
支持数据中心域名解析、支持远程参数配置/远程固件升级、支持远程短信/电话唤醒、支持本地串口固件升级、提供短信通道、提供DTU在线/离线电平指示等。
这些扩展功能可以增强系统的可靠性,以及方便用户的使用及维护