金笛工业手机论坛  

返回   金笛工业手机论坛 > 开发者乐园 > 短信开发资料

短信开发资料 短信开发技巧,代码分析

回复
 
LinkBack 主题工具 显示模式
旧 2012-09-04   #1 (permalink)
普通会员
 
hek320 的头像
 
注册日期: 2012-01-12
帖子: 50
hek320 正向着好的方向发展
默认 基于GPRS的远程无线遥控报警系统

1、概述
随着无线通信技术的发展,利用移动运营商提供的无线网络实现远程监控和数据传输已被广泛应用于各个领域。通用分组无线业务(General Packet Ra—dio Service— GPRS)是在现有GSM系统上发展出来的一种分组数据承载业务,GPRS网络具有以下优点:① 实时在线,接入速度快 ② 传输速率高,理论值最高可达171.2Kbit/s ③计费合理,以流量计费 ④ 快捷登录,GPRS用户开机后,就始终附着在GPRS网络上,每次使用时只需一个1—3秒的激活过程。因此,GPS车载终端、自动抄表系统等远程遥测遥控系统利用GPRS实现数据传输将成为今后发展的一种趋势。本文以AT89S52单片机与 BENQ的M23A无线通信模块为例具体介绍实现利用GPRS数据传输功能来实现远程遥控报警。
2 、GPRS 数据传输的协议分析和实现
GPRS 无线数据传输终端利用GPRS 网络实现与位机的全双工数据通信。终端需附着GPRS 网络, 登Internet 与连接其上的任意一台普通PC 机建立数链路并随时进行数据传输。欲完成这一过程必须实GPRS 的附着和PDP(Packet Data Protocol,分组数据议) 上下文的激活。通过GPRS 的附着登记用户信对用户进行移动性管理; 激活过程用于激活IP 协, IP ,GGSN(Gateway GPRS Support Node, 网关GPRS 节点)建立一条逻辑通路, 进行数据传输。分组数据协议的激活涉及到网络的多个协议, 如PPP 协议、LCP (Link Control Protocol, 链路控制协议)、NCP(Network Control Protocol, 网络控制协议)、PAP(Password Authentication Protocol,密码认证协议) 和IPCP(Internet Protocol Control Protocol, Internet 协议控制协议)等。
2.1 协议实现过程
系统设计的主要思路是单片机通过发送AT 指令控制GPRS 模块建立无线信道、完成数据传输。用AT指令实现以上协议并完成数传的步骤如下:
① 设置接入网关: AT+CGDCONT=1,“IP”,“CMNET”
②GPRS 网络附着: AT+CGATT=1
③激活GPRS 模式: AT#GPRSMODE=1
④ 设置网络接入点名称: AT#APNSERV=“CMNET”
⑤请求网络连接: AT#CONNECTIONSTART
⑥设置上位机的IP 地址: AT#TCPSERV=“192.168.***.***”
⑦设置上位机侦听的端口准备与客户端通信: AT#TCPPORT=“6800”
⑧打开与上位机的连接: AT#OTCP
⑨断开网络连接: AT#CONNECTIONSTOP
⑩取消GPRS 附着: AT+CGATT=0
在完成GPRS 数传过程中, 以上AT 命令均必须设置, 但相邻AT 命令间要有一定延时, 经验证约3 秒钟即可。
2.2 通信的数据报文格式
单片机以一定的协议向模块发送AT指令,接收模块执行指令后的返回值,并进行相应校验。单片机串口实质上是以位为单位完成收发,由协议预定义的起始位、校验位、停止位决定数据帧的封装格式。
在实际的工程应用中,远端发来的控制数据信息和终端返回的数据信息一般很少(十几个字节以内),属于少量数据频繁传输的类型。考虑到通信控制器应用程序容量和运行速度的限制,本着简单高效的系统设计原则选取采用节约资源、简单、高效的UDP协议作为该系统的数据传输协议。其可靠性可以通过信息终端和监控中心应用软件之间可靠的握手和丢失重传等机制予以弥补,从而保证系统可靠、有效、稳定的工作。
终端发送的数据报文可参考如下报文格式。其中终端主动发送的数据报文和应答数据报文采用相同的报文格式。
0 1 2 3 4 5 6 7 8 9 10
起始位 地址 功能 时间信息 CRC校验 结束位
3 系统硬件设计
在本系统中,单片机89S52串口利用MAX232完成TTL/CMOS电平转换后与GPRS模块相连接,实现模块初始化和数据收发。通过单片机接口来驱动外围的报警电路,实现报警功能。

