焊板子、撸代码、写文章——LuatOS社群工程师们热火朝天的2022虎年春节写照。无论何时何处,心里总燃动着灵魂之舞,没有什么能阻挡真正的热爱!
今天特别带来乔帮主乔工关于合宙Air551G双频定位开发板的试用分享,一篇详实易懂的用心之作,尤其适合新上手的朋友们。
1
Air551G开发板试用分享
一、开箱
合宙挺给力,节前就拿到了这块Air551G开发板,板子制作的不错,和我其他的板子对比起来,感觉高级不少。
左边是Air551G,右边是我另外其他厂家一个型号的。
二、连线
美中不足的是,它的连接线是5针1.25mm的传感器接口,拿到后,可能没有合适的线(年前活动未能同步发出,年后有配套接线)。有的同学,直接把接头口给取下来,直接焊线了。
我手头刚好有6针的接头,剪断一根,削了一针变5针,刚刚好用。
然后把剪断的部分,对接上标准的杜邦线,方便接在其他开发板上使用。当然,如果本身就有对应的1.25接口,那更好了。
初次使用,看了说明书,可以当一个普通的串口设备使用,那就先直接用USB2TTL连接,进行调试好了。等弄清楚了,再上开发板也不迟。
Air551G开发板有五个引脚,其中VCC使用3.3V或者5V电源均可,GND接地,PPS暂时不用,RX、TX接其他设备的对应的TX、RX即可。
三、串口连接使用
这个开发板,串口波特率默认情况下,选择115200即可,打开串口,就能看到信息Biu Biu Biu的发过来了。
通过Air551G的手册,我们可以知道,它是主动上报信息的。通电后,就会自动通过串口上报获取到的定位相关信息。
收不到定位信息如何解决?
初次使用,如果简单了解过这些信息的格式,可能会郁闷:怎么没有成功定位啊,定位到的经纬度信息,怎么都是0呢?
这是因为,一个单纯的GPS定位模块,需要在室外使用,越开阔的地方越好。而我们常用的手机上使用了基站、WIFi等辅助定位,在室内也通常可以定位,但是在地下车库或者隧道里面,或者信号不好的地方,辅助也不给力,也不能定位了。
那就把Air551放到窗外即可:
不一会儿,串口收到的信息,就发生了变化,数字部分,丰富多了。
串口收到的这些信息,就是导航卫星发送的电文信息,也就是NMEA协议报文。
通常情况下,会包含如下的报文:
定位模块都会主动获取卫星定位系统的报文信息,然后通过串口上报。
上面的报文信息,会分为几类:
1)定位信息:**GGA,通常使用;
2)当前卫星信息:**GSA,一般可以忽略,调试需要;
3)推荐定位信息:**RMC;
4)地面速度信息:**VTG;
5)可见卫星信息:**GSV,一般可以忽略,调试需要。
如果是通过单一的卫星导航系统定位,则上面的**为对应卫星导航系统的标识,如果是多系统定位的话,那么1-4的**会是GN,5则为各卫星导航系统的标识。
卫星导航系统通用标识
GN:全球导航卫星系统GNSS;
GP:美国全球定位系统GPS;
GL:俄罗斯全球轨道导航卫星系统格洛纳斯GLONAS;
BD:中国的北斗卫星导航系统BDS;
GA:欧盟伽利略卫星导航系统GALILEO,全球覆盖,问题较多;
IRN:印度区域卫星导航系统IRNSS,范围较小,印度本土及周边、印度洋区域;
QZ:日本准天顶卫星导航系统QZSS,是美國GPS的輔助系統,主要服务日本,亦覆盖东亚、澳洲等地。
Air551G支持的卫星定位导航系统,包括:GPS、BDS、GLONAS、GALILEO、IRNSS等。在北京地区,GPS、BDS、GLONAS、GALILEO都能搜到对应的卫星,IRNSS没有见到过。
在上述的报文信息中,我们可以看到GP、GL、GA、BD等GSV信息,对应的就是当前位置,可见的各卫星导航系统的卫星信息。其中,我们可以看到有BDGSC,5开头的BDGSC,5,1至BDGSC,5,5,这个就是一组北斗导航卫星,当前有5颗能为我们提供服务。
但是,其中还有BDGSV开头的信息,这是因为卫星导航系统有不同的频段,提供差异性的服务,也包括系统升级和增强对不同接收端系统的兼容。
通过Air551G提供的资料,我们了解到,支持的北斗导航,包括:BD B1I、BD B1C、BD B2A、BD B2B等。
报文信息的具体资料,可以查看合宙提供的资料:
《 2_GK9701输入输出格式文档V1.0.pdf 》中关于NMEA协议部分的详细说明。
四、经纬度信息到地图坐标转换
以上报文信息中的GGA部分信息:
$GNGGA,063508.000,??53.35241,N,??638.40280,E,1,13,1.15,36.02,M,-5.15,M,,*58
E/W之前的为经度信息,N/S之前的为维度信息,GPS拿到的经纬度信息,需要经过转换两次后,才能在百度地图或者其他地图上使用。
地图坐标转换示例
假设取到的原始坐标为:
lng0=11626.27158
lat0=3954.85016
第一次转换为WGS84坐标系通用格式:
GPS模块经纬度换算说明,可参考网址:
http://www.gnss-module.com/news/47-cn.html
(Math.floor表示取整)
lng1_d=Math.floor(lng0/100) = 116
lng1_m= (lng0-lng1_d*100)/60 = 0.43786
lng1=lng1_d+lng1_m=116.43786
lat1_d=Math.floor(lat0/100) = 39
lat1_m= (lat0-lat1_d*100)/60 = 0.91417
lat1=lat1_d+lat1_m=39.91417
第二次转换为百度地图坐标系:
使用网页转换工具地图坐标系转换,参考网址:
https://tool.lu/coordinate/
通过上述转换工具,可以转换为各地图软件的坐标系;或者也可以在各地图开发者服务中申请对应的API接口。
使用上述网页进行转换时,记住我们要选择WGS84坐标系:
转换后的百度坐标地址为:
经度=116.45054049919501
维度=39.921605252645946
然后,我们去百度地图上,使用经纬度进行定位,看看是否准确:
该定位地址,就是我们原始的经纬度信息对应的实际百度地图位置。
五、NaviTrack基本使用
通过串口工具,能够正常收到Air551G的信息后,我们就可以使用NaviTrack工具来更有效的获取调试信息了。
先关闭串口工具,再打开NaviTrack,选择正确的串口和波特率,Connect后,界面如下:
注意:需要运行一段时间,且Air551G在室外,才能获得丰富的定位信息。
在以上界面中,各子窗口展示功能:
1)Navi CMD:用于给Air551G发送命令;
2)Track:表示每次输出经纬度坐标点在一个基准位置的散落情况;
3)Signal:表示各导航卫星的信号情况;
4)NAME info:对串口中的信息进行了整理输出,更便于查看分析;
5)Fix mode:修正模式;
6)Sky view:当前可见卫星一览。
如果Sky view中,没有显示到卫星,那么定位就不能进行,NAME info部分的经纬度信息,就会不显示或者显示为0,同时Singal部分也会没有信息。
六、指令发送:
在Navi CMD界面中,我们可以给Air551G发送指令。
重置设备指令示例
如果要重置设备,我们可以发送指令:
PGKC030,4,2
其中:030表示指令编号;4,2表示硬重启,也就是恢复到出厂模式。
在串口工具中,我们也可以发送该指令,但是其格式为完整格式:
$PGKC030,4,2*2A[CR][LF]
而Navi CMD会自动帮我们处理$和*后面的内容,并自动添加回车换行[CR][LF];*后面的2A,表示 $和*中间部分的BCC校验(异或校验)结果。
如果不了解如何进行BCC校验,可以通过网页进行计算。
BCC校验(异或校验)在线计算参考网址:
http://www.ip33.com/bcc.html
由此我们也可以知道,给Air551G发送指令,其格式为:
$PGKC指令编号,参数1,参数2,...,参数n*BCC校验码[CR][LF]
注意,其中的参数1~n,均为十六进制,BCC校验码,也为16进制。(10进制的10为16进制的A)。
我们还可以再分别尝试两条指令,用于查看只使用北斗导航和所有卫星导航的区别。
注意:在串口工具中,需要输入完整的指令;在Navi CMD中,只用输入$和*中间的部分即可。
只使用北斗导航示例
先试第一条,设置只使用北斗导航:
$PGKC121,0,8,0*39
执行该指令后,NaviTrack的NMEA info和Sky view界面会发生如下变化:
因为刚才执行的那一条指令,表示只使用L1的BD导航,所以现在只显示了北斗导航的卫星。
同样的,如果我们使用串口工具发送指令后,会看到如下返回:
可以看到,报文中,就只有BD的信息了。
注意:使用串口工具,一定要勾选尾部添加CRLF,否则指令无效。
使用所有卫星导航示例
我们在执行使用所有卫星导航指令后,上述界面中的卫星,又会变得多了起来。
$PGKC121,5,3F,3F*34
以上展示了基本的指令使用,在前面的《2_GK9701输入输出格式文档V1.0.pdf》中,有详细的指令说明,有需要可以仔细研读。
另外,出厂情况下,串口上报的信息会尽可能丰富,但是我们在实际使用中,如前面对报文简介所说的,很多只是调试使用,实际使用时不用。我们可以使用输出控制指令,设置需要输出哪些信息即可。
具体指令格式为:
实际上,9-21位的0,并不需要输入,我们只输入1-8位即可,1表示开启对应的输出,0表示关闭对应的输出。
GGA获取经纬度信息示例
在实际使用中,我们只需要通过GGA获取经纬度信息即可,那么发送的指令如下:
$PGKC242,0,0,0,1,0,0*2A
如果我们要把调试的信息都发出来,则使用如下的指令:
$PGKC242,1,1,1,1,1,1*2B
再次提醒:
在串口工具中,需要输入完整的指令;在Navi CMD中,只需要输入$和*之间的部分(不包含$和*)即可。
设置只输出GGA信息后,我们就可以使用其他开发板的串口来连接Air551G,通过串口读取即可。
到这里,我们了解了如何通过串口上报的报文,获取经纬度信息,以及通过发送对应的指令来控制Air551G的运行模式了。
后续通过合宙的其他LuatOS开发板,或者MicroPython类的开发板,都能非常方便的获取定位信息。再结合屏幕,就能够进行实际的定位展示了。
今天的分享就先到这里了,希望对大家有帮助,一起多交流~
全部0条评论
快来发表一下你的评论吧 !