如何使用GPRS模块实现远程数据传输?

作者&投稿:堵璐 (若有异议请与网页底部的电邮联系)
单片机采集的数据,通过GPRS模块,再通过GPRS无线网络,把数据传输到远程的PC机上~

1.GPRS模块和单片机通过UART交互AT命令和传输的数据。最普通的单片机也有串口吧,430当然可以实现。
2.GPRS模块的作用就是附着GPRS网络,获得网络IP,连接远程PC机的IP和端口。独立工作不需要射频发射模块,需要天线和SIM卡。
3.远程PC机的IP和端口通过AT设置命令配置到GPRS模块中,通过AT连接命令控制GPRS模块连接远程PC。
看似复杂,其实很简单,找个GPRS模块手册看看里面的AT命令就明白了,比如华为。

远程实时监控需要:(单说window系统)
难度倒是不太大,关键要有:
1、熟悉windows vc++程序开发,熟悉windows提供的GUI类库和socket网络接口;

2、熟悉掌握面向对象程序设计流程
3、熟悉gprs模块数据传输格式和解析(或者相关设备提供的应用程序开发工具包SDK)
具体什么语言其实无关紧要。C#,java应该也可以。
Qt(C++类库)应该也可以。而且方便实现跨平台。

随着网络应用的普及和移动装备的大量增加,GPRS技术以其低廉的价格和较快的速率已经越来越多地应用到各种各样的场合中,通过操作系统自带的网络协议来控制GPRS的拨号过程已经很成熟,但是,并非所有的数据传输系统都拥有操作系统或网络协议。相对干昂贵的嵌入式芯片,8051系列单片机更经济,更具有实用性且如果仅仅为了实现GPRS数据传输而采用嵌入操作系统也显得过于复杂这就要求能够有一种简洁有效的新方法来实现整个拨号过程及数据传输过程。因此有必要研究一种简单经济的新办法来解决这种矛盾。本文正是基于上述原因而提出了相应的解决办法.

一、网络体系结构分析

文中研究UDP/IP协议而不是TCP/IP协议,这主要根据本研究背景课题的实际情况而定。UDP相对于TCP的优点在干:简洁、方便迅速、经济。缺点在于:传输过程中可能出现“丢包”现象但对于本研究所涉及的工程项目则影响不大。具体硬件结构如图1所示。主要是通过GPRS模块实现远程传输从传感器采样的数据同时能够通过GPRS网络实现远程管理。外围电路还包括了看门狗、时钟、闪存、AD转换器等上位机软件再通过具体算法实现对数据的分析,是实现农业现代化的必不可少的基础工作,有很重要的实际意义。

研究基干GPRS的无线通讯必须首先明了通讯过程的网络系统结构,才能在实际解决问题的过程中不致误入歧途。

GPRS无线数据传输的最低层,即物理层是通过RS232串口及GPRS模块组成的,然后是数据链路层,该层是分析的重点和难点,其中涉及到PPP协议实现过程数据链路层上面是网络层,其后是传输层,就是我们通常所说的UDP/IP,TCP/IP其中IP协议属于网络层协议,而UDP.TCP都属于传输层协议传输层上方的是包括会话层、表示层、应用层等,均不属本文讨论范围内,这里不再详述。

另一方面,每层协议都是基于下方协议而实现的即如果使用数据链路层则必须有物理层的支持。如果没有物理层,实施软件的物理介质也就不存在。同理,IP则是基于PPP协议实现的数据链路层,而UDP是基于IP协议实现的网络层,这也就是UDP/IP包要通过PPP协议封装起来的原因.

二、数据链路层的建立

GPRS登陆网络过程属干数据链路层的建立,要通过PPP协议实现PPP协议(Point-to-Point Protocol)提供了在串行点对点链路上传输数据报的方法,支持异步8位数据及位导向的同步连接(如ISDN)它提供了一种管理两点间会话的有效方法,正在取代SLIP(Serial Line Interface Protocol)协议成为点对点网络的标准.

1.通过PPP实现GPRS的上网认证过程

