查看: 9505  |  回复: 7
参赛作品《基于STM32和SIM808的双卡单待的定位手环》
张仁良zrl
1
主题
2
回复
发表于2017-06-03 12:32:12 | 显示全部楼层
1# 电梯直达

【报名阶段需要填写的内容】


1. 参赛者姓名(必填项):张仁良

2. 单位或学校名称(必填项):中国科学院大学

3. 当前职务或职称(必填项):研究生(硕士)

4. 参赛作品的名字(必填项):基于STM32和SIM808的双卡单待的定位手环

5. 简要陈述您的idea和作品(必填项):本次参赛作品为一款定位手环主要用于解决跨境定位问题(例如家住深圳的孩子在香港上学,通过定位手环安装双卡来实现跨境定位),包含MCU(STM32)双卡管理电路、GSM/GPS电路。GSM通过GPRS联网,通过TCP/IP协议访问具有固定域名的服务器,服务器接收由手环发送过来的定位信息,服务器连接百度地图API接口实现动态位置定位,本次参赛只做硬件平台(定位手环)搭建以及和服务器的搭接。后期设想:家长只要安装微信客户端并关注相应微信公众号,通过微信公众号发出请求,即可通过服务器将定位信息截图发送到家长微信上,家长即可知道孩子的位置,家长可以确定一个合适的时间来接孩子,并解决了跨境不能沟通的问题(大陆和香港属于跨境,电话卡不可以通用,大陆卡在香港使用费用极高,全国流量不包含港澳台)。

6. 拟用到的立创商城在售物料(必填项):STM32,S8050,RT9193-33,A2SHB,MAX2659,8M贴片晶振

7. 拟用到的非立创商城物料或其它补充(必填项):SIM808,GPS有源天线,GSM弹簧天线,IPEX座




【作品正式发表(报名成功后进入设计阶段)需要填写的内容】


一、作品简介

例如,可以包括但不局限于以下内容:


品的整机外观图片或焊接组装好的PCBA图片


为了便于看清PCB布局图,将敷铜去掉可以很清晰的看清板子的内部结构,四层分别表示如下:

1.1.1  TOP

TOP层如图1所示:主要包括SIM808电路,IIC电平匹配电路,SIM2电路,JLINK下载接口,串口调试接口,GPS有源天线接口,GSM小辣椒天线接口,GSM弹簧天线接口,SIM808复位接口以及锂电池输入接口等。可以看出整个布局不是很密,进行了严格的抗干扰的布局和布线。

1.1.2  GND

由于GND层是以add plane形式添加,主要就是过孔GND的连接,在此就不叙述此层了。

1.1.3  VCC

VCC层如图2所示,图中标出了VDD_2.8VCC3.3的分块,其余的部分为VCC4

1.1.4  Bomtom

Bottom层如图3所示,主要包括STM32的一些外围电路,复位,BOOT0/1接地,晶振电路;FSA2567电路,SIM1电路;USB充电接口,和9*9*4mm无源陶瓷天线接口。

至此整个PCB板子描述完毕,可以看到整个PCB板子元器件很多但是经过合理布局后,整个板子的所有问题都考虑到了,阻抗问题,走线问题以及散热问题都得到了解决,板子面积得到了很好的利用,最终板子的面积为46.1*39.6mm,如果将调试接口去除板子面积可以达到更小,完全可以做到腕带大小的体积,戴在手腕上,图4为板子敷铜后的整体PCB,图5为焊接后实物图正面,图6为焊接后实物图,反面图,7为工厂制版图

  

图1  PCBTOP层图

 

图2  PCBBottom层图  

 

3  PCBVCC层图

  

图4  PCB板敷铜后整体图

  

图5  焊接实物图正面

  

图6  焊接实物图反面

 

图7  工厂制版图


2 作品的研究背景、目的和功能、市场应用前景


在这高速发展的信息时代,全球卫星导航定位技术发展迅速,应用范围越来越广。卫星导航由太空中许多卫星通过相关算法进行综合设计实现。对于被动式导航来说,一般四颗卫星就可以定位。导航时,只要将接收设备放在室外,就可以在任何时间、任何地点为地球上的用户确定所在地理位置的经纬度和用户运行的速度以及当前的精确时间和日期等信息。

