ML302 GPS定位并TCP发送定位信息

  • 一、本例程实现功能
  • 二、 Core提供的TCP/UDP功能介绍
  • 三、模块介绍
  • 四、接线图
  • 六、完整代码
  • 七、LIB_Cat1TcpUdpConfig初始化函数中P10 GPS参数的介绍

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官网链接

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

  1. 天地图之定位信息详解

    最近的项目涉及到百度地图的使用,项目组通知使用天地图替代百度地图,一个原因是天地图是国家测绘地理信息局建设的,企业可以使用其公众版本进行开发以提供相关的地图信息服务,较其他地图具有权威性,当然天地图提 ...

  2. GPS卫星时钟服务器使用详解

    GPS卫星时钟服务器使用详解 因为分布式系统使用分布式算法,所以它的同步机制比集中式系统更为复杂.在集中式系统中能够做到的,在某一位置上能集收到系统的所有信息,然后由某些进程检测这些信息,再做出同步决 ...

  3. Flutter开发之iOS后台定位开发详解

    Flutter开发之iOS后台定位开发详解 需求目的 开发一个功能持续获取用户的位置发送给后端,PC端会根据后端传来的移动端发送的位置信息,来绘制使用者的运动轨迹. 实现需求 是否实现 后台定位 ✅ ...

  4. GPS授时服务器工作原理详解

    GPS授时服务器工作原理详解 GPS授时服务器工作原理详解 目前计算机网络中各主机和服务器等网络设备的时间基本处于无序的状态.随着计算机网络应用的不断涌现,计算机的时间同步问题成为愈来愈重要的事情.以 ...

  5. HTTP协议的头信息详解

    HTTP协议的头信息详解 http://blog.csdn.net/guoguo1980/archive/2008/07/14/2649658.aspx HTTP协议的头信息详解 HTTP(Hyper ...

  6. QT快速入门、三点求圆心实现详解

    在编程中,会经常用到数学计算,所以C++将常用的数学计算,例如求正余弦等,封装成函数(正是我们在3.2 数学计算中学习到的),我们只需要写入简单的语句就可以执行所需要的功能,这正是函数的意义.在这一章 ...

  7. 窗口发送消息参数详解

    窗口发送消息参数详解 //    窗口.发送消息    函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果 中文函数原型: 发送消息(hwnd,msg ...

  8. Windows 窗口发送消息参数详解

    窗口发送消息参数详解 // 窗口.发送消息 函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果中文函数原型: 发送消息(hwnd,msg,wparam ...

  9. php 文件头部(header)信息详解

    有关php文件头部信息(header)的详细介绍,是脚本学堂见过的最详细的一篇. php文件头信息详解. 1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* ...

最新文章

  1. Socket编程实战
  2. java inputstream类_Java高级[7]:DataInputStream相关类的使用
  3. mongodb 输出数组字段_JMeter之Groovy对MongoDB操作
  4. 汇编怎么输入_一位过来人的嵌入式汇编语言学习经验
  5. nc 探测端口_防盗报警探测器的几种防拆接线方式,附接线图
  6. Selenium基础知识
  7. java io读取文件夹_JavaIO利用迭代读取文件夹所有目录及文件
  8. 前端学习(3054):vue+element今日头条管理-状态展示处理
  9. 送一点GMail的邀请
  10. UNIX网络编程读书笔记:套接口选项
  11. java 写oracle clob_Java将数据写入Oracle的Clob字段中
  12. Freescale mx27 DDR 初始化代码分析
  13. 基于MATLAB的单相电压型逆变电路,基于MatlabSimulink_的电压型单相全桥逆变电路.doc...
  14. (附源码)基于Java SpringBoot的电影院管理系统设计与实现 毕业设计 011633
  15. 【数学建模竞赛指南】对大学生性价比超高的数学建模竞赛
  16. canvas实现 行人 走路的动画(完整实现)
  17. 纸质版表格怎么转换成电子版表格
  18. spring配置文件中的p和c命名空间的使用
  19. c++ bind函数
  20. 简单舒服新UI装逼制作神器微信小程序源码下载支持多种流量主

热门文章

  1. 4、乐趣国学—“满招损,谦受益。”
  2. 电子计算机奏出美妙的交响改为把字句,北师大版三年级下册语文的期中试卷
  3. ANSYS | 螺栓模拟
  4. 阿里云创始人王坚:别人可以背弃理想,我不可以
  5. oracle幂函数运算公式,幂函数公式_幂的运算法则公式14个
  6. SpringBoot+Vue博客项目中遇到的坑
  7. 重写Github的TreeTableView库实现定制显示子节点
  8. VRCHAT模型上传常见问题汇总
  9. RFID标签无法读取的原因有哪些
  10. Google开源的Deep-Learning项目word2vec处理中文