跳到主要内容

M302 4G GPS定位TCP发送(停产)

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

一、本例程实现功能

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

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

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

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

三、模块介绍

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

四、接线图

layout

注意:ML302其他没用的引脚可以不用接。

五、材料清单

名称推荐购买链接(或者您可以自己制作)模块/芯片硬件资料下载
ML302模块购买链接(模块型号:ML302-G全网通版,如果不需GPS功能可以不带G,并按照实际需求购买合适的中国移动物联网sim套餐卡,另外根据需求购买4G和GPS天线)下载地址
声明:这里推荐的购买链接仅供参考,您完全可以去其他商家或渠道购买,只要功能相似即可,如果需要更低的成本建议自己开发硬件模块或定制。

product0

六、完整代码

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
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

实际接线图result0如下

实测经验总结:

  • 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参数中按上述配置即可。

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