GPS是英文Global Positioning System的首字母缩写词[1]。但是单一的GPS定位或者GPRS(General Packet Radio Service)/GSM(Global System of Mobile communication)移动网络都无法完成一般的需求,对于手持移动端来讲只有将两者结合才能实现经纬度等数据的实时发送和接收。在本应用中采用的是美国GPS,美国的GPS 采用被动式定位原理,用户只要能接收到4颗卫星即可进行自主定位,用户数量无限。如果想要在任意坐标系中确定用户接收机的准确位置,首先要将用户接收机的空间位置三维坐标确定,这里涉及到很多算法和公式不是本文主要研究的内容,故不做叙述了。针对于中国的BD1定位系统[7]来讲采用主动式接收原理,限制了用户数量同时价格方面也是比较贵,对于用户来说会增加没有必要的消费。

虽然GPS定位信号易受地形及建筑物的影响,会存在定位盲区,但是对于本应用来讲是在比较开阔的城市里,所以对于此方面问题不予以考虑;将二者结合起来就可以迅速通过GPRS网络将本地原始位置信息实时发送到服务器端进行处理或者显示,并通过服务器给用户返回更加精确的位置信息截图,通过服务器也可以适当增加其他方面的增值服务,实现私人定制功能应用,将有着更广阔的应用前景。所以着手研究基于GPSGSM/GPRS的定位系统,有以下三方面的意义。

(1)基于 GPSGSM/GPRS的定位系统应用领域广阔:应用于汽车、船舶和航天领域。GPSGSM/GPRS的定位终端可应用于汽车防盗[2][3]、船舶航行定位及防盗系统等,只要将本定位终端安装在汽车、船舶上并能够接收卫星发射来的 GPS 信号,从中提取出经纬度信息,发给监控台。监控台根据经纬度信息,在电子地图中查找出对应的地理位置信息,然后通过GPRS数据或者短信的形式发送给车船主。如果汽车或者船舶被盗,通过本定位终端和监控台,失主就能很快找到丢失的汽车。在航天领域主要用于飞机航线确定后的自动驾驶,飞机上的驾驶者一般只在飞机的起飞和降落阶段,以及遇到突发情况时候才采取人工驾驶,如果采取自动驾驶,这时候GPSGSM网络定位就起到很大的作用,及时发送飞机所在位置到控制台。

(2)巨大的市场效益和市场潜力:目前GPS在航天领域,手机领域以及一些手持定位终端等领域都有巨大的市场,目前人民生活已经离不开这个定位系统,尤其在车载导航方面越来越多的车辆离不开导航仪了。

3)中国移动和中国联通的移动通信网络基站的扩大化:两大运营商的网络既是语音通信网络,又是一个能够提供丰富GPRS数据业务的服务网络。无论在室内还是室外,只要有移动网络覆盖并且信号在一定强度即可进行数据通信业务。一般地方现在都是有移动网络覆盖的,针对于本应用来讲2G网速足够。

针对以上对GPSGSM的应用的阐述和考虑,可以看出目前此种应用已经成熟和稳定,所以引入以下背景:

在香港有这样一批人群存在,在广东生活,为了孩子更好的接受教育将孩子送到香港去上学,每天在五点到六点之间放学,但是由于交通条件的关系,一般到达香港入境口的时间不固定,所以家长无法确定时间去接孩子,去早或者去晚了都会造成时间的浪费和接送效率的低下。同时还有一个弊端就是孩子使用手机也不是很方便,而且出境到香港后大陆的卡不提供港澳服务,即使开通港澳服务费用也是极高,这就造成了极大的沟通问题,所以基于这一个现状,开发一款在大陆和香港可以同时使用的定位手环势在必行。



3  作品在创新性、趣味性、实用性甚至公益性方面,有哪些亮点可体现?


本文简要介绍了研究的三方面意义,以及其他定位技术与GPS技术的比较和差别,针对于这些提出了一种双卡切换的GPS定位手环。

(1)设计了实时时钟,减少不必要的电源浪费,当SIM808没在工作时间段内的时候SIM808处于关机状态。

(2)采用微信公众号形式,这样就免去了设计APP软件和IOS软件的设计成本,也免去了安装各种软件的的麻烦,这样就可以增加用户使用的兴趣以及人数。

(3)采用FSA2567MPX设计双卡电路,极大的减少编程的复杂度,成本大的缺点。

4)免去了GPS原始坐标WGS-84纠偏差的算法或者增加数据库的方法,直接采用百度地图API接口,免去了这些麻烦。

最终设计完PCB,制版完成以后进行焊接,并进行测试,实践证明GPS可以正常定位,并且定位精度在5米之内,可以顺利连接服务器,动态更新GPS数据,实时显示手环佩戴者所在位置。也可以进行多线程连接,将位置消息存入后台数据库,以供后期的查询以及收取的服务费操作的便利等,此外还实现了位置信息显示在地图上,实时的刷新。


