- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于GPS,GPRS远程监控系统的实现
????下面简单画画整个系统的框图:
?
从框图中可以清楚的看到整个系统的工作流程是非常简单的,被监测端采用的是Cortex-M3内核的stm32微控制器,GPS负责接收卫星信号,然后根据计算得到地标信息通过串口传送给stm32,stm32接收GPS数据进行相应的打包处理再通过串口发送给GPRS模块,GPRS模块通过基站传送到Internet网络中向指定IP的端口PC发送数据包,服务器端上位机通过监控该端口来捕获数据,然后上位机通过串口再次将GPS数据发送到Google地球或者其它导航软件中实现对接,以便实时监测观察。在朋友的提示和帮助下,事实上本系统还加入了基站辅助定位功能,由于GPS卫星信号的接收必须在室外,所以当被监控端处于室内或者在接收不到卫星信号的恶劣情况下,系统仍然能够通过基站信息定位到大致的区域。
?????GPS使用的是微科电子(香港)公司的VK1513模块,选择它主要还是价格方面比较经济实惠,实测效果也不错。GPS模块会每秒钟发出数据包,数据包是遵循NMEA-0183协议的,可以看看我实际接收下来的数据包:
?
主要包含定位信息的是GPGGA以及GPRMC,两个数据包中都包含有时间以及经纬度等信息,因为我主要需要的就是当前的经纬度信息就可以了,也为了减小GPRS数据传输负担,因此我只选择了将GPRMC这条数据进行传输,关于其数据包中具体每个数据的含义可以参照NMEA-0183的说明。值得注意的是,数据包都是以$开头,以回车换行结尾的。回车换行用转义符号表示便是\r\n,这点忽视的话,那么服务器端与地图软件的对接将不会成功。
因此我在stm32的程序上做了判断处理,只传送GPRMC数据包,并且同样为了再次减小GPRS传送压力,每接收到两个数据包传送一个就可以了。实现代码如下
?
接收GPS串口发来的数据通过串口中断实现,接收代码如下。对于这段程序有点比较有意思的事情,这段代码是在我单独调试GPS的时候写的,想法也很简单,以$触发开始接收,遇到’\n’结束,然后当时就出现了一个很不合我逻辑的问题,反复读了几十遍代码没有发现问题,如我注释中写的为什么放入结束符的那个地址要减一,这是实际调试出来的,就没管它一直这样用了,前几天才意识到上面说的是以”\r\n”结尾的这个问题,这才恍然大悟,原来还有一个压根看不见摸不着的’\r’。这也受我们平时用电脑的习惯有影响,当敲下键盘上的回车键,实际上执行了两步操作,回车和换行,这谁看得见呢。
?
?
? ??GPRS模块采用的是华为GTM900C模块,比较常见的一般也就是SIM900和GTM900,选择华为的主要还是因为国产,数据手册肯定有中文官方原版的,所以学习起来不那么费劲,桥哥可不想在大好假日被英文给磨掉学习的信心。对于其TCP/IP链接的建立,可以参照华为GTM900TCP_IP使用指导书。我在程序中已列举了我所用到的AT指令:
?
实际上,这个指令定义的顺序已经表明了我在初始化GTM900C并进行TCP链接的初始化过程:
1、? GTM900C实际返回的参数
2、? GPRS网络附着,将模块附着到GPRS网络中,下面的操作都是基于GPRS网络下进行的,设置它的目的是保证下面的操作能够顺利进行。如果已经附着上GPRS网络,而再次发送此命令,会返回ERROR 8,不过没有关系不影响附着状态,以防万一每次建立链接我都发。
3、? APN,即GPRS接入点的配置
4、? TCPIP功能,网络传输基于这个协议,那是必须。
5、? GTM900C建立一条TCP链接最后用的都必须是这条指令:AT%IPOPEN=TCP,29,1332,这个指令里面包含的是我们接收端作为服务器的IP地址和端口。我们知道网络上标识唯一一台电脑的地址用的是IP地址,这个由于不好记诞生了域名,例如,这个域名实际上也是指向了一个IP,为了让这个域名指向IP就需要一个域名服务器来解析。而家里拨号上网,每次拨号都会动态的分配到一个IP,况且桥哥家最近是一天掉线20多次,IP随时都会变化,不可能每次变化我都更改stm32的程序然后重新烧录,因此我用的一个固定的域名来跟我的IP进行实时绑定,而GTM900C模块每次建立链接都要先得到这个固定域名指向的IP,然后根据IP进行链接,确保无论我当前的IP是多少,它都可以正确连上我这里。而提供这个域名解析到IP服务的是花生壳这款软件,注册一个账号便得到一个免费的域名,并且为该域名提供免费的域名解析服务。
?
?
6、? TCP链接。得到上步所说的返回IP之后,经过封装,可以形成下面这条指令AT%IPOPEN=TCP,4,1332;后面的1332是绑定的端口名,大于256的都可以只要跟上位机软件的监听端口对应就行了,这里我固定为1332,因
您可能关注的文档
- [参考]基于J2ME(Java Platform,Micro Edition)平台的手机天气预报程序的设计与实现.doc
- [参考]基于GSM(全球移动通信系统)网络的室内覆盖研究.doc
- [参考]基于java的arcgisserver开发.doc
- [参考]基于GSM(全球移动通信系统)短消息方式的智能家庭网关的设计与实现.doc
- [参考]基于Java的手机游戏开发与设计.doc
- [参考]基于J2ME(Java Platform,Micro Edition)坦克游戏的实现.doc
- [参考]基于EWB的模拟滤波器设计.doc
- [参考]基于J2EE(Java 2 Platform, Enterprise Edition)家教信息平台后台管理子系统毕业论文.doc
- [参考]基于CAN现场总线实验教学平台研究与开发.doc
- [参考]基于J2ME(Java Platform,Micro Edition)推箱子游戏.doc
- [参考]基于3G网络视频图像的传输.docx
- [参考]基于MATLAB的BP神经网络应用.doc
- [参考]基于INTERNET的网上考勤系统.doc
- [参考]基于数字图像处理的树叶识别论文---黄金版.doc
- [参考]基于GoogleEarth的重大危险源管理2.doc
- [参考]基于CAN的智能照明控制系统.doc
- [参考]基于CAN和RS485总线工业用可燃性气体报警系统.doc
- [参考]基于园区网络的8021x的认证设计与实现.doc
- [参考]基于单片机(微控制器)简易GPS定位信息显示系统设计).doc
- [参考]基于J2EE(Java 2 Platform, Enterprise Edition)网上购物下篇.docx
文档评论(0)