在GPRS模块上网的过程中,主要是经过PPP协议中的三种协议,分别为LCP(Link Control Protocol)协议,PAP(Pass-word Authentication Protocol)认证协议以及IPCP(Internet Protocol Control Protocol)协议LCP部分主要协商下一步的密码认证协议,可选择PAP方式或CHAP方式,我们根据ISP要求选择PAP方式。PAP部分主要是向ISP发送密码进行认证。密码认证通过以后进入IPCP,完成客户端请求IP及ISP端分发IP的过程。其实现过程图如图2所示

在认证过程中,MCU、GPRS模块及ISP都需要发送PPP格式的数据包来完成协商过程该数据包为16进制,多数情况下其对应ASCII码并无实际意义PPP数据帧的结构如表1所示。

对于表1所示的协议部分有如下凡种形式的描述:

对于表1所示的信息位包括了链路配置包标志,描述如下:

以上3个表所示的内容是分析PPP协议各种类型数据包的基本概念。在解析PPP数据包中需要注意的另外一个事项是,如果字符中包括了Ox7D,则表示该字符后面的字符需要转义。转义方式是后一个字符与0x20进行异或运算得出的16进制数据作为真是数据比如一个数据包包括了......Ox7D0x23......,则真实表示的为Ox03a(为方便表示下文所示数据均为转义后的数据)

2.实际协商过程分析

(1)LCP协商过程

首先设置模块的初始化参数及工作参数向模块发送如下AT指令:

1)AT+CGCLASS="B"置为“B”模式

2)AT+CGDCONT=1,"IP";"CMNET"设置APN

3)AT+CGATT=1,使GPRS模块附着在网络上

然后发送指令"ATD*99***1#"建立拨号过程,模块会返回16进制的一些数据。我们要据此与模块进行协商。首先返回数据包(16进制):7EFF03CO2101010016010405DC020600000000070208020304CO2326B47E

数据包含义:7E(PPP包头)FF03CO21(LCP协议)01(代码)01(标识符)0016(长度)01(类型)04(长度)05DC(协商内容Maximum-Receive-Unit)02(类型)06(长度)00000000(协商内容)07C类型协议压缩协商)02(长度)08(类型,地址控制域压缩协商)02C长度)03〔类型)04(长度)CO23(内容表示请求PAP认证)26B4(FCS,校验和)7E(PPP包尾)。

此模块在进行LCP协商阶段是比较友好的,主动提出了PAP认证方式,可直接返回对它请求的同意也可以提出些新的申请,实际操作中发送同意请求为:7EFF03CO2102010016010405DC020600000000070208020304CO23DO477E。

至此LCP认证阶段已经结束

(2)PAP认证过程

因为协商同意PAP密码认证方式故进入PAP过程,需要发送用户名和密码至ISP.请求格式为7ECO230101000600003B3F7E

该包在0006后的0000分别代表用户名和密码,都为空此时由于需要与ISP进行认证,需要等一段时间经过判断,服务器通过密码认证,返回:7ECO237D227D217D207D2D7D2857656C636F6D65214EBC7E

其中的16进制字符"57656C636F6D6521"转为ASCII码为"Welcome!".同时服务器发送IPCP请求数据包:7E8021010100OA0306COA86F6FCID497E

进入IPCP协商过程

(3)IPCP协商过程

客户端部分此时需要请求ISP分发IP请求为:7E802101060016030600000000810600000000830600000000OACF7E

"0306""8106""8306"后的四个00分别代表客户端IP,第一DNS主机地址,第二DNS主机地址,这3个部分全部为00表示内容为空,是请求ISP分发IP到客户端。

服务器得到请求后分发IP数据包为:7E8021030600160306OA4A0C148106D38812AB8306D3887D34CB.6B6B7E