二、系统构架图


用流程图或思维导图等形式,描述您的作品的组成构架,即方案图。

 点击查看大图

                                                      图8 双卡定位手环整体框架 


                           点击查看大图

                                                        图9 定位手环硬件框架图


三、硬件部分的描述


1.附上原理图&PCB实物图的图片或者源文件(官方建议大家尽量用源文件上传),如果是图片,请确保图片是清晰可辨的;


Main_Sch.pdf 

STM32_Sch.pdf 

SIM808_Sch.pdf 

STM32_SIM808_PCB无盲孔新改.zip 


2.用文字把该作品的实现原理、系统的工作过程大致讲解一下。


   图8为双卡定位手环整体框架图,主要包括,定位手环(或称为穿戴者),服务器和位置信息请求者。定位手环主要通过GPS向卫星请求经纬度信息,并通过MCU控制将采集到的经纬度信息通过GPRS网络发送到服务器。服务器主要是对请求的应答以及接收经纬度消息,并对位置消息进行处理,让消息请求者能够很快知道穿戴者所在位置。
   下面详细介绍整个过程:
   (1)首先根据MCU的实时时钟判断时间满足时间是在下午5~6点之间,确定是否主动连接服务器,如果时间在正确区间,则向服务器请求连接,应答连接。也可以向服务器发出更改使用时间区间的请求更改使用时间区间;
   (2)位置信息请求者通过微信客户端向服务器发出位置信息请求,服务器收到请求后,回馈给位置信息请求者,稍候等字样,然后立即向定位手环发出位置信息请求命令;
   (3)定位手环收到位置信息请求命令后,立即控制MCU发出GPS位置请求命令,多次采集,数据稳定后,然后通过MCU的串口2将位置信息发送到GSM并控制其发送到服务器;
   (4)服务器接收到位置信息后,立即将其通过逆地址解析送入百度地图中并截取其位置信息图片,将图片反馈给位置信息请求者的微信客户端(前提是关注本定位手环的微信公众号)。
    至此整个定位过程结束,用户可以重复请求,直到确定一个合适的时间去接孩子。


四、材料清单(BOM列表)


列出您这个作品所用到的主要器件(关键器件即可),比如单片机&ARM芯片、专用集成芯片(ASIC)、传感器、功能模块等。

如果所列出的芯片是来自我们立创商城上的,最好能写出该器件的商品编号或附上对应购买链接。



   点击查看大图


五、软件部分的描述(选填)


如果您的作品涉及到软件,请列出作品对应的软件工作流程图,及关键部分的例程、源码(如果您想开源的话请上传全部源码)。

5.1 定位手环软件体系架构

整个系统由STM32SIM808FSA2567三部分组成

       STM32主要完成程序的初始化(串口2,串口1RTC时钟以及内存的初始化等),调用相关函数开启SIM808GPRSGPS以及配合二者联合工作,同时还要输出高低电平控制FSA2567进行SIM卡的选择。

        SIM808有两样作用,一是本身具有TCP/IP协议可以直连GPRS网络,二是具有GPS定位作用,采集位置信息。

FSA2567是个多路模拟开关,具有SIM卡选择功能。

5.2 定位手环相关代码解析

定位手环程序编写使用KeilUvision5,主要包括以下几个C文件:GPS.CGPRS.CUSART2.CFSA2567.CRTC.CMALLOC.CSTART.CLED.CTIMER.Cdelay.csys.cUSART.CMAIN.C等。还包括一些内核文件和启动文件,这里不写出,主要介绍五个函数,GPS.CGPRS.CFSA2567.CSTART.CMAIN.C。下面就详细解释每个C文件,并附部分函数。

5.2.1  GPS.C代码解析

主要包含四个函数

1GPS电源打开函数:void GPS_PWRON(void)

使用 sim808_send_cmd("AT+CGNSPWR=1","OK",300)函数打开GPS电源。

2GPS电源关闭函数:void GPS_CLOSE(void)

使用 sim808_send_cmd("AT+CGNSPWR=0","OK",300)函数关闭GPS电源。

3GPS数据采集函数:void GPS_DATA_Receive(void)

使用此函数sim808_send_cmd("AT+CGNSINF","OK",300)控制GPS经纬度数据输出,并使用字符比较函数strstr()判断是否为有效发送和接收,接下来使用strtok()GPS经纬度数据分割出来并赋值到相关变量以便调用。

4)地图坐标截取函数:u8 google_map_zzu_Science_Park(void)

google地图上截取了一个矩形区域,此区域为郑州大学工科园,如下图所示:

 

