更全的杂志信息网

基于云服务器与Arduino 的GPS定位系统设计*

更新时间:2016-07-05

引 言

物联网是新一代信息技术的重要组成部分,也是信息化时代的重要发展阶段。由美国国防部领导下的卫星导航联合计划局(JPO)主导研究的全球定位系统(Global Positioning System,GPS)[1]是目前应用最广泛和成功的定位技术。GPS在许多嵌入式系统中被用于定位服务,如基于蓝牙4.0模块的电子防丢器[2]和基于Android操作系统、WiFi以及GPS等技术为核心的GPS导航应用系统[3]等。由于GPS只能提供定位的数字信息,而不能直接传送到服务器,所以需要使用单片机将GPS的数据发送到服务器。

其中Arduino单片机是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它是一个基于开放原始码的软硬件平台,构建于开放原始码simple I/O介面版[4],并且具有使用类似Java、C语言的Processing/Wiring开发环境。

本文设计了一种基于Arduino的GPS定位系统,将Arduino与GPS相结合,能够实现对GPS信息的定位并且上传到服务器中,服务器的信息同时可以传送给用户智能终端。

1 总体方案设计

本文设计的GPS定位系统主要包括三个部分:信息采集与处理模块、服务器传送模块、用户智能终端模块,系统如图1所示。用户智能终端主要是支持GSM的智能手机。

图1 系统组成结构图

信息采集与处理模块主要完成GPS信号的接收、数据解析和发送功能。GPS接收单元GPS信号信息,控制单元对此信息进行处理,提取经纬度,通过GSM网络传送单元把经纬度信息位置上传到云服务器中。云服务器把位置信息传送到用户智能终端中,同时,信息采集模块也可以通过短信方式把信息传送到用户智能终端中。

半个时辰后,我就望见远处那个大山坳了。难怪叫它骆驼坳,山坳两边是两座高山,就像前后耸起的驼峰。杨细爹两次带路,都说来的骆驼坳,应该就是这里。山坳深处,半面山都劈开,山石裸露,在夕照下白得刺眼。前后都是林木葱郁的青山,中间嵌着一大块白花花的岩壁,好像把这青山的肚子给捅破了。山坳近处有几排矮房子。敞口有个碉楼,顶上飘着个膏药旗,像坟头的白幡。山坳的豁口围着高墙,墙头还架着铁丝网。我有些发怵,放慢脚步,慢慢儿朝前挪。

系统硬件主要由单片机、GPS模块、GPRS模块和GSM模块等构成。由于GPS模块只能提供定位的数字信息,而不能直接传送到服务器,所以需要使用单片机对GPS模块的数据进行接收,通过GSM网络将数据发送到服务器。该系统硬件由控制单元嵌入式系统、GPS信息接收处理单元、GSM位置信息传输单元和电源组成。硬件设计中只对控制单元、GPS信息接收处理单元、GSM位置信息传输单元进行设计。 如图2所示。

2 系统硬件设计

同时,开发Android手机应用程序对从云服务获取来得数据通过高德地图进行显示。

图2 硬件平台组成图

① 控制单元模块:嵌入式系统作为控制单元,负责控制终端的整个运作,以单片机为核心,用于协调和控制模块各个功能单元,主要实现监控中心指令并相应获取坐标信息、发送坐标数据等功能。

② GPS信号处理单元:通过GPS模块实时获取使用者地理位置信息,并进行压缩处理以方便传输。

charusefullBuffer[2];

2.1 Arduino 单片机

单片机采用的是Arduino的Mega2560单片机,其有54路数字输入/输出端口(其中15个可以作为PWM输出)、16路模拟输入端口、4路UART串口、16 MHz的晶振、USB连接口、电池接口、ICSP头和复位按钮。简单地用USB连接电脑或者用交直流变压器就能使用,适合需要大量I/O接口的设计。它的优点是简单易学,适合刚入门的单片机使用者,并且有多端I/O接口,适合本系统GPS/GPRS模块的接入。 Mega2560单片机结构如图3所示。

图3 Mega2560单片机结构示意图

2.2 GPS/GSM/GPRS模块