OA4AOC14表示为十进制的10.74,12.20,由于中国移动通信规定GPRS拨号上网的用户分发的IP均为内部IP,非外部IP,所以IP都是以10.***开头的。8106后面的D38812AB表示211.136.18171,是第一DNS主机的IP地址。8306后面的D38814CB表示211.136.20.203,是第二DNS主机的IP地址此后我们需要对分发下的几个IP辨认识别,然后再次请求请求中包含这3个分发IP,代表接受分发结果。数据包为7E8021010700160306OA4A4C838106038812ABe3o6D38e14CBF2C17E

此后清求得到ISP认可,链路层PPP握手过程全部结束进入网络阶段。此后所有发往GGSN网绍的包含IP的数据包都会透明的传给所对应的IP地址。以上既是对PPP协商过程的分析,只要注意上面所提及的每步的注意事项及含义,即可迅速快捷的建立数据链路层.

三、网络层及传输层的实现

网络层和传输层虽然属于IP及UDP协议实现的功能但此两者都是建立在数据链路层基础上的,因此在发送PDP/IP包的时候仍然不能摆脱对PPP协议的依赖。由PPP封装的UDP/IP数据包组成如下表所示:

1.IP协议介绍

IP包的组成形式如表5所示,其中8位协议处可选择TCP方式或UDP方式,8位TTL为TimeToLive,只数据包在网络中的存活时间。

2.UDP协议介绍

相对于旧数据包UDP数据包的组成比较简草,主要包含所要发送的数据信息即数据段。结构如表6所示其中最后的UDP校验与IP数据包中的IP校验方式一样,但与PPP协议中的FSC校验方式不同。FSC校验属于CRC16位校验方式的一种而旧校验和UDP校验是相对简单的反码求和的校验机制。并且对于IP及UDP校验而言需要将数据包需要校验部分的16位转换为32位进行校验校验好之后再转换为16位.

3.IP及UDP校验和

IP校验和所要校验的数据段包括了前面所提的IP数据包内的所有位段,而UDP校验相对IP校验复杂的地方在于,UDP校验不仅仅要将UDP数据包内的内容包括进来,而且还要包括IP部分的一些信息UDP校验位组成如下:

对于最后一位的数据段而言由于校验是32位所以如果数据段出现奇数个数据,需要加零补位。

校验程序如下所示:

HdelineUSHORT

unsignedshortUSHOPTchecksum(USHORT*buller,Intsize)

{

unsignedIongcksum=0;

while(size>1)

{

cksum+=*buffer++;

size-=sizeof(USHORT);

}

if(size)

cksum+=*(UCHAR*)buller;

cksum=(cksum>>16)+(cksum&oxnff);

cksum+=(cksum>>16)return(USHORT)(Ccksum);

}

4.由PPP封装形式封装的UDP/IP数据包

根据前面所介绍的方法,下面给出一个具体的实例进行分析:7E2145.00001D47F300DOBID11BOF60A4A30EDD350336C03E803F20000551B61A5DE7E

7E21为PPP包头,4表示旧版本号5表示首部长度,00表示服务类型,001D表示包的All长度47F3表示16位的标识,00表示3位的标志+13位的片偏移,80表示TTL,11表示协议(11表示UDP协议,TCP为06),B0F6是IP首部校验和。接下来的"0A4A30E0"表示本地IP地址即刚才通过PPP协议获得的动态IP而"D350336C"表示对方IP,即要发送的目的IP,"03E8"表示本地端口(这个可以随便设定只要不与系统已用端口冲突即可,对于UDP而言这个没有实际意义因为GPRS分配到的是内部IP,即使对方知道你的IP及端口也可能通过UDP方式传输数据,而如果是TCP协议则用GPRS作为Client清求Server建立通道后Server端可根据端口发送数据)"03F2"表示目的端口"0009",表示UDP包的长度(本地端口2字节+目的端口2字节+数据长度2字节+数据端n字节十UDP校验2字节),“55”表示数据,转换为ASCII码应为"a","1B61"为UDP校验和"A5DE"为PPP包的FSC校验和。此段代码的含义是“向IP为211.80.51.108,端口为1010的目的地发送字符a".

四、结束语