图10  截取矩形区域(区域为郑州大学工科园

代码如下所示:

u8 google_map_zzu_Science_Park(void) //google地图坐标截取函数

{

u8 res;

SPAY=34.817156;SPAX=113.531058;//A点坐标

SPBY=34.817156;SPBX=113.534917;//B点坐标

SPCY=34.814142;SPCX=113.534917;//C点坐标

SPDY=34.814142;SPDX=113.531058;//D点坐标

DN=sqrt((longitude-SPDX)*(longitude-SPDX)+(latitude-SPDY)*(latitude-SPDY));

BN=sqrt((longitude-SPBX)*(longitude-SPBX)+(latitude-SPBY)*(latitude-SPBY));

BC=sqrt((SPDX-SPBX)*(SPDX-SPBX)+(SPBY-SPDY)*(SPBY-SPDY));

if((DN*DN+BN*BN-BC*BC)<=0) //表示采集的GPS坐标点在矩形区域内

{

 res=0;    

}else                         //表示采集的GPS坐标点在矩形区域外

{

 res=1;

}

return res;

}

  点击查看大图
代码中的坐标N(longitude,latitude)代替图4.2中坐标N(x,y),当函数返回值res=0,表示现在位置在郑州大学工科园内,当函数返回值res=1,表示现在位置在郑州大学工科园外。

  

图11  点与矩形的关系

5.2.2  GPRS.C代码解析

       1)向SIM808发送命令函数:u8 sim808_send_cmd(u8 *cmd,u8 *ack,u16 waittime)      

主要包括三个参数,cmd为发送的命令,ack为反馈的字符,waittime为发送命令需要的时间。

(2)SIM808GPRS配置函数:u8 sim808_gprs_test(void)

进行端口和服务器域名的赋值,使用sim808_send_cmd(u8 *cmd,u8 *ack,u16 waittime)函数,设置GPRS移动台类别,设置PDP上下文等,最终向服务器发起申请连接,连接服务器。

(3)SIM808GPRS测试函数:void sim808_test(void)

检测模块是否回应AT命令[8],并且判断SIM卡是否准备就绪,如果准备就绪就发起GPRS连接,调用sim808_gprs_test(),否则继续等待SIM卡注册。

5.2.3  FSA2567.CSTART.C代码解析

由于这两个C文件基本上都是GPIO的配置,都设置为推挽输出,这里需要注意的是STM32的引脚PB4在配置时候,需要使能复用时钟和关闭JTAG调试模式。

5.2.4  MAIN.C代码解析

C文件为关键函数,里面主要包含主函数main(),里面包含了系统初始化,RTC时钟,延时,串口1,串口2以及内存调用等初始化函数,里面包含了整个开机,SIM选择,定位数据采集,连接服务器的流程,由于过程较多用流程图形式描述,图12

5.3 服务器软件的设计与流程图

5.3.1 服务器软件设计描述

通过socket实现客户端与服务器之间的连接与通信,读取客户端发送的经纬度数据,然后保存在数据库(这里使用Mysql,并应用hibernate持久化层)中,并读取数据库中的经纬度数据,并保证这些数据在需要查看时候可以调用。将经纬度数据坐标传入百度地图,通过逆地址解析[Geocoding API]得出具体地址并在地图上显示出来(用到Struts2框架)。同时支持多线程处理,可以和多个手环进行连接。

这里涉及到百度地图纠偏的问题。偏移的起因:国家测绘局以国家安全为理由,用法律的形式对所有发行的地图类产品加了强制性规范,对地图的真实坐标进行加偏移处理,之后才可能通过审批准许上市这种加过偏移的地图坐标就是所谓火星坐标,如果仅仅地图是火星坐标,但GPS仍然输出真实坐标的话,就会发生GPS的定位跟地图不能吻合的问题。GPS先从卫星上得到真实坐标,然后经过加偏移程序转换成火星坐标,由于是同一个算法,所以经过软件加偏移的坐标能跟同样加了偏移的地图吻合这样就可以用GPS正常导航了。   

GPS采集到的定位数据叫做WGS-84,是真实的坐标,本应用中的GPS坐标是准确的软件中也没有加入纠偏算法,而是采用百度地图带有纠偏算法的逆地址解析API接口,得到的就是准确的地图位置信息。

5.3.2 服务器软件流程图

如图13所示;


                                                                                    点击查看大图


图12  手环软件执行框图


 点击查看大图


图13  服务器端运行流程图


六、作品演示


请上传您的作品的功能演示到腾讯视频,并编辑到本楼(或附上视频链接)。按要求上传视频可获得5分,具体详见活动规则。

 https://v.qq.com/x/page/d05361atzgs.html


