GPRS发送与接收.docx
《GPRS发送与接收.docx》由会员分享,可在线阅读,更多相关《GPRS发送与接收.docx(64页珍藏版)》请在冰点文库上搜索。
GPRS发送与接收
第2章 GPRS无线收发模块的工作原理
在无线通讯监控领域,对其他无线通讯方式而言,GPRS有着不可比拟的优势,基于GPRS的无线数据采集监控系统是目前来说比较稳定、先进的无线监控系统,它具有周期短、数据传输速率快、监控覆盖范围广、通信费用低、通信服务质量安全可靠等特点。
本文研究的系统中,GPRS模块选用SIMCOM公司的SIM300,该模块内备TCP/IP协议栈,使用方便,而且集成了完整的射频电路和GSM的基带处理器,非常适合开发GSM/GPRS的无线应用产品,如移动电话、无线数据传输业务、远程测量等,应用范围十分广泛。
2.1 SIM300模块简介
该设计中的GPRS采用SIM300通讯模块,此模块是一款体积小巧、即插即用、可工作于三个频段的GSM模块,它集成了电源电路、SIM卡电路、串口TTL/RS232电平转换电路;而且可以小尺寸和低功耗实现语音、SMS、数据和传真信息的高速传输;集成了PAP协议,可供PPP连接使用;内备强大的TCP/IP协议栈,可以直接利用它实现无线上网;支持包交换广播控制信道,无限制的辅助服务数据支持,使用起来方便,且可以大大缩短开发周期[11]。
此外,SIM300模块可与任何带有UART串行通信接口的控制器进行通信。
GPRS鉴于其优良性能,已成为多种无线应用的理想之选,可被应用到无线公话等WLL应用,车载应用、远程抄表、安全监测、遥控遥测等M2M应用,以及手持通讯设备,无线网络终端等应用领域。
还可以通过HyperTerminal(超级终端)对其提供的AT指令进行交互操作。
SIM300模块的主要参数如下:
使用9V单电源供电,可工作于EGSM900M,DCS1800M,PCS1900M三个频段,上行速率为85.6kbps,下行速率为42.8kbps,通过标准的UART接口进行通信,通信速率可设置为2.4kbps,4.8kbps,9.6kbps,14.4kbps等。
2.2 SIM300模块的接口及功能
SIM300模块既可与单片机通过UART串行接口进行通讯,也可与PC机通过RS232相连进行通讯,但在选择与单片机还是PC机进行通讯前,需提前配置好SIM卡座旁的配置跳线。
其主要接口如下:
(1)IM300模块和单片机的连接
SIM300模块左侧的J4是其和单片机的接口,接口定义如表2-1所示。
表2-1SIM300的接口定义
PinNo.
功能
1
SIM300模块的电源输入,一般为9V
2
备选复位信号输入
3
备选复位信号输入
4
备选复位信号输入
5
备选复位信号输入
6
MICIN语音输入
7
SPKOUT语音输出
8
串行数据接口RXD
9
串行数据发送口TXD
10
GND
其中Pin2~Pin5均可以作为SIM300模块的复位信号输入,且可以通过在背面焊接选择电阻来选择一脚作为SIM300的复位信号输入口,此处选择的是Pin5引脚。
Pin8和Pin9可以直接和单片机UART接口的Rx和Tx相连,系统中采用的是凌阳SPCE061A单片机,其Rx和Tx引脚分别和IOB7和IOB10共用。
Pin6和Pin7引脚分别为语音输入和输出引脚。
在使用单片机控制SIM300模块时,需配置好相应的跳线,且使单片机的UART接口的TXD(IOB10)和RXD(IOB7)分别与SIM300的RXD和TXD短接,以便使单片机和SIM300通信。
(2)SIM300模块和PC机的连接
SIM300模块提供了一个九针的标准RS232接口用以和PC机直接通信,在配置好跳线后,使PC机的TXD和RXD分别与SIM300的RXD和TXD短接,以便使PC机和SIM300通信。
此外,在模块的左下角有一个天线接口,将SIM300模块与单片机或PC机连接完毕后,还需将天线接至接口上,并且将SIM卡安装至SIM卡座内。
在通信前,SIM300模块需要先启动才可以通过串口发送AT指令来控制数据收发,启动可以分为软件启动和手动启动两种方式。
本设计中采用手动方式启动,按下ON/OFF按键大约两秒钟之后松开,可看到显示灯闪烁,模块即被启动。
单片机与GPRS模块的通讯原理
本文研究的核心内容是单片机与GPRS模块的通信问题,解决此问题的主要途径是,单片机通过UART串口向GPRS模块发送AT指令以控制通讯模块的数据收发。
AT指令是设置GPRS模块参数,并对其进行操作的指令集,每条AT指令执行完毕后,GPRS模块都会返回应答信号以示命令发送成功或失败。
单片机UART串行接口的控制及原理
在SPCE061A单片机中,异步传送是通过一个通用异步收发器UART实现的,UART提供了一个全双工标准接口,用于完成单片机与外设之间的串行通信。
借助于IOB口的特殊功能和UARTIRQ7中断,可以同时完成UART接口接收和发送数据的过程。
此外,UART还可以缓冲地接收数据,即可以在读取缓存器内的数据之前接收新的数据。
P_UART_Data(7023H)单元用做接收和发送数据的缓存,向该单元写入数据,可以将要发送的数据送入缓存器;从该单元读取数据可以将接收到的数据从缓存器读出。
使用UART模块进行通信时,须事先将引脚IOB7和IOB10分别设置为输入和输出状态。
然后通过设置P_UART_BaudScalarLow(7024H)和P_UART_BaudScalarHigh(7025H)单元来指定所需波特率。
同时,再设置P_UART_Command1(7021H)单元的第6、7位以激活UARTIRQ7中断,并决定中断是由TxRDY还是RxRDY信号触发,或者由二者共同触发。
而设置P_UART_Command2(7022H)单元的第6、7位可以激活UART的Tx、Rx引脚功能。
当单片机通过串口接收或发送一个字节数据时,P_UART_Command2(7022H)单元的第6、7位被置“1”,且同时触发UARTIRQ7中断。
无论UARTIRQ7中断是否被激活,UART的接收/发送功能都可以由P_UART_Command2(7022H)单元的第6、7位控制。
在任意时刻读取P_UART_Command2(7022H)单元的内容都将自动清除UARTIRQ7中断标志。
以下将分别介绍各控制单元的意义及功能。
(1)P_UART_Command1(写)(7021H)
P_UART_Command1单元为UART控制端口,如表2-2所示。
该单元的第2、3位控制数据的奇偶校验功能;第6、7位控制UARTIRQ7中断,若第6位为“1”,则中断由TxRDY信号触发,即数据发送完毕将产生UARTIRQ7中断,若第7位为“1”,则中断由RxRDY信号触发,即数据接收完毕将产生UARTIRQ7中断。
如果该单元的第5位为“1”,则所有UART控制寄存器、状态寄存器将恢复为系统默认值00H。
表2-2P_UART_Command1单元
b7
b6
b5
b4
b3
b2
b1
b0
RxlntEn
TxlntEn
I_Reset
—
Parity
P_Check
—
—
(2)P_UART_Command2(写)(7022H)
该单元写入时可以控制UART数据的发送/接收端口,第6、7位分别控制着数据发送和接收引脚的允通/禁止,如表2-3所示。
表2-3UART写入设置
b7
b6
b5
b4
b3
b2
b1
b0
RxPinEn
TxPinEn
—
—
—
—
—
—
1:
允通接收引脚
0:
禁止接收引脚
1:
允通发送引脚
0:
禁止发送引脚
—
—
—
—
—
—
此时IOB7和IOB10必须分别被设置为输入和输出引脚,分别作为Rx和Tx。
当发送引脚被允通时,IOB10输出引脚将自动被置为高电平。
(3)P_UART_Command2(读)(7022H)
P_UART_Command2单元为UART状态信息,如表2-4所示。
第7位是RxRDY标志位,当接收到数据时,该标志位被置“1”,读P_UART_Data单元将清除该标志位;第6位是TxRDY标志位,当通过写入本单元第6位为“1”来允通发送引脚后,该标志位被置为“1”,表示发送器的数据缓存器为空,已准备好可以发送写入P_UART_Data单元的数据。
向P_UART_Data单元写入数据可以清除TxRDY标志位。
P_UART_Command2单元的第3~5位是传输错误标志位,如果在传输过程中发生错误,相应位将被置成“1”,读P_UART_Data单元的数据将清除错误标志位。
表2-4UART读出设置
b7
b6
b5
b4
b3
b2
b1
b0
RxRDY
TxRDY
FE
OE
PE
—
—
—
1:
数据已接收完毕
0:
未接收到数据
1:
数据发送已准备好
0:
数据发送未准备好
1:
存在帧错误
0:
无帧错误
1:
存在溢出错误
0:
无溢出错误
1:
存在奇偶校验错误
0:
无奇偶校验错误
—
—
—
(4)P_UART_Data(读/写)(7023H)见表2-5。
表2-5P_UART_Data单元
b7
b6
b5
b4
b3
b2
b1
b0
数据
(5)P_UART_BaudScalarLow(读/写)(7024H)和P_UART_BaudScalarHigh(读/写)(7025H)
此两单元组合控制数据的传输速率(波特率),如表2-6所示。
表2-6常用波特率值
波特率(b/s)
高字节
低字节
波特率(b/s)
高字节
低字节
2400
14H
00H
9600
05H
00H
4800
0AH
00H
115200
00H
6BH
(6)异步通信的字符格式
在异步传送方式中,字符的发送是随机进行的,所以,对接收方来讲,就要判断是否有字符发送过来,何时是一个新字符的开始。
因此,进行异步通信时必须对传送的字符规定一定的格式,1个字符的传送占用1帧数据,1帧数据一般由4部分组成:
起始位、数据位、奇偶校验位和停止位,如表2-7所示。
表2-7异步通信字符格式
起始位
数据位
奇偶校验位
停止位
1位
5~8位
1位
1~2位
起始位:
为逻辑“0”信号,占1位,用来通知数据设备1个新字符的开始。
数据位:
紧跟在起始位后的是5~8位数据,异步传送通常规定低位在前,高位在后。
奇偶校验位:
紧跟在数据最后一位之后,占1位,奇偶校验时根据协议置“1”或置“0”。
停止位:
为逻辑“1”信号,可占用1或2位,接收到停止位时,表示1帧数据结束,同时为接收下一帧数据做好准备。
异步通信时,收发双方需达成协议:
一是规定字符格式,即采用几位数据,是否用奇偶校验位,有几位是停止位;二是规定波特率。
异步通信按字节格式和波特率传送数据,硬件只有两条线:
即发送线和接收线,因而电路简单、实现方便。
但由于数据帧中插入了起始位,校验位和停止位等附加位以实现同步,从而降低了有效数据的传送效率。
AT指令集简介
GPRS模块与单片机的通信主要是通过UART串口发送AT指令来实现。
AT指令是专门用来控制GPRS模块的指令集,SIM300模块支持标准的AT指令集。
GPRS的数据传输有短信模式和数据模式,本文设计的系统主要以数据模式为主,短信模式为辅,采用不同的模式将用到不同的AT指令,常用的AT指令如表2-8所示。
表2-8常用AT指令
AT指令
指令功能
ATE1\r\n
开回显
ATV1\r\n
以OK方式显示
AT+IPR=9600\r\n
设置通信的波特率为9600Hz
AT+CMGF=1\r\n
以英文方式发送
AT+CMGF=0\r\n
以中文方式发送
AT+CMGS=””
将信息发送到手机号为“”的手机上
AT+CNMI=2,1\r\n
设置短信提示
AT+CMGR=1\r\n
读取指定1里的内容
AT+CGDCONT=1,”IP”,”CMNET”\r\n
定义PDP移动场景
AT+CGATT=1\r\n
激活PDP,获得IP地址
AT+CIPCSGP=1,”CMNET”\r\n
设置模块连接方式为GPRS连接,接入点为”CMNET”
AT+CIPSTART=”TCP”,”124.79.108.80”,
”6000”\r\n
建立连接,SERVER的IP地址为124.79.108.80,端口号为6000
AT+SEND>(要发送的内容)
发送数据
AT+CIPCLOSE\r\n
关闭TCP连接
AT+CIPSHUT\r\n
关闭移动场景
以上指令在发送成功后将返回OK,若发送不成功则返回ERROR。
GPRS以短信模式传输数据的原理
采用短信模式传输数据的无线数据传输系统,就是将监控终端采集到的信息,经前端放大滤波电路及单片机处理后,形成实时数据帧,由内置手机SIM卡的通信模块通过短信网或GPRS无线数据通道,以无线方式发送至监控中心的短信网关或数据服务器,并下载到控制电脑的显示平台,实现数据统计、操作控制等远端遥调、遥测、遥控功能[12]。
短信模式的传输机制如图2-1所示。
图2-1短信组网结构图
监控终端将采集到的信息经过短信协议封装,与SIM卡号、监控中心号、短信服务中心(SMSC)号一起通过GSM/CDMA模块发给SMSC,SMSC根据监控中心号码通过短信点对点协议(SMPP)发给相应的短信网关(SMG),SMG在通过SGIP1.2/CMPP3.0协议把信息发送到通信服务器,最后下载到监控中心的显示平台,实现数据监测。
而当监控中心发送命令帧到监控终端时,通信服务器发送短信至SMG,SMG根据接收到的监控终端SIM卡号码将短信发给SMSC,SMSC再发给监控终端,继而实现远程监控。
GPRS以数据模式传输数据的原理
所谓数据模式即采用TCP/IP协议的方式进行监控终端与监控中心的通信,具体通讯过程如下:
监控终端将采集到的信息通过RS232接口与GPRS数据传输单元(GPRSDTU)相连,GPRSDTU的内置嵌入式处理器对数据进行集中处理、协议封装后转换为GPRS分组,通过BTS发送到GPRS服务支持节点(SGSN),SGSN根据监控中心IP地址,通过GPRS隧道协议(GTP)发送分组到相应的GPRS网关支持节点(CGSN),CGSN对分组数据进行处理后发送到Internet上的通信服务器并下载到监控中心的显示控制平台[12]。
来自监控中心的命令帧,首先被分装成IP包,由GGSN接收,再通过GTP转发到SGSN,最后由BTS传送到监控终端。
数据模式的传输机制如图2-2所示
图2-2GPRS组网结构图
本章小结
本章主要研究了GPRS(SIM300)模块的接口功能,与单片机通信的基本原理,UART串口各控制单元的意义,以及通信中常用的AT指令及其功能,以短信模式和数据模式传输数据的原理,为后续的软硬件设计打好理论基础。
第3章 数据采集传输系统的硬件电路设计
本文的主要任务分为硬件和软件两部分,本章主要研究硬件电路的设计,包括监控终端的放大滤波电路,单片机与GPRS模块以及LCD液晶显示模块的连接等。
系统的总体框图及其工作原理
基于GPRS的无线数据采集与传输系统由监控终端和监控中心两部分组成。
系统的总体框图如图3-1所示。
图3-1系统基本框图
监控终端由数据采集设备、LCD液晶显示和GPRS数据传输单元三部分组成,数据采集设备负责现场数据的采集,然后由LCD液晶显示并由GPRS数据传输单元通过GPRS网络传输到监控中心。
系统前端的多路传感器可以是温度传感器或湿度传感器等,在系统的实现过程中,由于条件所限,通过传感器采集的信号由信号源代替。
系统的工作过程为,数据采集端接收来自监控中心的命令帧,根据命令帧中的地址来选通相应的信号输入,随后将信号进行放大、滤波,以使其质量得到改善。
经放大、滤波的信号再输入到单片机中进行A/D转换后,一方面单片机控制LCD液晶显示器,将采集到的信号波形显示出来,另一方面,单片机通过UART串口向GPRS无线收发模块发送AT指令控制其将数据发送到监控中心,监控中心将接收到的数据显示并加以分析,以便及时了解远程监测点的现场状况,做出相应调整。
以上即为系统的整体工作流程。
3.2 系统前端放大滤波电路的设计
本系统所要监测的数据主要通过各类传感器(如温度传感器、湿度传感器等)来采集,采集到的信号由于带有干扰噪声,传输到监控中心后将与实际相差很大,另外信号的强度过小也会产生误差,因此信号采集后需要通过一定的放大滤波电路加以调整,以使监控中心接收到比较准确的数据。
本文主要采用双运放双电源的低通滤波电路来实现信号的调理,如图3-2所示。
图3-2双运放双电源的低通滤波电路
本电路采用的是MC4558运算放大器,该放大器适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式。
它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合[13]。
该电路可分为两部分,其中前一部分为反相比例运算放大电路,放大倍数可用R1/R2来计算,而且可以通过改变R1和R2的阻值来适当调整放大倍数,以使信号的幅值适合A/D转换的范围;后一部分为一阶有源低通滤波电路,其功能是滤除信号中的噪声。
截止频率可通过
)来计算,同样,调整R、C的值可以改变截止频率。
采集的信号通过此电路后送入A/D转换电路进行模数转换,该电路与A/D转换电路的连接部分可通过电解电容耦合,前一端接正极,一般为1~10uf。
3.3 SPCE061A单片机的接口说明
本设计中采用的是凌阳SPCE061A单片机,它具备了现代单片机的大部分优点。
SPCE061A主要包括输入/输出端口、定时器/计数器、数模和模数转换、串行设备输入输出、通用异步串行接口和复位等部分。
其主要接口的定义如表3-1所示。
表3-1SPCE061A的主要引脚描述表
IOA[15:
0
双向I/O口,可设置为输入或输出
IOA[6:
]
可与ADCLine_In输入共享
IOB[15:
0]
双向I/O口,可设置为输入或输出
IOB7
可用作通用异步串行数据接收引脚Rx
IOB10
可用作通用异步串行数据发送引脚Tx
3.4 GPRS模块与单片机的连接说明
本文研究的核心部分是单片机与GPRS模块的串口通讯,模块的硬件连接框图如图3-3所示。
由图可以看出,单片机与GPRS的接口非常简单,几乎不需要任何附加硬件逻辑电路,二者的主要连线为将单片机的IOB7和IOB10分别于与GPRS模块的Tx和Rx相连,此外注意将两模块的地线短接,两模块的供电电源分别为4.5V和9V。
图3-3SPCE061A单片机与GPRS模块的连接框图
3.5 LCD液晶显示模块的接口电路及参数
本设计中的液晶显示器选用凌阳科技的SPLC501芯片作为LCD驱动和控制器,为128
64点阵图形液晶显示器。
基本参数有显示模式、显示格式、输入数据等。
此模块可以方便的和SPCE061A单片机连接,可进行字符显示,汉字显示及图形显示,因此可应用于需要图形、文本显示的系统中。
本设计中,液晶显示器主要用于显示采集到的信号波形,所以SPLC501液晶模组是非常合适的选择。
SPLC501液晶模块提供了液晶显示器的接口,及其所需的复位电路等,并把对液晶模块的接口引出,方便使用,此外还提供有背光、电源指示灯。
下面将详细介绍SPLC501液晶模块接口电路及参数,其中接口电路原理图如图3-4所示,各个引脚的定义如表3-2所示。
图3-4SPLC501液晶模块接口电路原理图
表3-2SPLC501液晶模块接口引脚定义表
接口引脚名
说明
CS1
片选端,低电平有效
RES
复位引脚
A0
数据命令选择引脚
R/W
6800系列MPU的读/写信号
EP
6800系列MPU的时钟信号使能引脚
DB0~DB7
8位数据总线
VR
端口输出电压
C86
C86=’H’则选择6800MPU系列
PS
串、并行时序选择
本文中SPLC501液晶显示模块与61板的连接如图3-5所示。
液晶模块的电源由61板提供,模块上的VR、C86、PS跳线短接到V3端以选择6800的时序;61板I/O端口电平选择3.3V输出(即J5跳线把Vio和3V短接起来);DB0~DB7对应的与IOA8~IOA15连接,控制线CS1、AO、R/W和EP分别与61板的IOB9、IOB4、IOB5、IOB6相连。
图3-5SPLC501液晶显示模块与61板的连接
数据采集与传输系统的实物图如图3-6所示,总电路图如附录5所示。
图3-6数据采集传输系统实物图
3.6 本章小结
本章主要研究了无线数据采集与传输系统中的SPCE061A单片机控制模块、SPLC501液晶显示模块和GPRS无线收发模块三个主要模块的接口原理及连接方式。
第4章 数据采集传输系统的软件设计
对于一个完整的应用系统,系统的程序设计也是一个非常重要的方面,本文在硬件连接完成的基础上将进行软件的设计。
软件设计包括驱动程序设计和应用程序设计两部分,由于凌阳单片机以及LCD液晶显示器中已给出基本驱动程序,所以主要任务是编写应用程序。
系统应用程序的主要功能是完成远程数据的采集与传输,采用模块化编程,各功能模块以子函数的形式编写,在主函数中直接调用各子函数,此方法的好处是缩短了软件开发周期,易于程序的修改和移植。
此外,监控终端的所有程序代码都由C语言编写,软件开发平台是unSPIDE2.0.0,监控中心的程序编写语言使用C++,软件开发平台是VisualC++6.0。
软件开发总体流程图
系统软件的设计主要分为三部分:
单片机与GPRS模块的串行通信、LCD液晶显示和GPRS模块通过GPRS网络与监控中心通信。
软件主要实现的功能包括系统的初始化(微处理器的初始化、A/D转换的初始化、LCD液晶显示器的初始化以及CPRS无线收发模块的初始化)和系统的应用程序等。
无线数据采集传输系统的数据传输方式有短信模式和数据模式两种,而前者又包含三种模式:
Block模式、Text模式和PDU(ProtocolDataUnit协议数据单元)模式,其中Block模式已逐渐被PDU模式所取代[14]。
虽然基于短信模式和数据模式的数据传输方式和过程不同,但软件设计中,只是使用的AT指令有所区别,主函数总体流程仍然相同,系统监控终端的主函数流程如图4-1所示。
系统各单元的详细流程
由系统的总体流程可知,监控终端的软件程序主要包括四个子函数:
接收命令帧子函数Rec_commd(),A/D转换子函数AD_Ctrl(),LCD液晶显示子函数LCD_Ctrl()以及发送数据帧子函数Data_Send()。
本小节将分别详细介绍各函数的流程。
图4-1系统软件流程图
4. A/D转换的流程图及说明
系统中,A/D模数转换功能采用中断函数的方式实现,输入的测试信号频率为0.5Khz,由采样定理
=2
可知当采样频率为1Khz,即可还原出原信号波形。
本文采样频率选为32Khz,液晶显示器显示出与实际波形误差较小的信号波形。
A/D转换采用