GPRS的应用不仅仅局限于嵌入式或PC机领域,更能扩大到简单的8051微控制器,从而更深入地扩大GPRS技术的使用。同时针对GPRS上网方式裁减PPP和UDP/IP协议,软件部分用C语言编写可压缩至4K,不仅简化认证过程更节省程序运行时间,正常情况下从拨号到登陆网络只需要3秒钟而且该程序可方便的移植到各种硬件系统中。目前该系统已稳定运行于南京试验田农田墒情检测系统。


移动手机开通GPRS
要开通GPRS服务,用户首先需要确保自己的手机支持GPRS功能。大多数现代智能手机都内置了GPRS模块,能够自动识别和连接到GPRS网络。然后,用户需要向移动运营商申请开通GPRS服务。通常情况下,用户只需拨打运营商客服电话或发送短信申请开通即可。运营商会根据用户的需求和手机型号,为用户配置相应的GPRS参数,如...

笔记本怎么可以用gprs模块上网
买个gprs的无线上网卡,办个开通gprs包月的手机卡,安装好,驱动,拨号上网,OK

GPRS通信模块的简介
GPRS通信模块,采用高性能工业级无线模块及嵌入式处理器,以实时操作系统作为软件支撑平台,内嵌自主知识产权的TCP\/IP协议,为用户提供高速,稳定可靠,永远在线的透明数据传输通道。GPRS通信模块支持多种工作模式,已广泛应用于移动POS终端、金融、供应链自动化、智能化运输、工业自动化、智能建筑、智能家居、...

GPRS通信模块的详细说明
通信功能:支持GPRS和短消息双通道传输数据;支持与多中心进行数据通信。采集功能:采集串口设备数据,如串口仪表、采集器、PLC等。远程管理功能:支持远程参数设置、程序升级。 工业级设计,适用室外恶劣环境。内置软硬件看门狗,不死机,不掉线。支持数据透明传输。支持域名解析功能。支持各家组态软件和用户...

怎么用51单片机控制GPRS模块接发数据
都只支持中断的方式,西门子的可以用查询,其实用查询比较简单,中断的话调试起来相对较麻烦;(2)根据串口通信程序和使用的GPRS模块的手册,编写GPRS的通信程序,包括GPRS模块的硬件和软件初始化,GPRS的接收和发送数据等函数;(3)根据实际需要编写GPRS的整体通信程序,通信的数据协议可以自行设计 ...

STM32和GPRS模块的硬件连接怎么连?具体到端口名称写谢谢!
教程上给的都是串口3

GPRS无线数传模块做什么用的?
GPRS可以让工业用的RS232\/485串口设备的串口通信立即转换为GPRS无线网络通信。内置TCP\/IP协议透明传输,用于长距离通信或控制。CG12依赖GSM网络传输数据。 广泛用于楼宇自动化控制、停车场设备、交通控制、LED屏幕控制、工厂、车间、矿井、银行、电气等遥控领域。性能比较稳定的可以试试CG12的这款DTU.

GPRS如何使用?
GPRS可以在除蜂窝电话之外的多种设备中得以实现,包括膝上型电脑的PCMCIA调制解调器、个人数字助理的扩展模块和手提式电脑。当前流行的手提式E-mail设备BlackBerry(黑莓)的制造商Research in Motion(RIM)于一个称为Microcell Telecommunications的GSM供应商合作,研究如何将GPRS用于其他无线系统消息的传送。 3.GPRS业务应用 ...

GPRS是什么意思
1、GPRS即“通用分组无线业务”(“Gerneral Packer Radio Service”的缩写),是在现有GSM网络上开通的一种新型的分组数据传输技术。2、手机开通GPRS服务后,可以通过该项传输技术,快速连接网络。

单片机如何与gprs模块软件连接呢
GPRS模块上应该有四个引脚输出,分别是VCC、RXD、TXD和GND。RXD连接到单片机的TXD上,TXD连接到单片机的RXD,记住要共地。gprs模块有一个驱动程序,购买模块的时候叫他们提供程序源码就得了。会有例子参考。

