10 GNSS定位
作者:李源龙 | 最后修改:2026-04-01
一、演示功能概述
本篇文档主要是讲解了 iRTU 的参数设置的 GNSS 定位功能
二、准备硬件环境
准备一块 Air780EGG 核心板:点击购买

三、准备软件环境
1.烧录工具:Luatools 工具
2.Air780EGG 烧录需要的 irtu 固件:固件版本
3.tcp 服务器测试地址:https://iot.luatos.com/#/page6/netlab。 详细使用说明参考:合宙 TCP/UDP web 测试工具使用说明
4.GNSS 纠偏网站:https://docs.openluat.com/file/GPS-Offset.html
四、功能选项讲解
4.1 GNSS 功能的开启和关闭
1.功能解释:主要是开启 GNSS 功能或者是不开启,默认是关闭状态,也就是默认不启动 GNSS
2.举例:

4.2 串口 ID
1.功能解释:GNSS 绑定的串口号 ID,默认串口 2,780EGG 的 GNSS 默认是连接串口 2
2.举例:

4.3 波特率
1.功能解释:GNSS 绑定的串口波特率,默认 115200,780EGG 的 GNSS 默认波特率是 115200
2.举例:

4.4 上报间隔
1.功能解释:定位成功之后,向服务器发送的数据频率,如果关闭了 GNSS 之后,则不会发送。单位:秒,该功能只有在定位成功之后是否关闭 GNSS 为否的时候才会一直上传。如果定位成功之后是否关闭 GNSS 为是的话,会发送定位消息,然后关掉 GNSS,就没办法一直上传到服务器了。默认 5 秒上报一次
2.举例:

4.5 GNSS 打开的时间
1.功能解释:GNSS 打开的时间,填 0 的话为一直开启,单位:秒。如果为一直开启的状态,定位成功之后是否关闭 GNSS 选项和 GNSS 定时开启时间功能都不能使用。默认值 0
2.举例:

4.6 定位成功是否关闭 GNSS
1.功能解释:定位成功之后,是否关掉 GNSS,该功能主要是搭配 GNSS 打开的时间功能使用,有两种使用场景,
场景 1:对功耗有需求,定位成功之后,直接关掉 GNSS,这个时候可以选择是。
场景 2:开启一段时间的定位,定位成功持续根据上报间隔上报经纬度消息,时间到了之后自动关掉 GNSS,这个时候可以选择否。
默认是。
2.举例:

4.7 采集方式
1.功能解释:触发采集是指使用 780EGG 内部的 Gsensor,10 秒内触发 5 次为运动状态,如果触发了运动状态则打开 GNSS。 连续采集是正常按照打开 GNSS 的时间去操作 GNSS。
2.举例:

4.8 GNSS 定时开启时间/震动触发采集间隔时间
1.功能解释:GNSS 定时开启时间功能是点击连续采集会展示,震动触发采集间隔时间功能是点击触发采集会展示
GNSS 定时开启时间:这个功能主要是定时打开 GNSS,多长时间开启一次 GNSS,例如设置为 60 秒的话,每隔 60 秒会去进行一次 GNSS 的开启,然后定位。单位:秒。该功能在 GNSS 打开的时间为 0 一直开启的模式无效。
震动触发采集间隔时间:这个功能主要是作用是 Gsensor 在触发了 10 秒 5 次的运动检测之后,进行 GNSS 定位,在下一次可以进行运动检测的时间,单位:秒。例如设置为 500 秒的话,在第一次触发了运动检测完成 GNSS 的定时开启定位成功上报位置信息之后,需要等待 500 秒才可以进行下次的运动检测,期间触发了运动检测不会生效。
2.举例:
GNSS 定时开启时间

震动触发采集间隔时间:

4.9 上报通道
1.功能解释:GNSS 消息上报到哪个网络通道,默认通道 1
2.举例:

