GPS\GSM模块的设计与开发

一、无线遥控模块总体的功能分析及体系结构设计
1.1无线遥控模块总体分析
本系统由STC89C52单片机电路+GPS模块电路+GSM模块SIM800A+指示灯电路+电源电路组成。
1、系统上电后,系统向特定手机号码发送短信,短信内容为系统的当前经纬度信息。40s左右发一次。
2、如果需要立刻发送经纬度信息,直接按板载按键即可立刻发送经纬度数据,不用等待40s。
3、短信发送及初始化有状态指示灯指示。
4、GSM模块是SIM800A,该模块和SIM900A电路程序完全兼容外观外形一模一样。

二、无线遥控模块软件设计
2.1 程序流程图
本无线遥控模块设计主要采用Keil uVision4软件编写与调试程序,程序语言采取易读性和移植性更高的C语言编写。分析本系统,在本模块需要实现的功能如下:
1.当摁下按键时,GSM立即将当前的定位数据发送到手机上。
2.当未摁下按键时,每到设定的间隔即向手机发送当前的定位数据。
根据功能,设计无线遥控模块运行流程图如图6-1所示。
在这里插入图片描述
系统运行流程图
2.2 控制程序的编写
2.2.1 控制程序的功能分析
根据流程图分析,系统的主程序需实现的功能有:
1.初始化定时器,实现间隔一定时间读取GPS数据和发送短信的功能。
2.初始化串口,实现GSM与单片机的通信。
3.初始化GSM模块,并设置GSM模块的工作模式。
4.调用GPS信息处理程序
5.初始化整个系统,包括LED和按键的设置。
2.2.2 控制程序的实现
1.按照51单片机的要求编写定时器初始化函数及定时器中断程序。定时器设定为两秒。
为实现间隔一定时间读取GPS数据的功能,设定全局变量dealGpsMes。在定时器中断程序中定义为True,主程序判断为真后将dealGpsMes修改为False,并调用GPS数据处理函数。
为实现40s发送一次短信的功能,设置全局变量reportTime。每两秒reportTime+1,当判断reportTime=20,即四十秒时,调用GSM程序,发送短信。
2.按照串口通信时序图编写串口初始化程序,设定为SCON模式1, 8-bit数据传输,设定自动重装。波特率设定为9600。
3.初始化LED和按键。将LED设置为熄灭,将按键设置为高电平。
2.3 串口通信程序的编写
2.3.1 串口通信原理
串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口通信指串口按位发送和接收字节,串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。
2.3.2 串口通信程序
根据串口通信协议将串口初始化,设定为SCON模式1, 8-bit数据传输,设定自动重装。波特率设定为9600,打开串口中断。
在本设计中,因为传输数据很短,没有使用校验位进行校验,而是通过判断数据的长度来判断每个数据是否发送完,检测到长度为八位则发送则指针加一,发送下一个数据,以此来保证数据的准确性。
通过判断TI来判断数据是否发送完成,如未完成则进行延时。
当数据接收完以后,通过判断RI进入串行中断程序,将接受到的GPS数据进行储存和处理。
串口通信初始化程序和写数据程序如下,具体程序见附录一:
void UART_Init(void)
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
EA = 1;
ES = 1;
}