GPS/GSM/GPRS模块为集成的A7模块,定位采用GPS模块、GSM模块和GPRS模块都集成在此模块中,具体结构如图4所示。

图4 GPS/GSM/GPRS模块结构示意图

2.3 通信串口连接设计

单片机与GPS模块进行连接,实现GPS数据向单片机的传送。具体接线方式为,单片机的GND与GPS模块的GND(3)引脚相连,图3中的7(4路UART)中的TXD14、RXD15、RXD19引脚分别与图4中GPS模块的4、5、11引脚相连接。

3 系统软件设计

3.1 服务器的搭建

本系统采用的服务器搭载的操作系统是Windows操作系统,服务器为租用的腾讯云服务器,服务器程序是以C#语言为基础进行开发的,服务器的后台程序接收到Arduino单片机数据后,将其存入数据库。

在GPS获取用户的经纬度坐标之后,将数据封装好,上传至服务器,以方便客户端访问。

通信程序在接收到发送的指令后,先创建socket对象,再通过bind()函数将ipv6地址和端口号组合赋给socket对象,进行通信地址和指定端口的绑定,通过listen()、connect()函数对服务器进行监听和连接,用accept()函数接收服务请求。在服务器端依次调用socket()、bind()、listen()之后,就会监听指定的socket地址。客户端依次调用socket()、connect()后就向服务器发送了一个连接请求。服务器监听到这个请求之后,就会调用accept()函数接收请求,成功建立连接。

3.2 Arduino通信

本系统的通信方式是通过GSM模块来完成的,主要完成信息上传到服务器和发送短信的功能。它是传统调制解调器与GSM无线移动通信系统相结合的一种数据终端设备。它的出现给GSM的发展注入了新的活力,改变了传统的以话音为主的通信手段,打开了GSM网络数据通信及其应用的大门。调制解调器必须通过PSTN或其它专用通信网进行通信,因而受地域、线路等影响在应用上有很大的局限性。而GSM模块则无此限制,所以基于这种模块以GSM网络作为无线传输网络可以开发出前景极其乐观的各类应用。

3.2.1 短信的发送

GSM模块启动后,都处于命令状态,在该状态下,它以AT命令形式接收命令。GSM模块接收到AT命令后,对命令进行解释和执行,并返回相应的结果码。

首先设置AT+CMGS=0的PUD格式;然后把“> ***** ”语句的*号部分转换成了十六进制的 1A中文文本格式+手机号码,若返回OK字符串,即为发送成功。

clrGpsRxBuffer();}}

