0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于单片机和Motorola G20模块实现GPRS数据终端的应用方案

电子设计 来源:现代电子技术 作者:黄伟锋 2021-06-10 14:21 次阅读

目前,在由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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5997

    文章

    43948

    浏览量

    620552
  • 接口
    +关注

    关注

    33

    文章

    7616

    浏览量

    148377
  • GPRS
    +关注

    关注

    21

    文章

    980

    浏览量

    128575
收藏 人收藏

    评论

    相关推荐

    基于GPRS远程数据采集系统设计

    基于GPRS远程数据采集系统根据近年来 GSM/GPRS 通信技术发展的趋势,本文提出并设计了基于GPRS 网络通信的远程数据采集系统,主要
    发表于 12-08 09:57

    [原创]单片机GPRS/GSM开发

    单片机GPRS/GSM开发套件主要用于客户开发基于8位用单片机和西门子MC39IGPRS模块GPRS无线
    发表于 03-20 17:39

    基于S3C2410的GPRS数据终端的设计

    基于S3C2410的GPRS数据终端的设计
    发表于 08-20 16:18

    求救!如何用PIC单片机实现GPRS模块进行数据传输

    如何用PIC单片机实现GPRS模块进行数据传输,从网上了解到要通过AT指令,没用过啊,请大侠指点,最好给个例子,谢谢!
    发表于 12-14 13:59

    哪种GPRS模块适合做远程数据终端

    我是新手,在淘宝看了一下有SIM900,GTM900等,现在需要做一个远程发送数据终端,哪种GPRS模块合适呢?
    发表于 09-08 13:31

    无线数据终端 在PLC无线通讯 项目中的应用

    传输终端就是实现无线数据传输所使用的终端模块,通常与下位相连,
    发表于 08-25 14:10

    基于单片机GPRS模块的嵌入式无线数据传输终端实现方案

    本文给出了一种基于单片机GPRS模块的嵌入式无线数据传输终端实现
    发表于 01-04 06:53

    单片机GPRS模块是如何实现与web端通信的?

    单片机GPRS模块是如何实现与web端通信的?其实现代码该怎样去编写?
    发表于 07-22 06:56

    GPRS联网时或联网成功后收发数据数据单片机复位重启怎么解决?

    应用场景 GPRS模块采用AIR202/AIR208,电源方案是JW5033; 单片机采用新唐N76E003,双串口,18K flash,电源与G
    发表于 06-15 07:27

    基于GPRS-Internet 的城市路灯远程监控终端实现I

    本文介绍了基于GPRS-Internet的城市路灯远程监控系统组成、通信以及远程监控终端的软硬件实现。远程监控终端通过GPRS
    发表于 06-01 13:23 46次下载

    工业级多模无线数据终端HMT360

    ,数码照相机的工业级无线数据终端。 工业级无线数据终端 HMT360 支持GSM/GPRS(标配)、McWiLL
    发表于 02-19 17:25 14次下载
    工业级多模无线<b class='flag-5'>数据终端</b>HMT360

    ZWCOM数据终端动态连接库使用说明书

    ZWCOM无线数据终端系列产品主要实现基于GPRS网络的用户串口数据透明传输。无线数据终端本身内嵌TCP/IP协议,用户使用简单方便、稳定可
    发表于 03-21 16:35 41次下载

    基于AT91M40800的无线数据终端

    随着中国移动GPRS和中国联通CDMA1X网络的建成商用,GPRS/CDMA无线数据终端的应用范围越来越广。
    发表于 05-24 17:12 20次下载

    S3C2410实现GPRS数据终端

    构建了一套嵌入式Intemet数据终端方案,对其硬件构成及工作流程进行了讨论,描述了其软件层次结构,并详细讲解了基于该平台的PPP拨号软件包的实现
    发表于 11-02 17:28 59次下载

    无线数据终端怎么使用说明及设置方法

    无线数据传输终端实现无线数据传输所使用的终端模块。本文主要介绍了无线
    发表于 12-18 12:34 26w次阅读