本终端的微控制器选用AT89S52。它的主要性能有:与MCS-51单片机产品兼容;8K字节在系统可编程Flash存储器;1000次擦写周期;三级加密程序存储器;32个可编程I/O口线;三个16位定时器/计数器;八个中断源;全双工UART串行通道;低功耗空闲和掉电模式;掉电后中断可唤醒看门狗定时器;双数据指针掉电标识符。
4 数传终端的软件实现
系统软件设计的核心部分是单片机与GPRS模块的通信。一方面,用单片机控制GPRS模块收发数据信息;另一方面,对数据进行相应动作,完成对终端各遥控设备的控制,即报警功能。
4.1 AT 指令调试
所有AT指令的指令符号、常数、PDU数据包等都是以ASCII编码形式传送的,比如“A”的ASCII编码为41H,“T”的ASC编码为54H,数字“0”的ASCII编码为30H等。
单片机向手机发送每一条指令后,必须以回车符作为该条指令的结束,回车的ASCII编码为0DH。例如,单片机向手机发送“AT+CMGF=0”这条指令,其ASCII编码序列为“41H、54H、2BH、42H、4DH、47H、46H、3DH、30H、0DH”,最后一个字节0DH就是回车符,表示该条指令结束,如果没有这个回车符,手机将不识别这条指令。
相关AT指令介绍:
1) 波特率的设置 指令:AT+IPR=?
测试波特率的类型,返回所有波特率的相应参数。
在Windows自带的超级终端中利用AT+IPR=“波特率”指令设置无线通信模块的波特率,并通过命令后加“;&W”将所设值存储在模块EEPROM 中。掉电后不会丢失(如:AT+IPR=“115200”)系统设计过程中通信的不畅通通常是由于波特率不匹配造成。
2)相关的AT命令可查找M23A的AT命令集。
4.2 程序设计
4.2.1 初始化
单片机初始化部分将AT89S51串口设置为工作方式1。即8位数据位和1位停止位;定时器选用定时器1的工作方式2即8位自动重装定时器、波特率设为9600B(晶振频率为11.059MHZ),所以定时器1初值分别为TH1=0xFD.TL1=0xFD。初始化时先将串口中断关闭.在与上位机建立连接后再打开。为了有效控制每条AT指令、提高CPU利用率需将AT指令缓存区设置为指针数组形式。在建立连接时通过循环调用字符串发送函数将这些AT命令发送,相邻AT命令间要有2到3秒的延时。所以每发送完一条AT命令都要调用一个3秒的延时子程序。然后通过串口中断接收函数接收AT命令返回值来判断连接是否成功。需要注意的是AT命令均以回车符作为结束标志,并以字符串形式传送。因此在定义AT命令缓存区时一定要注意转义字符的使用。
4.2.2 数据传输
在与上位机连接成功后,通过字符串发送函数发送数据缓存区中的数据.数据缓存区仍需设置为指针数组形式,发送数据的原理与建立连接时的基本相同,但数据的接收是通过串口中断接收函数完成的,同时将接收到的数据必须先放人接收缓存区以便作做显示处理。发送与接收中断函数如下:
//unsigned char TxRxBuf[];//数据暂存区
//char *pUART; //字符串数据指针
//unsigned char uRxUART; //收发数据的公共缓冲区
//SBUF为AT89S52自带的串口接收缓冲区(大小为一个字节)
void UART_INT(void) interrupt 4
{ if (RI) //接收允许,串口接收数据并送至公共缓冲区
{
uRxUART = SBUF; //将收到的字符传递给公共缓冲区
TxRxBuf[] = uRxUART;
SBUF = uRxUART;
uRxUART = '\0';
pUART=&uRxUART;
RI = 0; //清除中断标志,便于下次接收
else //发送允许
{
TI=0; //发送中断标志位(SCON)
if (*pUART != '\0')
{ //数据先传递给字符串指针
SBUF = *pUART;
*pUART = '\0';
pUART++; //然后通过循环送到串口上发送出去
}
else pUART=0; //不会启动下一次发送
}}

4.3 遥控报警

传感器可利用热释电红外传感器或振动传感器。热释电红外传感器通过检测 或动物发射的红外线而输出电信号,作用角度为110°。可使用BISS001型红外成品组件,作用距离通过菲聂尔透镜调节。或用ND-2全向振动传感控制电路。 ND-2采用特别设计的低功耗检测控制芯片,静态耗电小于1UA,是目前振动传感器中耗电最小的器件。为了方便使用,采用引线方式。 ND-2采用集电极开路输出方式,其内部三极管的控制电流不小于10mA。受内部定时器的控制,每检测出一次振动信号,三极管导通5秒.负载得电工作。ND-2的技术参数。 当ND-2受到振动时,LED会点亮5秒,之后熄灭,再次振动则继续点亮,如果外接一只PNP三极管,则可带动继电器,报警器等功率较大的负载。

当用户收到报警信息后,如需采取措施,可以向GPRS模块拨号。单片机收到信号后,发出ATH指令将拨号挂断,然后向P1.1口发出控制信号。控制信号通过运放放大后,继电器将切断外电器的电源。从而保证其安全。

5、结论
经实验验证,采用基于GPRS的通信方式实现远程遥控报警,不仅可以提高报警系统的通信可靠程度,而且通信距离基本不受限制。并通过以上单片机的软硬件设计,可以实时的发送和接收数据。文中所提供的代码都通过了实际调试验证,此方案稍做修改便可移植到许多工业控遥控、监测领域,门禁安防系统等应用工程中。
hek320 当前离线   回复时引用此帖
回复

书签


当前查看此主题的会员: 2 (0 位会员和 2 位游客)
 

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为北京时间。现在的时间是 05:53


Powered by vBulletin® 版本 3.8.3
版权所有 ©2000 - 2024,Jelsoft Enterprises Ltd.