迎泽区18620699885: 如何使用GPRS无线通信网络实现数据远传 -
父科莱普: 数据应该是通过串口接到GPRS模块上···就可以远传了··

迎泽区18620699885: PC与PLC之间如何通过GPRS实现远程通信?
父科莱普: PLC的串口连接1台GPRS,通过GPRS模块发送数据到PC的端口(TCP或UDP),步骤: 1、先将PC直接连接PLC编程调试通过(至于选TCP通讯还是串口自己决定). 2、根据选择的接口方式(TCP还是串口)选用GPRS模块(串口的叫DTU,TCP的叫路由器), 3、选择通态域名还是固定IP 4、设置GPRS模块参数,设置PC的端口映射(PC端的路由器) 5、通信收发数据测试, 6、工程测试.

迎泽区18620699885: 实现远程数据采集,如何将终端设备数据通过GPRS传到台式机上 -
父科莱普: 建立服务器端,有固定IP 或者 域名之类 服务器端无需额外设备 GPRS 设备 直接通过 TCP/IP 协议往服务器发送数据.

迎泽区18620699885: GPRS模块如何连入internet,并向电脑发送信息 -
父科莱普: 如果您单独购买的 是 gprs 模块,想连接入internet 需要做一个控制板,用单片机来实现控制,一般在 网上能找到 样板的 如果您购买的是 gprs dtu ,这个是已经做好的产品了,按照产品的使用说明书配置好,上电 之后 打开 接收端软件就可以实现通信了

迎泽区18620699885: 单片机采集的数据,通过GPRS模块,再通过GPRS无线网络,把数据传输到远程的PC机上 -
父科莱普: 1.GPRS模块和单片机通过UART交互AT命令和传输的数据.最普通的单片机也有串口吧,430当然可以实现.2.GPRS模块的作用就是附着GPRS网络,获得网络IP,连接远程PC机的IP和端口.独立工作不需要射频发射模块,需要天线和SIM卡.3.远程PC机的IP和端口通过AT设置命令配置到GPRS模块中,通过AT连接命令控制GPRS模块连接远程PC.看似复杂,其实很简单,找个GPRS模块手册看看里面的AT命令就明白了,比如华为.

迎泽区18620699885: 如何实现网页端通过GPRS远程控制 -
父科莱普: 点击我的电脑右键——》属性,如图.打开系统属性页面后,点击远程——》勾选上远程桌面下的允许用户远程连接到计算机,然后,点击选择远程用户,如图.点击添加,如图.点击立即查找,在刷出的用户中,选择你需要的用户,点击确定,如图.5一直确定回去就可以了,如图.

迎泽区18620699885: 单片机+GPRS+pc的数据传输与连接 -
父科莱普: 在你电脑上架设WAP服务器,然后通过GPRS访问你的电脑的IP或域名+端口.你的电脑端要有一个程序在监听这个端口,接到请求后连接,连接成功就可以发送数据了.用TCP、IP协议.也就说,你还得写一个程序,来接收并显示数据.

迎泽区18620699885: 采集的数据如何通过GPRS传输 -
父科莱普: 可以借助DTU,他有232或者TTL等多种接口,他有透明传输功能,这样实现起来最方便,如果再拿单独模块开发,工作量大还不一定稳定.

迎泽区18620699885: 如何通过单片机的GPRS模块向android数据库传输数据 -
父科莱普: 1. 你需要学习c语言来做单片机的开发,同时通过串口来给GPRS发数据.2. 如果网站那边也需要你自己开发的话,你就需要用到PHP和SQL数据,网站一侧数据处理和返回什么的,都可以用PHP完成.网站返回数据并处理和屏幕显示什么的,都是单片机的c语言就可以完成了.

迎泽区18620699885: 怎么通过两个GPRS模块传输数据,能不能用什么程序实现 -
父科莱普: 1种是短信模式,1种是TCPIP模式,TCPIP模式的话你要去运营商去开通相关的业务了,毕竟2个G PRS肯定有个作为服务器端,需要绑定IP地址和开通端口,传输指令参考GSM AT指令!程序实现不是很难!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网