引言
随着社会的发展,我国人口老龄化越来越严重,对于老人的监护成了一个社会问题。本文根据老人监护的需求特点[1],利用我国自主研发的北斗卫星定位系统,结合北斗定位模块BDM100设计了两种针对不同需求的家庭监护终端方案,用于对老人进行实时定位,并将实时位置信息传输到监管人手中。第一种方案采用支持3G网络的EVDO模块MC8630,结合以ARM9为内核的AT91SAM9260芯片进行位置信息回传。该方案具有传输迅速、可扩展性强的特点,可以为以后传递身体信息、环境信息提供扩展空间。第二种方案采用支持2G网络的GSM模块GTM900,结合以CortexM3为内核的LPC1766芯片进行定位信息传送,该方案结合良好的软件设计,具有成本低、性能稳定的特性。经过实验检测,这两种方案都能很好地解决家庭监护中老人的实时定位问题。
1 BDM100模块设计
BDM100模块是一款双系统高性能的GNSS模块,能够同时支持BD2 B1、GPS L1两个频点,很好适应低成本、低功耗领域,可以进行大规模的北斗系统集成应用。模块的结构框图如图1所示[2]。
图1 BDM100模块结构框图
从图1中可以看到,BDM100支持UART、SPI、1PPS、I2C总线等多种接口。其可以通过相关器、FFT和匹配滤波器混合应用以及算法优化,在各种复杂环境下保持出色的捕捉跟踪能力和快速TTFF功能。采用多路径抑制技术和高质量的原始观测数据,可以保证很高的授时、导航精度。BDM100芯片可以采用多系统混合定位的方式,这样可以提高定位精准度,因为本文采用北斗定位系统,所以只选取其北斗定位功能。另外,BDM100芯片有3个串口,用户可以自行设置其波特率,默认波特率是9 600,并且可以通过串口3进行固件升级。该模块的定位精度可达到3 m,测速精度可以达到0.1 m/s。本系统采用的外围应用电路如图2所示。
图2 BDM100模块外围电路
本系统的两个方案均使用串口1与MCU通信,串口3预留出接口以便日后升级。特别注意:模块正常启动时,在复位信号有效期内,保持串口3输入引脚电平恒定为高,否则模块将进入升级固件模式,无法正常启动。模块复位信号低电平有效,且持续时间不得小于2 mm。该模块配备的天线必须为+2.85 V有源天线,天线连接至模块的GNSS_ANT引脚,有源天线内部集成LNA(低噪声放大器),可以直接连接到模块GNSS_ANT引脚;若采用非+2.85 V的有源天线,则需要为天线供电。
BDM100模块在其采用的软件接口协议中,主要通过消息的传递来完成信息的传送,其中“消息”是全ASCII码组成的字符串。消息的基本格式如表1所列。
表1 BDM100模块消息格式
其中所有的消息都以$(0x24)开始,后面紧跟消息名,之后跟有不定数目的参数或数据。消息名与数据之间均以逗号(0x2C)进行分隔。表示输入的消息可以以“\\r”(0x0D)或“\\n”(0x0A)或两者的任意组合结束,而表示输出的消息则全部以“\\r\\n”组合结束。消息名和参数中的字母均不区分大小写。
BDM100模块在使用之前需要进行初始化,初始化过程就是模块和主控芯片之间进行消息交互的过程。BDM100模块具有授时和定位功能,本系统只用到其定位功能。
系统需要用到的初始化指令略——编者注。
2 3G方案设计与实现
以3G方案设计的监护终端,采用ARM926EJS为内核的AT91SAM9260芯片作为主控芯片。该芯片具有性能稳定,外围接口丰富,内嵌以太网,具备快速RAM和ROM,支持Linux操作系统的特性。消息回传的3G芯片采用EVDO模块MC8630,3G服务要求网络具有较高的数据吞吐量,EVDO模块支持中国电信CDMA2000提供的所有数据分组业务;对于无线数据接入业务,EVDO的接入速度已经接近有限ADSL上网的水平,而且采用此种方式,数据传输稳定,为以后的性能扩展留下空间,满足方案设计要求。
2.1 硬件设计
3G方案硬件连接框图如图3所示。
图3 3G方案框图
BDM100模块和主控芯片AT91SAM9260通过UART接口连接,而3G芯片MC8630通过USB口与主控芯片连接,这样在保证接收与发送稳定性的同时,还可以为以后的功能扩展提供空间。图43G模块和主控芯片连接图
BDM100模块和主控芯片的具体连接电路见图2,3G模块和主控芯片的连接如图4所示。
图4 3G模块和主控芯片连接图
2.2 软件设计
在主控芯片AT91SAM9260上使用Linux作为操作系统。该操作系统已经在众多嵌入式设备中使用,其稳定性已经得到了验证[3]。
2.2.1 BDM100模块的连接
BDM100模块采用UART串口和主控芯片通信,在Linux中配置完内核之后,利用串口通信接口进行初始化和定位信息的传送。具体的串口通信函数略——编者注。
2.2.2 MC8630模块的连接
本方案所用到EVDO射频模块,起初是无法被识别的,因为Linux默认配置中并没有打开这个选项,属于自定义电路,故需要手动配置。根据MC8630模块的电路图可以看出,CPU与MC8630通过USB口通信,因此需要将处理器的USB口配置为3G功能。Linux对3G模块的驱动支持主要是将USB转换为串口,应用程序就可以像操作串口一样操作USB。所以除了打开“USB driver for GSM and CDMA modems”内核选项之外,还需打开内核选项中USB功能和USB转串口转换支持。3G模块还会用到第三方的拨号软件,故还需打开PPP拨号功能,配置完之后,编译内核。烧录系统后,重启进入/dev目录。若出现USBtty0~USBtty3这4个设备文件,表明3G模块的驱动已被正确加载,如图5所示。
图5 3G模块驱动加载
在程序初始化时,利用编写好的拨号脚本绑定PPP0网卡,这样程序就可以像操作本地网卡一样操作3G模块,使用Socket机制进行消息的传送。具体的拨号脚本等内容略——编者注。
2.2.3 服务器与3G模块通信协议
主控芯片AT91SAM9260收到BDM100模块发来的消息后,会将消息进行重组,通过3G模块传送到后台进行解析。因为系统的定位终端具有实时性,对于年月日信息的需求不是很强调,所以在初始化北斗时接收了GLL信息,它只含有时分秒的信息。本方案中采用的消息通信协议规定如表2所列。
表2 自定义通信协议
其中起始位和校验位均用unsigned short表示。校验采用每两个字节异或操作,编译时,强迫两个字节对齐编译。
3G模块采用这种格式将消息传输到后台服务器进行处理,这样有利于保持信息的稳定和简洁性。
3 2G方案设计与实现
2G方案设计的监护终端采用基于CortexM3为内核的LPC1766作为主控芯片,2G模块采用支持GSM网络的GTM900芯片[4]。该方案采用的2G网络技术成熟稳定,速度也能满足信息传输要求,配合健壮的软件设计,使得其在具体的应用中取得良好的效果。
3.1 硬件设计
具体的硬件连接如图6所示。
图6 2G方案框图
BDM100芯片和GTM900芯片分别通过串口1和串口0与主控芯片LPC1766进行连接。其中GTM900与LPC1766的连接只需要将TXD引脚连接到RXD0,RXD连接到TXD0,然后将两个芯片的GND各自接地即可。而对应BDM100和LPC1766的连接则直接根据图2所示即可。
3.2 软件设计
在2G方案的软件设计中,由于不采用操作系统,可直接根据LPC1766和其他两个芯片的说明手册进行裸板程序的设计。首先是要对BDM100芯片和GTM900芯片进行初始化操作,此处GTM900芯片的初始化操作要在BDM100芯片之前。因为BDM100初始化之后就直接输出位置信息GLL,而在本方案的程序设计中,只设置了一个接收串口数据的全局数组变量RecUartBuf[100]。如果先初始化BDM100芯片,则GLL信息会和GTM900初始化信息冲突。另外,在UART接收程序中,因为每次接收的数据长度不固定,所以不能设置为多字节中断。在本方案中将程序设置为1字节中断,并设置定时器中断,用来判定数据是否传送完毕。在之前的BDM100芯片介绍中,将位置信息GLL的频率设置为1次/s,则在本方案中将定时器中断设置为0.5 s。这样就可以有足够的时间接收并传递信息,在定时器中断函数中将信息标志变量RecUartFlag设置为1,表示有数据进入,此时利用Uart0Sent函数将传递过来的GLL信息通过2G模块发送到后台服务器[5]。
在本方案中,因为保证程序健壮性的需要,GLL位置定位消息传送到后台服务器的格式是不经过重组的原始信息,对于信息的重组和解析任务则交予后台服务器程序处理。
4 系统测试
监护终端的数据通过3G或者2G网络传送到服务器之后,服务器根据通信协议对其解析。得到数据后,服务器进行如下操作:
① 校验数据是否有错,有错则丢弃,并要求终端重新获取一次信息并立即传输。
② 根据数据中的值重组还原,得到经纬度及当前的时间(格式为:XX时XX分XX秒)。
③ 根据经纬度信息,调用地图服务,获取具体位置。
下面介绍3G方案测试:
通过串口软件获得的北斗定位信息如图7所示。
图7 串口软件显示北斗信息
其中显示北纬32度02438675分,东经118度48951303分,后面的090528等表示UTC时间。为了统一格式,将MM度XX分格式转化为MM.NN分(1度等于60分),故118度48951303分相当于118.81585505度,32度02438675分相当于32.04064458度。而其中UTC时间相当于0时区的时间,对应北京时间为东八区的时间,所以要加上8小时才是标准的北京时间,查找BDM100软件接口协议可得GLL消息显示的UTC时间格式为XX时XX分XX秒,例如090528,对应的UTC时间为9时5分28秒,对应的北京时间为17时5分28秒。
后台服务器程序显示消息及2G方案测试略——编者注。
为了验证定位的准确性,打开地球在线(http://www.earthol.com/),输入当前的经纬度信息,查看定位情况。
如图8所示,北斗定位的位置为A12号楼,而笔者所在的位置为图中箭头所指的A10号楼,误差在30 m左右。由于免费版本的Google地图其官方宣称误差在50 m以内,所以本次试验的误差在合理范围内,表明基于北斗BDM100模块的定位终端运行成功。
图8 北斗信息定位测试
结语
北斗卫星定位系统,作为我国自主研制的全球卫星定位系统,在满足军事用途的同时,也在不断地加紧民用化进程。本文设计了两种方案解决家庭监护中位置定位的问题,其中3G方案不仅可以传输位置信息,也为以后传输各种身体信息、环境信息提供了接口和可扩展的空间。2G方案的优点在于其性能稳定、成本较低,对应具有单一需求的用户会是一个很好的选择。这两种方案设计合理,性能稳定,对其他工程设计具有一定参考价值。