跟着社会的开展,我国人口老龄化越来越严峻,关于白叟的监护成为了一个社会问题。本文依据白叟监护的需求特色,运用我国自主研发的斗极卫星定位体系,结合斗极定位模块BDM100规划了两种针对不同需求的家庭监护终端计划,用于对白叟进行实时定位,并将实时方位信息传输到监管人手中。第一种计划选用支撑3G网络的EVDO模块MC8630,结合以ARM9为内核的AT91SAM9260芯片进行方位信息回传,该计划具有传输敏捷,可扩展性强的特色,可认为今后传递身体信息,环境信息供给扩展空间。第二种计划选用支撑2G网络的GSM模块GTM900,结合以Cortex-M3为内核的LPC1766芯片进行定位信息传送,该计划结合杰出的软件规划,具有本钱低,功用安稳的特性。经过实验检测,这两种计划都能很好的处理家庭监护中白叟的实时定位问题。
1 BDM100模块规划
BDM100模块是一款双体系高功用的GNSS模块,能够一起支撑BD2 B1,GPS L1两个频点,很好习惯低本钱,低功耗范畴,能够进行大规模的斗极体系集成运用。模块的结构框图如下图所示:
图1 BDM100模块结构框图
从芯片结构框图中能够看到,BDM100支撑UART,SPI,1PPS,I2C等多种接口。其能够经过相关器,FFT和匹配滤波器混合运用以及算法优化,在各种杂乱环境下坚持超卓的捕捉盯梢才能和快速TTFF功用。选用多途径按捺技能和高质量的原始观测数据,能够确保很好的授时,导航精度。BDM100芯片能够选用多体系混合定位的方法,这样能够进步定位精准度,因为本文选用斗极定位体系,所以只选取其斗极定位功用。别的,BDM100芯片有3个串口,用户能够自行设置其波特率,默许波特率是9600,并且能够经过串口3进行固件晋级。该模块的定位精度可到达3米,测速精度能够到达0.1米/秒。本体系选用的外围运用电路图如下:
图2 BDM100模块外围电路图
本体系的两个计划均运用串口1与MCU通讯,串口3预留出接口以便日后晋级。特别注意:模块正常发动时,在复位信号有用期内,坚持串口3输入引脚电平恒定为高,不然模块将进入晋级固件形式,无法正常发动。模块复位信号低电平有用,且持续时刻不得小于2毫秒;该模块装备的天线有必要为+2.85V有源天线,天线衔接至模块的GNSS_ANT引脚,有源天线内部集成LNA(低噪声放大器),能够直接衔接到模块GNSS_ANT引脚,若选用非+2.85V的有源天线,则需求为天线供电。
本文所运用的BDM100模块在其选用的软件接口协议中,首要经过音讯的传递来完结信息的传送,其间“音讯”是全ASCLL码组成的字符串。音讯的根本格局为:
表1 BDM100模块音讯格局
其间一切的音讯都以$(0x24)开端,后边紧跟音讯名,之后跟有不定数目的参数或数据。音讯名与数据之间均以逗号(0x2C)进行分隔。标明输入的音讯能够以‘’(0x0D)或‘’(0x0A)或两者的恣意组合结束,而标明输出的音讯则悉数以‘’组合结束。音讯名和参数中的字母均不区别大小写。
BDM100模块在运用之前需求进行初始化,初始化进程便是模块和主控芯片之间进行音讯交互的进程。BDM100模块具有授时和定位功用,本体系只用到其定位功用,所以关于授时功用的初始化不做描绘。
本体系需求用到的初始化指令如下表所示:
表2 BDM100模块初始化指令
其间在3G计划中因为选用USB接口通讯,需求将波特率设置为115200(默许波特率9600),详细指令为:$CFGPRT,3,h0,115200,3,3。因为本体系用到的是斗极定位体系,而BDM100模块能够支撑GPS和斗极混合定位,所以需求在初始化时将模块设置为斗极定位形式,能够选用两个指令完结-CFGSYS/CFGNAV,详细指令为:$CFGSYS,h10或许$CFGNAV,1000,1000,3,2。关于输出的音讯有多种,详细的编码见下表:
表3 BDM100模块音讯类型列表
本体系中用到的输出需求地理方位信息和对应的时刻信息,由上面的音讯类型能够看出选用GLL音讯或许RMC音讯皆能够满意要求,因为GLL音讯比RMC音讯短,信息功率比较高,所以体系在规划中选用GLL音讯进行传送。因计划中衔接的操控芯片处理才能约束,GLL音讯需求设置其输出频率为1次/秒,并且其对应的类别和ID号别离为0和1,经过查找对应芯片软件手册得知GLL音讯的最高输出频度为1Hz,所以运用CFGMSG设置其频率用的详细指令为:$CFGMSG,0,0,1。
当把以上内容处理完结,需求将设置进行保存,用到的指令为:$CFGSAVE。
初始化完结今后,BDM100芯片就会以1次/秒的速度经过接口向外输出数据,详细接纳以及处理进程由与其相链接的主控芯片处理。
2 3G计划规划与完结
以3G计划规划的监护终端选用ARM926EJ-S为内核的AT91SAM9260芯片作为主控芯片,该芯片具有功用安稳,外围接口丰厚,内嵌以太网,具有快速RAM和ROM,支撑LINUX操作体系的特性。音讯回传的3G芯片选用EVDO模块MC8630,3G服务要求网络具有较高的数据吞吐量,EVDO模块支撑中国电信CDMA2000供给的所以数据分组事务,关于无线数据接入事务,EVDO的接入速度现已挨近有限ADSL上网的水平,并且选用此种方法,数据传输安稳,为今后的功用扩展留下空间,满意计划规划要求。
2.1硬件规划
3G计划硬件衔接框图如下:
图3 3G计划框图
其间BDM100模块和主控芯片AT91SAM9260经过UART接口衔接,而3G芯片MC8630经过USB口与主控芯片衔接,这样在确保接纳与发送安稳性的一起,还可认为今后的功用扩展供给空间。对BDM100模块和主控芯片的衔接详细电路见图2,而对3G模块和主控芯片的衔接见下图:
图4 3G模块和主控芯片衔接图 2.2 软件规划
在主控芯片AT91SAM9260上运用linux作为操作体系,该操作体系现已在很多嵌入式设备上面运用,其安稳性现已得到了验证。
2.2.1 BDM100模块的衔接
BDM100模块选用UART串口和主控芯片通讯,在linux中装备完内核之后,运用串口通讯接口进行初始化和定位信息的传送。本计划中,详细的串口通讯函数如下:
在进行串口通讯时,要先对串口进行初始化,对应履行Serial_init函数。
详细格局:
int serial_init(char *dev, int speed, int is_block)
其间dev是设备文件地址,speed是串口波特率,is_block是设置在初始化不成功时,是否堵塞等候,直到初始化成功。
初始化函数经过调用static int open_dev(char *dev, int is_block)函数来翻开设备文件,其间dev和is_block参数和初始化函数中的含义共同。翻开成功,回来设备文件描绘符,不然回来-1.经过调用static void set_speed(int fd, int speed)来设置波特率,其间fd标明设备描绘符,speed标明速率,在调用此函数时,要中止串口作业。
初始化完结后,就能够进行数据的读写,读函数为:
int serial_read_timeout(int fd,char *str, unsigned int len, unsigned int timeout/*ms*/)
此读函数是带有超时机制的串口读,接纳的数据放在str的字符串中,fd标明设备文件地址,len标明读取的长度,timeout 标明超时时刻,ms等级,函数回来读取的长度。
所谓的超时机制,是指程序运用此函数读取数据时,会发动一个线程,有数据时运转,无数据时堵塞,当线程有数据时,读完数据,程序再持续,假如超时还没有读完,则抛弃读取,程序持续,一般在设置的时刻内,程序都能读完数据,这样做是为了避免线程死锁,无法结束线程。
串口发送函数详细格局为:
int serial_send(int fd,char *str,unsigned int len)
其间fd标明设备文件地址,发送数据放置在str中,长度为len.发送成功回来发送长度,不然回来小于0的值。
经过这样的三个函数,就能够完结BDM100模块与主控芯片AT91SAM9260的通讯,能够完结相关的模块初始化操作和信息的传输。
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这四个设备文件,标明3G模块的驱动已被正确加载。详细如下:
图5 3G模块驱动加载
在程序初始化时,运用编写好的拨号脚本绑定PPP0网卡,这样程序就能够像操作本地网卡相同操作3G模块,运用socket机制进行音讯的传送。详细的拨号脚本如下:
If [ifconfig|grep ppp0|awk ‘(print($1))]
Then
echo “the ppp0 has existed!”
else
pppd call evdo &
until[ifconfig|grep ppp0|awk ’(print($1))‘]
do
sleep 1
done
route del default
route add default dev ppp0
fi
在履行ifconfig指令后,体系会列出了一切的网卡,一般状况下只需eth0和lo两个网卡:eth0是常用的RJ45接口的网口,插上一般网线即可上网;lo是本地网卡;当运用pppd拨号成功之后就会呈现ppp0无线网卡,此刻3G模块现已衔接上互联网。然而在操作体系发动的时分,一般默许网卡为eth0,故在拨号成功之后,有必要修正默许的路由途径,这样假如在运用程序运用socket编程之时没有绑定指定网卡,一切网络数据都会从ppp0网卡传输。绑定完ppp0网卡就能够运用linux socket机制进行与后台服务器的通讯,本计划中选用的UDP方法和后台服务器进行通讯,UDP协议的通讯不需求像TCP相同事前树立链接,只需求绑定ip地址和端口号即可,可是本计划中为了今后的可扩展性,规划了socket_connect和socket_send函数,不论是TCP仍是UDP,只需调用这两个函数即可,选用相同的接口,这样便于运用和扩展功用。详细如下:
int socket_connect(const int sock_fd, const char *ip_str, const unsigned int port_ui)
其间sock_fd是套接字,它是经过函数int socket_create(const int af, const int type, const int protocol, const int stime, const int rtime, const char *ifname)创立得到。ip_str是ip地址,port_ui是端口号。
int socket_send(const int sock_fd,const char * data, const int len, const int flags)
其间data是要发送的数据,len标明长度,flags一般取0即可。
接纳函数:
int socket_recv_timeout(int sock_fd, char *buff,unsigned int len, unsigned int timeout/*ms*/)
详细功用用来接纳网络数据,直到长度等于len,或许超时(timeout)后回来。
2.2.3服务器与3G模块通讯协议
主控芯片AT91SAM9260收到BDM100模块发来的音讯后,会将音讯进行重组,经过3G模块传送到后台进行解析。因为体系的定位终端具有实时性,关于年月日信息的需求不是很着重,所以在初始化斗极时接纳了GLL信息,它只含有时分秒的信息,本计划中选用的音讯通讯协议规则如下:
表4 自定义通讯协议
其间开始位和校验位均用unsigned short标明,校验选用每两个字节异或操作,编译时,逼迫两个字节对齐编译。
3G模块选用这种格局将音讯传输到后台服务器进行处理,这样有利于坚持信息的安稳和简洁性。
3 2G计划规划与完结
2G计划规划的监护终端选用依据cortex-M3为内核的LPC1766作为主控芯片,2G模块选用支撑GSM网络的GTM900芯片[4]。该计划选用的2G网络技能老练安稳,速度也能满意信息传输要求,合作强健的软件规划,使得其在详细的运用中取得杰出的作用。
3.1 硬件规划
该计划详细的硬件衔接如下:
图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接纳程序中,因为每次接纳的数据长度不固定,所以不能设置为多字节中止,在本计划中将程序设置为一字节中止,并设置定时器中止,用来断定数据是否传送结束,在之前的BDM100芯片介绍中,将方位信息GLL的频率设置为1次/秒,则在本计划中将定时器中止设置为0.5s,这样就能够有满意的时刻接纳并传递信息,在定时器中止函数中将信息标志变量RecUartFlag设置为1,标明有数据进入,此刻运用Uart0Sent函数将传递过来的GLL信息经过2G模块发送到后台服务器。
在本计划中,因为确保程序强健性的需求,GLL方位定位音讯传送到后台服务器的格局是不经过重组的原始信息,关于信息的重组和解析使命则交予后台服务器程序处理。
4 体系测验
监护终端的数据经过3G或许2G网络传送到服务器之后,服务器依据通讯协议对其解析。得到数据后,服务器进行如下操作:
1) 校验数据是否有错,有错则丢掉,并要求终端从头获取一次信息并当即传输。
2) 依据数据中的值重组复原,得到经纬度及当时的时刻(格局为:XX时XX分XX秒)。
3) 依据经纬度信息,调用地图服务,获取详细方位。
4.1 3G计划测验
经过串口软件取得的斗极定位信息如下:
图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秒。后台服务器程序显现音讯:
图8 斗极信息3G服务器端显现
从图中能够看到与串口通讯软件显现音讯共同,验证了体系的可用性和安稳性。
4.2 2G计划测验
相同再次运用串口通讯软件获取GLL音讯:
图9斗极信息串口软件显现
后台服务器程序显现音讯:
图10 斗极信息2G服务器端显现
从图中能够看出与串口通讯软件显现音讯共同,验证了2G计划的可行性。
为了验证定位的准确性,翻开地球在线(http://www.earthol.com/),输入当时的经纬度信息,检查定位状况。
图11 斗极信息定位测验
如图所示,斗极定位的方位为A12号楼,而笔者地点的方位为图中蓝色符号地点的A10号楼,差错在30米左右,因为免费版别的goole地图其官方声称差错在50米以内,所以本次实验的差错在合理范围内,标明依据斗极BDM100模块的定位终端运转成功。
结 语
斗极卫星定位体系作为我国自主研发的全球卫星定位体系在满意军事用处的一起,也在不断的赶紧民用化进程,本文规划了两种计划处理家庭监护中方位定位的问题,其间3G计划不只能够传输方位信息,也为今后传输各种身体信息,环境信息供给了接口和可扩展的空间。2G计划的长处在于其功用安稳,本钱较低,对应具有单一需求的用户会是一个很好的挑选。这两种计划规划合理,功用安稳,对其它工程规划具有必定参考价值。