用Lua低代码编程轻松实现EC800 4G GPS定位TCP发送

96 篇文章 0 订阅
67 篇文章 0 订阅
本文介绍了如何使用FlexLua进行IoT硬件开发,特别是通过EC800M4G模块实现GPS定位并与服务器通过TCP通信。文章详细说明了如何配置TCP连接、GPS功能的使用以及卫星定位系统的优化,包括AGPS功能对定位速度的影响和坐标系转换的注意事项。
摘要由CSDN通过智能技术生成

本教程来自 FlexLua 官网,降低 IoT 硬件开发难度,零门槛 Lua 低代码编程技术开发 IoT 硬件。


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


一、本例程实现功能

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

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

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

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

三、模块介绍

模组必须是 EC800M 型号才支持 GPS,并且同时支持北斗导航系统,双系统导航有利于增加定位精度和速度,模块会自动开启双系统导航,开发者无需关心。

四、接线图

654801ab97aa24f2ccfeb9615adec0aa.jpeg

注意1:EC800 其他没到的引脚可以不用接。

注意2:上图中虽然是ML302,但和EC800完全兼容。

五、材料清单

  • EC800M 4G 模块(带GNSS定位)

6320dd3554ccb0bf94b89a65de1e3060.jpeg

六、完整代码

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

--设置Cat1模块占用TX0、RX0、D5、D6引脚
--tcp服务器IP:"47.92.146.210" 端口号:8888
--心跳包间隔时间0秒(不使用心跳机制)。如果需要使用请在ApiDoc文档中查阅关于LIB_Cat1TcpUdpEC800Config函数的p8参数详细介绍
--TCP Client模式,如果要使用UDP,将"TCP"改成"UDP"即可
--开启GPS功能,如果需要使用请在ApiDoc文档中查阅关于LIB_Cat1TcpUdpEC800Config函数的p10参数详细介绍
LIB_Cat1TcpUdpEC800Config("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_Cat1TcpUdpEC800Send(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查询。

实测经验总结:

  • 开启AGPS模式后,冷启动时GPS首次定位搜星时间则减少很多
  • 定位成功率及定位速率:室外开阔地带 > 楼宇边缘 > 阳台(半封闭) > 室内(几乎不可能定位)
  • 天线定位性能:车载GPS天线 > GPS有源陶瓷天线 > 无源FPC软天线

坐标系转换(需注意):

由于定位模块设备输出的经纬度定位信息的坐标系为WGS84国际标准,所以在不同地图中需要转换成对应的坐标系。例如使用百度地图时,需要将WGS84坐标系转换为BD09坐标系;用国内其他地图时,需要将WGS84坐标系转换为GCJ-02坐标系。如果不进行这些转换会出现定位偏差多则一两公里的问题。

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

  • "NO_GPS":不开启GPS
  • "NORMAL_GPS": 开启GPS,但不使用AGPS功能
  • "AUTO_AGPS"::开启GPS和AGPS,并且每隔4个小时后如果再次重新上电调用LIB_Cat1TcpUdpConfig会耗费下载星历数据的流量

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

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

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值