GPS调试笔记Word文档格式.docx
《GPS调试笔记Word文档格式.docx》由会员分享,可在线阅读,更多相关《GPS调试笔记Word文档格式.docx(12页珍藏版)》请在冰点文库上搜索。
起初的时候由于读写信号线没能正确连接,导致数据不能通过串口传输过来,通过很长时间查找,也问了很多人最后是老师发现读写信号线出现了问题,这个小问题可让我查了好久才解决的,在下面的调试过程中自己也是从这里总结出来了经验,把每一步慢慢做好不能急功近利。
下面具体说一下这个问题:
问题就是在单片机、max232、GPS模块这三者的读写信号线之间的矛盾。
开始自己是按与单片机通讯来设置的线路,但是如果与单片机通讯,那么GPS和单片机的读写信号就应该交换,但是这样就不会与232进行通讯了,只有和单片机的读写信号线对应连接就可以了。
这个问题虽然解决了,但是想象中的数据怎么没有那,在实验室屋里就是怎么调也没有数据,还是老师指点这GPS是必须得在外边使用,在有建筑物遮挡的情况下是不能接收到信号的,这时又有新问题出现了没有电源啊,实验室里电源是好办了,但是在空旷的操场那里有电源啊,最后还是我的笔记本解决了这个问题(在后来又换上了电池),用USB供电就轻松解决了电力问题,拿着笔记本在拿上两个板凳就到外边做实验是,今年的雪特别大,那几天还偏赶上是大雪纷飞的时候,在雪中我们做着实验首先通过串口接收数据。
如图三串口界面截图:
(图三串口截图)
在串口中就可以成功接受到我们预期中的数据,下面是一部分串口采集的数据:
$GPGSA,A,2,30,26,14,,,,,,,,,,3.1,2.9,1.0*39
$GPRMC,092700.000,A,4355.3451,N,12633.8076,E,0.00,232.21,210310,,,A*6B
$GPVTG,232.21,T,,M,0.00,N,0.0,K,A*0D
$GPGGA,092701.000,4355.3451,N,12633.8076,E,1,03,2.9,172.7,M,15.6,M,,0000*50
$GPGSA,A,2,30,26,14,,,,,,,,,,3.1,2.9,1.0*39
$GPGSV,3,1,10,14,64,318,34,30,57,148,33,01,55,148,32,22,54,207,16*72
$GPGSV,3,2,10,12,53,080,,26,46,098,22,18,26,172,24,31,25,251,26*7B
$GPGSV,3,3,10,09,18,061,14,27,16,063,*7D
这样就有了GPS传送过来的数据,我们还用软件定位了一下天上的卫星,软件用的是“GpsViewer1.5”,蓝色卫星就是用于计算坐标的,三个或三个以上的蓝色卫星就可以计算出具体的经纬度信息,然后就可以通过经纬度查出我们的位置。
下面是GpsViewer软件界面如图四:
(图四GpsViewer界面)
这样就成功的看到天上卫星数量,在上面还可以清晰的看到模拟的卫星,有可见的和不可见还有时间和日期等等,经纬度也有明确的显示,这样就可以按着所传送的数据进行编程及其他计算了。
首先说明一下GPS传送过来的语句,这些语句是遵循NMEA0183协议下面对这些协议进行一下说明:
1、
GlobalPositioningSystemFixData(GGA)GPS定位信息
$GPGGA,<
1>
<
2>
3>
4>
5>
6>
7>
8>
9>
M,<
10>
11>
12>
*hh
<
UTC时间,hhmmss(时分秒)格式
纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
纬度半球N(北半球)或S(南半球)
经度dddmm.mmmm(度分)格式(前面的0也将被传输)
经度半球E(东经)或W(西经)
GPS状态:
0=未定位,1=非差分定位,2=差分定位,6=正在估算
正在使用解算位置的卫星数量(00~12)(前面的0也将被传输)
HDOP水平精度因子(0.5~99.9)
海拔高度(-9999.9~99999.9)
地球椭球面相对大地水准面的高度
差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)
2、
GPSDOPandActiveSatellites(GSA)当前卫星信息
$GPGSA,<
模式,M=手动,A=自动
定位类型,1=没有定位,2=2D定位,3=3D定位
PRN码(伪随机噪声码),正在用于解算位置的卫星号(01~32,前面的0也将被传输)。
PDOP位置精度因子(0.5~99.9)
VDOP垂直精度因子(0.5~99.9)
3、
GPSSatellitesinView(GSV)可见卫星信息
$GPGSV,<
…<
GSV语句的总数
本句GSV的编号
可见卫星的总数(00~12,前面的0也将被传输)
PRN码(伪随机噪声码)(01~32,前面的0也将被传输)
卫星仰角(00~90度,前面的0也将被传输)
卫星方位角(000~359度,前面的0也将被传输)
信噪比(00~99dB,没有跟踪到卫星时为空,前面的0也将被传输)
注:
信息将按照每颗卫星进行循环显示,每条GSV语句最多可以显示4颗卫星的信息。
其他卫星信息将在下一序列的NMEA0183语句中输出。
4、
RecommendedMinimumSpecificGPS/TRANSITData(RMC)推荐定位信息
$GPRMC,<
定位状态,A=有效定位,V=无效定位
地面速率(000.0~999.9节,前面的0也将被传输)
地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)
UTC日期,ddmmyy(日月年)格式
磁偏角(000.0~180.0度,前面的0也将被传输)
磁偏角方向,E(东)或W(西)
模式指示(仅NMEA01833.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)
5、
TrackMadeGoodandGroundSpeed(VTG)地面速度信息
$GPVTG,<
T,<
N,<
K,<
以真北为参考基准的地面航向(000~359度,前面的0也将被传输)
以磁北为参考基准的地面航向(000~359度,前面的0也将被传输)
地面速率(0000.0~1851.8公里/小时,前面的0也将被传输)
6、
GeographicPosition(GLL)定位地理信息
$GPGLL,<
通过这些说明就可以理解串口接受过来的数据,下面对一组RMC数据进行一下具体分析:
$GPRMC,044614.262,A,3148.4710,N,12138.6413,E,0.00,,171105,,*1E
N,12138.6413--N表示东经,东经121度38.6431分。
3148.4710--北纬31度48.4710分。
A--表示这次数据是有效的,如果是无效的显示V。
171105--表示是05年11月17号。
044614.262--表示格林威治时间04点46分14秒262毫秒,因为格林威治时间比北京时间慢8小时,所以对应的北京时间是下午12点。
E,0.00,,--E后面的是运动方向数据,正北方为0度,东方为90度,南方为180度,西方为270度。
两个,,之间是运动数据,因为模块此时没有运动,所以没有速度数据产生,它的单位是海里/小时。
数据在程序里加以处理就可以分析出经纬度、时间、卫星数、年、月、日等其他数据。
因为我们在应用时的需要,在开始编程时主要运用了GGA、GSV、RMC这三种语句格式进行数据分析。
在调试时用串口中断方式在中断中处理接收的数据,主要运用switchcase语句进行语句格式的查询,通过对上面语句分析可总结出:
“$”为语句起始标志,“,”为域名分隔符,“*”为校验识别符,其后面的两位数为校验和,代表“$”和“*”之间所有字符的按位异或值(不包括这两个字符),“/”为终止符,所有语句必须以它来结束。
利用这些标志在case语句中做出判断。
利用这些就可以把经纬度查询出来,在加上多组数据的验证就可以有较高的精度,从而确定我们的位置,通过上面那些数据就可以把经纬度进行处理从而得出可以用于软件定位的数据,通过4355.3451,N,12633.8076,E这个数据为例在经过运算就能把度、分、秒分析出来,分析如下4355.3451前边两位为度即为43°
,下面两位为分即为55′,小数点后需要换算为秒即为0.3451*60=20.706即为20.706″。
全部换算后即为43°
55′20.706″N,126°
33′48.456″E,通过这个数据在“Google地球”这个软件上就可以查询我们做实验时的地理位置,在下面图五输入界面输入经纬度。
(图五Google地球输入位置)
在上面输入43°
33′48.456″E我们是在学校风华碑附近做的实验,风华碑等建筑物清晰可见软件界面上还显示这附近的主要街道便于我们在实际地理位置上的查询,由于GPS精度有限,只能查询到这种程度的地图,但是这个经度已经可以满足我们的需要了,下面是我们查询后位置如图六地图画面:
(图六Google地球软件位置)
通过这个截图就可以具体的反映出我们的位置,这样我们通过这些数据就可以进行编程调试了。
在程序中主要是把串口接受的数据进行分析处理。
在处理时我要显示时间,这就要注意其中的格林威治时间与北京时间的转换。
在调试过程中主要是用液晶显示出了日期和时间主要用于数据调试、卫星数目作为参考、经纬度作为主要参数分析数据。
然后送去进行液晶显示,因为我以前调试过12864液晶,这次我为了便于调试使用了12864液晶采用串行通讯方式显示数据,在第一行左侧显示日期以日/月/年格式,右侧显示卫星数目,第二行时间以时:
分:
秒格式显示,第三行经度以开始显示数字后面显示经度方向,第四行显示纬度同经度一样,开始显示数字后面显示方向,如图五液晶显示模式:
(图五显示模式)
这样就把液晶显示内容和格式规划出来了,然后对GPS数据进行具体编程,在中断中处理这些数据,对“$”、“,”、“/”这些符号具体编程,然后对我们选中的数据模式进行选择,我们主要选择GGA、GSV、RMC这三种模式。
主要是用switch和case进行这些数据的分离选择,通过符号就可以找出串口传送过来的数据所在的数据段,然后在结合其他的标志性符号把具体的时间、日期、经纬度分析出来,这样就可以把分析出来的数据进行显示,下面是一组图片(图六)可以清晰展示出显示定位过程:
(图六显示流程)
这四个画面分别显示了开始、查询、等待、显示这样就把显示过程全部展示出来了。
这样初步的GPS定位信息就可以识别出来了,从液晶上可以直接观测到我们采集过来的数据,接下了就是通过GPS采集数据直接送到GSM发送出去,这是综合处理部分,各个原件还需要综合调试。