目前,在由GPRS承载业务支持的标准化网络协议的基础上,可提供点对点无连接型网络业务(PTP—CLNS)、点对点面向连接的数据业务(PTP-C*)和点对多点业务(PTM),还能支持用户终端业务、补充业务、GSM短消息业务和各种GPRS电信业务。GPRS可提供Internet、多媒体、电子商务等业务,可应用于运输业、金融、证券、商业和公共安全业;PTM业务支持股市动态、天气预报、交通信息等实时发布;另外,还能提供种类繁多、功能强大的以GPRS承载业务为基础的网络应用业务和基于WAP的各种应用。其中,GPRS的数据业务在行业应用中越来越广泛。该业务已被应用于远程抄表、电力系统远程监控、交通远程监控、车辆监控和GPS导航等诸多方面。
在GPRS数据业务的行业应用中,数据终端是最基本的设备。目前的数据终端具有智能化和可扩展性不断增强的发展趋势,性能越来越强大,接口越来越丰富,但成本一直居高不下。本文介绍一种以基于AVR单片机ATmegal6和Motorola G20模块的低成本GPRS数据终端的设计。
1 终端的硬件设计
终端由ATmegal6和G20模块及一些外围器件组成,系统的硬件结构如图1所示。ATmega16具有1个功能完整的异步串行通信接口(UART),在直流5V供电时,其I/O操作电压范围约为O~5V;G20模块提供一个用于接收控制命令和传输数据的异步串行通信接口,在直流3.3V供电时,其I/O操作电压范围为0~3.3 V,因此,可以将ATmegal6串行接口经电平转换电路转接后与G20模块的串行口相连,进行异步串行数据交换。终端采用一块16×2字符型LCD显示GPRS网络连接及数据传输状况信息。ATmegal6和LCD采用直流5 V供电,5 V电源经过由低压差线性稳压集成电路LM1117—3.3组成的稳压电路将电压转换成3.3 V后给G20模块供电。
1.1 ATmegal6与G20模块的硬件接口
由于ATmegal6和G20模块的I/O操作电压范围不相同,所以两者的串行口之间需经过电平转换才能确保稳定通信,其电平转换电路如图2所示。
这里采用光电耦合器件TLP521进行5 V和3.3 V之间的电平转换。ATmegal6的I/O驱动能力较强(最大输出40 mA电流),可以直接驱动TLP521。G20模块的I/O驱动能力较弱,需加一级驱动缓冲器才能驱动TLP521,这里使用7406反相驱动缓冲器。
1.2 ATmegal6与LCD的硬件接口
系统中采用基于HD44780液晶控制芯片的16×2字符型LCD,该器件内置了字符产生器,能显示192个常用字符(包括阿拉伯数字和大小写英文字母)和16个用户自定义字符,它与ATmegal6的接口如图3所示。HD44780的数据总线DB7~DB0与ATmegal6的PA7~PA0相接,RS、R/W和EN分别与单片机的PD3、PD4和PD5相连。利用ATmega16的I/O口控制LCD进行指令和数据输入,正确地显示出经纬度数据。
2 ATmega16与G20模块的接口程序设计
利用GPRS网络进行数据传输一般有多种组网方案,这里以其中一种方案进行说明,其他方案的数据终端实现方式类似。该方案采用数据中心公网固定IP,由监测点直接向中心发起连接。
G20模块自身内嵌了TCP/IP和UDP/IP协议栈,大大简化了接口程序的编写。G20模块串口通信默认在57 600 b/s的速率下进行,数据格式为:8位数据位、1位停止位、无奇偶校验和硬件流控制。
G20模块只能接受由ASCII字符代码组成的标准格式的AT指令。根据Developer′S Guide-Motorola G20 AT Commands所讲述的内容,一行G20模块的AT指令可以包含一条或者多条命令,这些命令必须由分隔符相隔,每个AT指令行不得超过140个字符。G20模块具体的AT命令行结构如图4所示。
每个AT命令行均以字符串“AT”为前缀,以回车符“”为后缀。命令行中各指令之间的分隔符可以为分号“;”或者空格。命令行中的英文字母可以是大写格式,也可以是小写格式。
每当G20模块接收到指令时都会输出相关的响应信息,以显示指令的执行结果。响应信息的数据格式如图5所示。响应信息由3部分组成:前缀、响应代码和后缀。其中,前缀和后缀一样,均为回车和换行符,即“”;不同指令在不同情况下的响应代码也不一样。
在实际应用中,可以通过程序控制ATmegal6由其异步串行口按照既定的通信速率、数据格式和指令形式向G20模块发出控制指令,然后监视G20模块的响应信息,根据响应信息判断命令的执行结果,进而控制G20模块进行远程无线数据发送。利用G20模块实现GPRS数据发送一般要按照以下控制步骤进行(这里使用的是UDP协议):
(1)通过指令“at+mipcall=[,[,-]]”建立一个GPRS无线链接,如“at+mipcall=1,cmnet”。在这里,“cmnet”是中国移动的APN名称。其中可为0或1,0代表断开连接,1代表连接。[,[,]]是可选项,无需时省去。如果链接建立成功,G20模块将会返回本机的IP地址,如“0K+mipcall:10.103.201.135”,此时本机在移动内网的IP地址为:10.103.201.135。如果链接不成功,G20模块将会返回错误信息“ERROR”。
(2)通过指令“at+mipopen=,,,,”打开一个端口(Socket),如“at+mipopen=l,2000,“219.222.73.240”,6800,1”。其中,是本地端口号,G20模块一共可以打开4个端口,端口序号分别是1~4;是G20模块本机的端口号,其数值可以是0~65 535;是目标IP地址,可以是直接连接到Internet公网的某台PC的IP地址。是目标的端口号,其数值可以是0~65535。是协议栈类型,其数值可以为0或1,0代表是TCP协议栈,1代表UDP协议栈;如果端口打开成功将返回“OK+MIPOPEN:,”,如“OK+MIPOPEN:1,1”。如果端口打开不成功,将会返回错误信息“ERROR”。
(3)通过指令“at+mipsend=,”将需要发送的数据压入G20模块的发送堆栈。如“at+mipsend=1,4142434445”。这里的是前面已经打开的端口序号,是所要发送的数据,数据格式必须是用十六进制表示的数据(数值或者字符)的双字节ASCII值。如要发送的数据为“ABCDE”(A、B、C、D和E的ASCII数值分别为0x41,0x42,0x43,0x44和0x45),则要将“4142434445”作为压入发送堆栈。指令操作成功时,G20模块返回信息“+MIPSEND:,OK”,如“+MIPSEND:1,1367OK”,其中是端口序号,是指堆栈中的剩余空间,其数值可为O~1372。如操作不成功,G20模块将会返回错误信息“ERROR”。
(4)通过指令“at+mippush=[,,]”将特定序号发送堆栈中的数据出栈,如“at+mippush=1”执行这条指令之后,堆栈中的数据就被发送出去了。这里所说的堆栈序号是和前面所述的端口序号一一对应的。方括号中的内容是可选项,不需要时可以省去。数据发送成功时,G20模块返回信息“+MIPPUSH:OK”,如“+MIPPUSH:1OK”。如数据发送失败,G20模块将会返回错误信息“ERROR”。
(5)反复进行上述步骤(3)和(4),直至所有数据发送完毕为止。
(6)通过指令“at+mipclose=”关闭已打开的端口,如“at+mipclose=1”。端口关闭成功时,G20模块会返回信息“OK+MIPCLOSE:”,如“OK+MIPCLOSE:1 ID》”。如果端口关闭不成功,G20模块将会返回错误信息“ERROR”。
(7)通过指令“at+mipcall=0”关闭GPRS网络连接。如果网络连接关闭成功,G20模块将会返回信息“OKNOCARRIER+MIPCALL:0”。如果网络连接关闭不成功,G20模块将会返回错误信息“ERROR”。
另外,G20模块接收到远程终端通过GPRS网络发送过来的数据时会自动从其串口输出该数据。如果接收到的是UDP协议的数据,G20模块会以以下数据格式输出:
+M1PRUDP:,,,,
其中,是发送方的IP地址,是发送方的端口号,是本机端口序号,留在堆栈中的接收数据字节数,是所接收到的数据。如果接收到的是TCP协议的数据,G20模块会以以下数据格式输出:
+MIPRTCP:,,
各部分含义如前述。编程使ATmegal6不断查询串口接收缓冲区即可实现数据接收,也可以采用接收中断的方式提高运行效率。
3 结 语
GPRS数据传输链路中GGSN(网关GPRS支持节点)占用的端El的存活时间是有限的,如果链路空闲超时,连接就会断开,可通过定时发送数据短帧的方式来维持链路。经测定,本地(广州)的GPRS数传链路维持时间为60 s。基于ATmegal6的GPRS数据终端成本低,易于推广普及,可用于远程数据采集、系统监测和Internet远程接入等领域。
责任编辑:gt
-
单片机
+关注
关注
6035文章
44554浏览量
634629 -
接口
+关注
关注
33文章
8575浏览量
151014 -
GPRS
+关注
关注
21文章
984浏览量
129423
发布评论请先 登录
相关推荐
评论