void uartSendByte(unsigned char dat)
{
unsigned char time_out;
time_out=0x00;
SBUF = dat;
while((!TI)&&(time_out<100))
{time_out++;DelayUs2x(10);}
TI = 0;
}
2.4 GSM模块的程序编写
SIM800A是一款四频GSM/GPRS模块,为城堡孔封装。其性能稳定,外观小巧,性价比高,能满足客户的多种需求。SIM800A工作频率为GSM/GPRS850/900/1800/1900MHz,可以低功耗实现语音、SMS和数据信息的传输。SIM800C尺寸为17.615.72.3mm,能适用于各种紧凑型产品设计需求。在本设计中使用到的功能包括:GSM短信收发,GPRS数据传输,TCP/IP协议数据传输,LBS信息的定位,http的java接口调用,FTP的无线升级,模块BT的串口协议传输。
2.4.1 SIM800A软件特性
•0710 MUX 协议
•嵌入型TCP/UDP协议
•FTP/HTTP
•彩信
•电子邮件
•DTMF检测
•干扰检测
•录音
•SSL
•蓝牙3.0(可选)
2.4.2 SIM800A模块的通信协议
短信接收发功能指令:
“AT+CMGF=1\r” //配置短信形式
“AT+CMGL=\”ALL\”\r” //读取所有短信
“AT+CSCS=\”GSM\”\r” //进行CSCS设置
“AT+CMGS=” //后面添加信息中心短信号码
“AT+CMGD=” //进行短信删除
在本程序中,使用“AT+CMGF=1\r”指令将短信配置为文本格式;使用“AT+CSCS=\”GSM\”\r”指令将CSCS设置为GSM模式;使用“AT+CMGS=”指令设置接收短信的手机号码。
通过串口通信,将经纬度信息数组依次传输到GSM模块发送,当接收到0x1a时,则判断该条短信结束。
2.4.3 程序的编写
根据SIM800A模块的时序图,编写GSM模块的程序如下:
uartSendStr(“aAT+CMGF=1\r\n”,12);
for(i=0;i<7;i++)
{DelayMs(100);}
uartSendStr(“AT+CSCS=“GSM”\r\n”,15);
for(i=0;i<7;i++)
{DelayMs(100);}
uartSendStr(“AT+CMGF=1\r\n”,11);
for(i=0;i<5;i++)
{DelayMs(100);}
uartSendStr(“AT+CSCS=“GSM”\r\n”,15); //ÉèÖÃ
for(i=0;i<5;i++)
{DelayMs(100);}
uartSendStr(“AT+CMGS=”+8618105140357"\r\n",26);
for(i=0;i<3;i++)
{DelayMs(100);}
uartSendStr(Lin0_No,13)
uartSendStr(Lin1_Ea,12);
for(i=0;i<2;i++)
{DelayMs(100);}
uartSendByte(0x1a);
for(i=0;i<40;i++)
{DelayMs(100);}
2.5 GPS模块的程序编写
GPS数据遵循NMEA-0183协议,该数据标准是由NMEA(National Marine Electronics Association,美国国家海事电子协会)于1983年制定的。统一标准格式NMEA-0183输出采用ASCII 码,其串行通信的参数为:波特率=4800bps,数据位=8bit,开始位=1bit,停止位=1bit,无奇偶校验。
数据传输以“语句”的方式进行,每个语句均以“ ” 开 头 , 然 后 是 两 个 字 母 的 “ 识 别 符 ” 和 三 个 字 母 的 “ 语 句 名 ” , 接 着 就 是 以 逗 号 分 割 的 数 据 体 , 语 句 末 尾 为 校 验 和 , 整 条 语 句 以 回 车 换 行 符 结 束 。 N M E A − 0183 的 数 据 信 息 有 十 几 种 , 这 些 信 息 的 作 用 分 别 是 : ”开头,然后是两个字母的“识别符”和三个字母的“语句名”,接着就是以逗号分割的数据体,语句末尾为校验和,整条语句以回车换行符结束。 NMEA-0183的数据信息有十几种,这些信息的作用分别是: NMEA0183GPGGA:输出GPS的定位信息; G P G L L : 输 出 大 地 坐 标 信 息 ; GPGLL:输出大地坐标信息; GPGLLGPZDA:输出UTC时间信息; G P G S V : 输 出 可 见 的 卫 星 信 息 ; GPGSV:输出可见的卫星信息; GPGSVGPGST:输出定位标准差信息; G P G S A : 输 出 卫 星 D O P 值 信 息 ; GPGSA:输出卫星DOP值信息; GPGSADOPGPALM:输出卫星星历信息; G P R

  • 7
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值