strcpy(send_buf,"AT+CMGS="");

strcat(send_buf, number);//设置PUD格式

改革开放以来,中国经济建设取得了巨大的成就,但同时生态环境问题也日益突出。为保障社会的可持续发展,中国开始积极推动生态文明建设的探索与实践。中国生态文明建设大致可分为三个阶段:一是在经济发展中开始注重环境保护(1978—2002);二是在社会全面进步中建设生态文明(2003—2012);三是在全面深化改革的背景下深入推进生态文明建设(2013至今)。三个阶段不是截然分开的,而是前后相继的关系。

strcat(send_buf, "" ");

if(sendCommand(send_buf,">",3000, 10) == Success);

if (sendCommand(msg, msg, 3000, 10) == Success);

农村经济管理并非是一项独立的工作,需要和各个部门、各个专业进行密切合作,这其中的关系极为复杂。所以,要构建农村信息交流以及共享机制,促进农村经济管理中各部门的良好发展。在农村经济信息化管理中,农村经济管理部门要高度重视收集和整理基层信息,结合农村经济发展的特殊性,充分了解农村经济发展的真实所需。农村经济管理部门还应积极和相关企业保持良好的合作关系,学习企业如何高效利用网络的即时性优点,构建完善的农村信息化经济管理体系。

//短信内容

memset(send_buf, 0, 20);

send_buf[0] = 0x1a;//以16进制发送

send_buf[1] = '';

3.2.2 发送位置信息到服务器端

(1) 获取GPS定位信息

通过本次研究可以看出,罹患胃癌的患者其血清肿瘤标记物水平,与胃部良性疾病患者及健康人比较,或呈现异常升高的状态,在临床上可以将这一特征作为,病情诊断和治疗效果监测与评价的重要参考。

while (GpsSerial.available()){

subString=subStringNext;Save_Data.isParseData=true;

if (gpsRxBuffer[gpsRxCount++] == ' '){

char*GPS_BufferHead;

char*GPS_BufferTail;

if((GPS_BufferHead =strstr(gpsRxBuffer, "$GPRMC,"))!=NULL||(GPS_BufferHead=strstr(gpsRxBuffer, "$GNRMC,")) != NULL ){

if(((GPS_BufferTail=strstr(GPS_BufferHead," ")) != NULL) && (GPS_BufferTail > GPS_BufferHead)){

对于天文摄影师来说,自然少不了大大小小的器材,这些都能整齐地收纳到一个体积小巧的背包中。Alyn目前使用的是索尼A7 III微单相机,作为静态照片拍摄的主力,但镜头的选择更为重要。他需要广角镜头,也需要光圈尽可能大,这样就可以在不使用过高ISO的前提下,让更多的光线进入相机。

memcpy(Save_Data.GPS_Buffer,GPS_BufferHead,GPS_BufferTail -GPS_BufferHead);

Save_Data.isGetData = true;

memset(send_buf, 0, 20);//设置短信文本长度

clrGpsRxBuffer();}

采用优化切削工艺参数A2B3C3和A3B3C3再次进行铣削实验,对本文优化方法进行验证,结果如表9所示。由表9中表面粗糙度测量结果可见,以逆铣区域或顺铣区域作为优化目标可取得更均匀的优化效果。

而从地理区域看,塞尔维亚位于欧洲东南部,是巴尔干半岛中部的内陆国,有着欧洲的“十字路口”之称,是连接欧洲和亚洲,中东,非洲的陆路必经之路,是“一带一路”重要枢纽,境内拥有丰富的煤、天然气、铁、锌、铜等矿产资源。

if(gpsRxCount==gpsRxBufferLength)clrGpsRxBuffer();}

式中:com(mti,mtj)表示任务mti,mtj之间的关联信息的总量;Num(MTask)表示求制造任务的制造任务集合MTask所包含的任务数量。

(2) 解析GPS信息

if((subStringNext=strstr(subString,",")) != NULL) {

如图11所示,将图4中case1-1和图7中case2-1情况下的碳排放量曲线进行了对比。由图11可知,在case1-1情况下整个生产计划期内的碳排放量波动比case2-1的波动幅度大,且case1-1情况下的碳排放量峰值(t=9周期)远大于case2-1情况下的碳排放量峰值(t=8周期)。因此,在周期性碳约束情况下,企业在制定生产计划时,要更多地关注整个周期内的碳排放量峰值以及波动情况,以免碳排放量的急剧增加超过自然环境的承载能力,对企业周围环境和人们的身体健康造成损害。

③ GSM位置信息传输单元:通过访问服务器地址,将坐标数据实时上传到中转服务器上。

对两组的并发症发生情况进行观察,包括压疮、感染以及肺炎等,并且记录两组的护理满意度评分、术后血糖控制时间以及切口愈合时间。

switch (i) {

王祥虽然面不改色,但是心里一颤:“这个人也不简单啊,我到现在都看不出个所以然,他倒是一眼就看出我的玉器不善。”

case 1:memcpy(Save_Data.UTCTime,subString,subStringNext- subString); break; //获取UTC时间

case2:memcpy(usefullBuffer,subString,subStringNext - subString); break; //获取UTC时间

case3:memcpy(Save_Data.latitude,subString,subStringNext - subString); break; //获取纬度信息

case4:memcpy(Save_Data.N_S,subString,subStringNext - subString); break; //获取N/S

加大力度对水质进行管理,通过换水、加水、机械增加氧等措施,能保证水质,也能在很大程度上满足具体的工作需求。营养调控,保证养殖中的鱼类自身免疫能力得以提升。对苗种、食场等进行消毒,达到药物的定期预防。也要将池鱼尽早放入,保证其生长期更合理,促使其抗病能力的提升。加强清洁管理工作和巡查工作,当发现问题的时候及时解决。加强有效的防汛、防旱工作等。

case5:memcpy(Save_Data.longitude,subString,subStringNext- subString); break; //获取纬度信息

case6:memcpy(Save_Data.E_W,subString,subStringNext - subString); break; //获取E/W

default: break; }

gpsRxBuffer[gpsRxCount] =GpsSerial.read();

if (usefullBuffer[0] == 'A')

Save_Data.isUsefull = true;

(三)区域认知。地理的各个知识点是具有区域性的,每个地区当中的自然环境、条件各不相同,相对应的,其人文事物也就有所不同,因此,学生应该具有区域认知能力,在学习到新的知识的时候,应该将知识与相应的区域相联系起来,加强对于区域内地理相关知识的理解。

else if (usefullBuffer[0] == 'V')Save_Data.isUsefull = false; }

(3) 发送数据

移动端通过GSM模块中的SIM卡发送到云端服务器。

if(sendCommand(send_buf,"CONNECT", 10000, 5) == Success);

if(sendCommand("AT+CIPSEND ", ">", 3000, 5) == Success);

if(sendCommand(send_buf,send_buf, 3000, 1) == Success);

memset(send_buf, 0, 100); //清空

send_buf[0] = 0x1a;

if(sendCommand(send_buf,send_buf, 5000, 5) == Success);

if(sendCommand("AT+CIPCLOSE ", "OK ", 5000, 10) == Success);

在移动端接收完毕所有的信息之后,会通过GPRS网络链接到云服务器对外的预留通信端口(测试IP:139.199.39.122,测试预留端口:5000)。通过此端口,移动端会将接收到的数据上传至服务器进行数据的基础处理和转发操作。

4 系统测试结果

在测试实验,硬件连接如图5所示。

图5 硬件实物图

图5中,插入具有上网功能的SIM卡,为了避免室内信号不强的影响,附加了一条长10 m的外接天线。

信号采集与处理模块发送信息到服务器的运行情况如图6所示。

图6 信息发送示意图

使用Android Studio开发程序,用于接收服务器发送来的GPS信息,手机应用程序中调用高德地图API,把位置信息显示在高德地图中,定位结果如图7所示。

图7 客户端真机运行结果示意图

通过本系统设计出基于Android平台的GPS定位报警系统[6]。在移动端,系统使用GPS模块进行定位,将GPS模块采集到的地理位置信息通过GSM网络上传到云服务器,并开发Android客户端的程序对云服务器转发的用户位置信息进行接收,并将接收到的数据在地图上进行匹配,如图7所示。同时,当移动端用户发出报警信息时,客户端用户可以接收短信并展开定位追踪。本项目设计的个人定位报警系统既具有定位功能,又能实现应急情况实时报警功能,可以有效地保证人身财产安全。

结 语

本文基于Arduino的Mega2560单片机和集成GPS/GSM/GPRS模块A7,设计了GPS定位系统。通过A7中的GPS模块实现对GPS信号的接收,传送给单片机的控制系统,解析出GPS位置坐标,上传到腾讯云服务器。腾讯云服务器把接收到的位置信息发送给Android手机客户端,通过应用程序把位置信息显示在高德地图中。

参考文献

[1] 吴晓平.异军突起的多方位、高精度空间大地测量技术——美国全球定位系统(GPS)研究进展[J].地壳形变与地震,1990(1):42-45.

[2] 霍丙乾,罗涛,李剑峰.基于蓝牙4.0的防丢系统的研究与设计[J].软件,2014,35(9):94-97.

[3] 赵萌,崔刚.基于WiFi的Android移动设备导航系统的设计开发[J].智能计算机与应用,2013,3(3):60-63,68.

[4] 袁本华,董铮.基于Arduino控制板的温室大棚测温系统设计[J].安徽农业科学,2012,40(8):5049-5050.

[5] 翁浩峰.在Flash课件中使用传感器[J].物理通报,2010(6):35-37.

[6] 高偲程,马广焜,李想,等. 基于Android平台的个人GPS定位报警系统的设计与开发[J].智能计算机与技术,2018,8(1):141-144.

李想,马广焜,高偲程,刘智宇
《单片机与嵌入式系统应用》2018年第05期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号