七、总结与展望



随着社会经济的快速发展,使得人民生活的日益进步,追求便利的心态日益增加。而且由于跨境造成不能沟通的问题,本文提出了一种基于GPS定位,结合GSM联网,使用了一种简单的双卡切换电路用来达到使用方面的需求,并且较为详细介绍了整个系统的框架,硬件组成和程序代码的解析等。

本部分主要是总结全文的主要工作,以及后期需要完善和更改的地方以及提出一些展望和设想。

7.1 本文的主要贡献和创新

本文简要介绍了研究的三方面意义,以及其他定位技术与GPS技术的比较和差别,针对于这些提出了一种双卡切换的GPS定位手环。

(1)设计了实时时钟,减少不必要的电源浪费,当SIM808没在工作时间段内的时候SIM808处于关机状态。

(2)采用微信公众号形式,这样就免去了设计APP软件和IOS软件的设计成本,也免去了安装各种软件的的麻烦,这样就可以增加用户使用的兴趣以及人数。

(3)采用FSA2567MPX设计双卡电路,极大的减少编程的复杂度,成本大的缺点。

4)免去了GPS原始坐标WGS-84纠偏差的算法或者增加数据库的方法,直接采用百度地图API接口,免去了这些麻烦。

最终设计完PCB,制版完成以后进行焊接,并进行测试,实践证明GPS可以正常定位,并且定位精度在5米之内,可以顺利连接服务器,动态更新GPS数据,实时显示手环佩戴者所在位置。也可以进行多线程连接,将位置消息存入后台数据库,以供后期的查询以及收取的服务费操作的便利等,此外还实现了位置信息显示在地图上,实时的刷新。

7.2 今后工作的设想和展望

论文中详细的描述了定位方法和双卡转换以及定位的流程,但是如果考虑其工作的稳定性以及定位的精确度,还是需要增加软件算法以及硬件的设计的完善,所以下面有三个想法来弥补不足之处。

(1)MCU采用ST公司的STM32F1系列芯片,但是本应用采用的只是一个中等容量,频率为72MHz处理能力的一款芯片,不能运行uC/OS IILinux等功能强大的操作系统,后期可以考虑加入STM32F4超大容量的芯片主频为168MHz,容量为1MB处理芯片,嵌入系统使得任务运行可操作化更加人性化,使得定位手环可以适应于高端的应用场合。

(2)、结合多系统定位,后期准备加入北斗二代”[7]GPS结合的双定位模块,一来可以极大较少定位盲区和增加定位精度,二来北斗二代具有短信功能可以适应用于没有移动和联通服务基站的偏僻地区[1]

(3)、定位手环目前为四层板结构,后期会考虑六层板或者八层板设计,这样就可以将手环做到更加小型化,考虑到散热问题以及功耗问题,手环不能做到很小,否则极有可能出现其他问题,后期可以考虑采用MCUGSM结合的芯片这样就可以使模块做到更加集成化使得模块体积可以做到更小,这样就需要考虑和其他厂家合作,这样无疑增加了成本,不过可以根据根据需要和成本要求做到专用专做。

总之现在仅仅做了一个大大的框架,等于说设计才刚刚开始,遇到的问题还不多,许多内部的东西并没有了解,后期的研究不会只是停留在表层,会深入研究GSM内部的结构,直接将GSMMCU结合,这样手环才可以做到小型化,在市场上占得一席之地。


大家好,我是张仁良
张仁良zrl
1
主题
2
回复
发表于2017-06-03 13:09:13   |  显示全部楼层
3#
发表于2017-06-03 12:38:30  2# 短信方式的定位,非常的不准
不是短信,是采集GPS数据,然后通过GPRS将采集到的经纬度信息送入到服务器,调用百度地图得API接口,叫逆地址解析接口。
大家好,我是张仁良
张仁良zrl
1
主题
2
回复
发表于2017-08-11 11:59:18   |  显示全部楼层
7#
发表于2017-08-11 10:04:36  6# 你这个定位的精度有测试过吗,如果有干扰的情况会不会超过你说的5米定位距离
不明白你所说的干扰是什么样的干扰,我认为用过手机导航的都知道,进入一般树丛甚至是楼底的GPS信号就会很弱了,我在实验室测试过,定位的非常准确,甚至在楼边效果也很不错,总体而言,上海芯讯通的这款SIM808还是很不错的,现在的新产品SIM868效果也很不错,而且支持双卡,更加小巧,升级版本我认为可以采用这款芯片。
大家好,我是张仁良

主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部