快速实现ML302 GPS+4G发送定位信息详解

ML302
4G模组的GPS定位功能可以配合TCP/UDP通信使用,也可以配合HTTP、MQTT通信使用,在本篇章中我们以TCP为例讲解实现方法,至于UDP、HTTP和MQTT则基本相同。

一、本例程实现功能

Core通过ML302 4G Cat1模块和指定的服务器建立TCP连接,每当获取到定位信息(经纬度,海拔,卫星数量等)后,通过TCP发送给服务器。

注意:Core提供的GPS功能须在和服务器建立TCP连接上后才可获取定位信息,同理UDP/HTTP也是,这样做的目的是因为只有和服务器建立连接后,模块的定位信息获取的才有意义,所以本方案比较适用于在线实时的定位跟踪系统,而不适合离线定位。至于离线定位方案,在shineblink.com官网中已提供成本更低的UBLOX
GPS离线定位方案,感兴趣的可以去查阅。

二、 Core提供的TCP/UDP功能介绍

关于ML302模块的TCP/UDP通信,已在4G TCP/UDP模块中讲述过了,这里就不赘述了。

三、模块介绍

模组必须是ML302-GNML型号才支持GPS,并且同时支持北斗导航系统,双系统导航有利于增加定位精度和速度,模块会自动开启双系统导航,开发者无需关心。
注意2:如果您使用的4G天线满足DCS1800频段(17101785MHz),那么在没有4G网络的环境时,模块会自动接入2G网络,这样就极大扩展了其应用范围。如果您只想用2G网络不用4G网络,可以将4G天线换成满足GSM900(880915MHz)频段的天线。

四、接线图

在这里插入图片描述

六、完整代码

Core通过ML302 4G模块和指定的服务器建立TCP连接,每当获取到定位信息后,发送给服务器。

--设置Cat1模块占用TX0、RX0、D5、D6引脚
--tcp服务器IP:"47.92.146.210" 端口号:8888
--心跳包间隔时间0(不使用心跳机制)。如果需要使用请在ApiDoc文档中查阅关于LIB_Cat1TcpUdpConfig函数的p8参数详细介绍
--TCP Client模式,如果要使用UDP,将"TCP"改成"UDP"即可
--开启GPS功能,如果需要使用请在ApiDoc文档中查阅关于LIB_Cat1TcpUdpConfig函数的p10参数详细介绍
LIB_Cat1TcpUdpConfig("UART0","D5","HIGH","D6","HIGH","47.92.146.210",8888,0,"TCP","AUTO_AGPS")
--开始大循环
while(GC(1) == true)
do
    --查询是否解析到GPS/北斗定位数据(搜到星后大概每4秒能获取一个定位信息)
    flag,lo_f,la_f,al_f,utc,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16 = LIB_Cat1GpsQuery()
    if flag == 1 then
        --将读取到的经度、纬度、海拔、UTC时间、以及卫星数量发送给服务器
        LIB_Cat1TcpUdpSend(LIB_StrToTab(string.format("longtitude:%.3f latitude:%.3f altitude:%.1fm UTC:%d nsat:%s", lo_f,la_f,al_f,utc,r16)))
    end
end

实际接线图如下
在这里插入图片描述
实测经验总结:

NORMAL_GPS模式时,冷启动时GPS首次定位搜星时间较长,即使在开阔的地方也需30~60秒定位时间
开启AGPS模式后,冷启动时GPS首次定位搜星时间则减少很多,只需10~20秒 定位成功率及定位速率:室外开阔地带 > 楼宇边缘 >
阳台(半封闭) > 室内(几乎不可能定位) 天线定位性能:车载GPS天线 > GPS有源陶瓷天线 > 无源FPC软天线

坐标系转换(需注意):
由于定位模块设备输出的经纬度定位信息的坐标系为WGS84国际标准,所以在不同地图中需要转换成对应的坐标系。例如使用百度地图时,需要将WGS84坐标系转换为BD09坐标系;用国内其他地图时,需要将WGS84坐标系转换为GCJ-02坐标系。如果不进行这些转换会出现定位偏差多则一两公里的问题。开发者可以使用 https://tool.lu/coordinate/ 这个网络在线工具做一个简单的验证。

七、LIB_Cat1TcpUdpConfig初始化函数中P10 GPS参数的介绍

“NO_GPS”:不开启GPS
“NORMAL_GPS”: 开启GPS,但不使用AGPS功能
“AUTO_AGPS”::开启GPS和AGPS,并且每隔4个小时后如果再次重新上电调用LIB_Cat1TcpUdpConfig会耗费下载星历数据的流量(5KB)
“FORCE_AGPS”::开启GPS和AGPS,并且每次重新上电后调用LIB_Cat1TcpUdpConfig必定会耗费下载星历数据的流量(5KB),该模式适合套餐流量充足的或者追求快速定位的

AGPS介绍:利用4G模块的流量,从专用服务器上下载当前的星历数据,以加快模块冷启动(刚上电)时定位的速度。但缺点是每次冷启动下载星历数据需要耗费5KB的流量。

注意1:以上的讲解也同样适用于4G Http通信中的LIB_Cat1HttpConfig函数,如果您想使用Http通信而不是TCP/UDP通信,只需按照上面的讲解在LIB_Cat1HttpConfig函数的P10参数中按上述配置即可,详情可参考4G Http 通信。

注意2:以上的讲解也同样适用于4G MQTT通信中的LIB_Cat1MqttML302Config函数,如果您想使用MQTT通信而不是TCP/UDP通信,只需按照上面的讲解在LIB_Cat1MqttML302Config函数的P14参数中按上述配置即可,详情可参考4G Mqtt 通信。
更多详情请参看 shineblink.com官网链接

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值