4.10 上报内容
1.功能解释:GNSS 消息上报内容,目前提供了 rmc,gga,还有 vtg 的内容,可以多选,也可以单独选择。还提供了自定义编程的方式,可以自行编写发送内容。
2.举例:
rmc
内容解释:
{
-- 参数含义:地面航向;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:地面航向,单位为度,从北向起顺时针计算;
course=344.9920044,
-- 参数含义:是否定位成功;
-- 数据类型:boolean;
-- 取值范围:true/false;
-- 注意事项:true定位成功,false定位丢失;
valid=true,
-- 参数含义:纬度;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:纬度, 正数为北纬, 负数为南纬;
lat=3434.81860,
-- 参数含义:经度;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:经度, 正数为东经, 负数为西经;
lng=11350.40527,
-- 参数含义:磁偏角;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:磁偏角,固定为0;
variation=0,
-- 参数含义:地面速度;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:单位为"节";
speed=0.2110000,
-- 参数含义:年份;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:无;
year=2025,
-- 参数含义:月份;
-- 数据类型:number;
-- 取值范围:1-12;
-- 注意事项:无;
month=1,
-- 参数含义:天;
-- 数据类型:number;
-- 取值范围:1-31;
-- 注意事项:无;
day=5,
-- 参数含义:小时;
-- 数据类型:number;
-- 取值范围:0-23;
-- 注意事项:无;
hour=7,
-- 参数含义:分钟;
-- 数据类型:number;
-- 取值范围:0-59;
-- 注意事项:无;
min=23,
-- 参数含义:秒;
-- 数据类型:number;
-- 取值范围:0-59;
-- 注意事项:无;
sec=20,
}


vtg
内容解释:
{
-- 参数含义:速度;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:英里/小时;
speed_knots=0,
-- 参数含义:真北方向角;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:无;
true_track_degrees=0,
-- 参数含义:磁北方向角;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:无;
magnetic_track_degrees=0,
-- 参数含义:速度;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:千米/小时;
speed_kph=0
}


gga
内容解释:
{
-- 参数含义:经度;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:正数为东经, 负数为西经;
longitude=11350.39844,
-- 参数含义:差分校正时延;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:单位为秒;
dgps_age=0,
-- 参数含义:海平面分离度, 或者为海拔;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:单位是米;
altitude=86.4000015,
-- 参数含义:水平精度因子;
-- 数据类型:number;
-- 取值范围:0.00 - 99.99,不定位时值为 99.99;
-- 注意事项:无;
hdop=0.5940000,
-- 参数含义:椭球高;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:无;
height=-13.6999998,
-- 参数含义:定位状态标识;
-- 数据类型:number;
-- 取值范围:0 - 无效,1 - 单点定位,2 - 差分定位;
-- 注意事项:无;
fix_quality=1,
-- 参数含义:参与定位的卫星数量;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:无;
satellites_tracked=22,
-- 参数含义:纬度;
-- 数据类型:number;
-- 取值范围:无特别限制;
-- 注意事项:正数为北纬, 负数为南纬;
latitude=3434.79688
}


自定义
内容解释:
可以自行根据 exgnss 接口,组合自己想发送的定位消息:exgnss-api
内容格式和数据流还有任务是一样的 function end
例如:
获取了 rmc 的消息和是否定位成功的消息,然后放入表里面转换成 json
function
local fix=exgnss.is_fix()
local rmc=exgnss.rmc(0)
local sendtable={fix=fix,lng=rmc.lng,lat=rmc.lat}
log.info("JS",json.encode(sendtable,"%5f"))
return json.encode(sendtable,"%5f")
end


4.11 GNSS 功能示例
1.连续采集,每 60 秒开启一次 GNSS 定位,打开 GNSS 的时间限制为 40 秒,定位成功发送定位消息到 tcp 服务器,然后关闭 GNSS。


2.连续采集,每 60 秒开启一次 GNSS 定位,打开 GNSS 的时间限制为 40 秒,定位成功发送定位消息到 tcp 服务器,然后每 10 秒发送一次消息到服务器,40 秒之后关掉 GNSS


3.连续采集,常开 GNSS,定位成功之后每 10 秒发送一次定位数据到服务器

4.触发采集,检测到 10 秒内触发 5 次震动检测为运动模式,打开 GNSS 的时间限制为 40 秒,定位成功发送定位消息到 tcp 服务器,然后每 10 秒发送一次消息到服务器,40 秒之后关掉 GNSS。触发完之后,500 秒之后才能再次触发运动检测。


4.12 打开 GNSS 指令
1.指令:rrpc,gnssopen
2.解释:该功能主要用于关闭指令之后的开启 GNSS 功能,需要搭配网页配置使用,单独发送指令无作用。
3.返回值示例:rrpc,gnssopen,OK
4.13 关闭 GNSS 指令
1.指令:rrpc,gnssclose
2.解释:该功能主要用于关闭 GNSS,包括定时发送的消息,运动检测功能。
3.返回值示例:rrpc,gnssclose,OK
4.14 获取 GNSS 定位信息
1.指令:rrpc,gnssmsg
2.解释:该功能主要用于获取 GNSS 的定位信息内容,该内容为网页配置的上报内容。
3.返回值示例:rrpc,gnssmsg,网页配置定义的内容
五、总结
本文演示如何在 Air780EGG 核心板上面,用 irtu 固件,展示了 GNSS 定位的功能。