使用Air780EGH核心板,本示例主要是利用exgnss库,实现了几种不同的应用场景,
第一种场景是:正常模式,第一步先是通过tcp_client_main文件连接服务器,然后第二步模块会配置GNSS参数,开启GNSS应用,第三步会开启一个60s的定时器,定时器每60s会打开一个60sTIMERRORSUC应用,第四步定位成功之后关闭GNSS,然后获取rmc获取经纬度数据,发送经纬度数据到服务器上。
第二种场景是:低功耗模式,第一步先是通过tcp_client_main文件连接服务器,然后第二步模块会配置GNSS参数,开启GNSS应用,第三步会开启一个60s的定时器,定时器每60s会进入正常模式,打开一个60sTIMERRORSUC应用,第四步定位成功之后关闭GNSS,然后获取rmc获取经纬度数据,发送经纬度数据到服务器上,进入低功耗模式。
第三种场景是:PSM+模式,唤醒之后第一步是配置GNSS参数,开启GNSS应用,第二步定位成功之后关闭GNSS,然后获取rmc获取经纬度数据,拼接唤醒信息和经纬度信息,连接服务器,然后把数据发送数据到服务器上,配置休眠唤醒定时器 ,进入飞行模式,然后进入PSM+模式。
第四种场景是:三轴加速度的应用场景,第一步先是通过tcp_client_main文件连接服务器,第二步配置GNSS参数,打开内部加速传感器,设置防抖和中断模式,关于中断触发提供了两种方案,有效震动模式和持续震动检测模式,第三步检测到有效震动或者持续震动后,打开GNSS,每隔5s获取rmc获取经纬度数据,发送经纬度数据到服务器上。
1、Air780EGH核心板一块
2、TYPE-C USB数据线一根
3、gnss天线一根
4、Air780EGH核心板和数据线的硬件接线方式为
Air780EGH核心板通过TYPE-C USB口供电;
TYPE-C USB数据线直接插到核心板的TYPE-C USB座子,另外一端连接电脑USB口;
1、Luatools下载调试工具
1、搭建好硬件环境
2、通过Luatools将demo与固件烧录到核心板中
3、烧录好后,板子开机将会在Luatools上看到如下打印:
(1) 第一种场景演示: 打开GNSS应用
[2025-08-13 17:52:14.073][000000000.420] I/user.全卫星开启
[2025-08-13 17:52:14.105][000000000.420] I/user.agps开启
连接服务器成功回复:
[2025-08-13 17:52:16.557][000000006.653] I/user.tcp_client_main_task_func libnet.connect success
定位成功发送数据到服务器:
[2025-08-13 17:52:34.288][000000024.791] I/gnss Fixed 344787143 1141919779
[2025-08-13 17:52:34.350][000000024.854] I/user.exgnss.statInd@1 true 2 normal 60 36 nil function: 0C7EFAA8
[2025-08-13 17:52:34.367][000000024.855] I/user.exgnss.statInd@2 true 3 libagps 20 2 nil nil
[2025-08-13 17:52:34.943][000000025.448] I/user.exgnss.timerFnc@1 2 normal 60 36 1
[2025-08-13 17:52:34.961][000000025.448] I/user.TAGmode1_cb+++++++++ normal
[2025-08-13 17:52:34.973][000000025.449] I/user.nmea rmc {"variation":0,"lat":3447.8713379,"min":52,"valid":true,"day":13,"lng":11419.1972656,"speed":1.0460000,"year":2025,"month":8,"sec":34,"hour":9,"course":15.3769999}
[2025-08-13 17:52:34.984][000000025.450] I/user.exgnss.close 2 normal 60 function: 0C7EFAA8
[2025-08-13 17:52:34.993][000000025.451] I/user.exgnss.timerFnc@2 3 libagps 20 2 nil
[2025-08-13 17:52:35.010][000000025.452] I/user.DATA gnssnormal {"lat":3447.871338,"lng":11419.197266}
[2025-08-13 17:52:35.026][000000025.453] I/user.tcp_client_main_task_func libnet.wait true true nil
[2025-08-13 17:52:35.070][000000025.574] I/user.tcp_client_sender.proc send success
后续是循环这个操作,每60秒GNSS定位一次,每次定位成功后,通过TCP发送给服务器。
(2) 第二种场景低功耗模式,第三种场景PSM+场景,可以直接用Air9000搭配看功耗分析,配合服务器看接收日志,目前没办法用USB线通过luatools看日志。
(3)、三轴加速度的应用场景: 联网成功连接服务器:
[2025-08-13 18:08:50.407][000000006.046] D/mobile NETIF_LINK_ON -> IP_READY
[2025-08-13 18:08:50.442][000000006.047] I/user.tcp_client_main_task_func recv IP_READY
[2025-08-13 18:08:50.469][000000006.048] D/socket connect to 112.125.89.8,47855
[2025-08-13 18:08:50.489][000000006.068] D/mobile TIME_SYNC 0
[2025-08-13 18:08:50.506][000000006.086] I/user.tcp_client_main_task_func libnet.connect success
有效震动触发场景开启GNSS:
[2025-08-13 18:11:01.380][000000137.275] I/user.int 1
[2025-08-13 18:11:01.405][000000137.276] I/user.table.remove 0
[2025-08-13 18:11:01.417][000000137.276] I/user.tick 136 false true
[2025-08-13 18:11:01.433][000000137.276] I/user.tick2 0 0 0 11 136
[2025-08-13 18:11:01.866][000000137.758] I/user.int 0
[2025-08-13 18:11:02.005][000000137.893] I/user.int 1
[2025-08-13 18:11:02.021][000000137.893] I/user.table.remove 0
[2025-08-13 18:11:02.031][000000137.894] I/user.tick 137 false true
[2025-08-13 18:11:02.044][000000137.894] I/user.tick2 0 0 11 136 137
[2025-08-13 18:11:02.474][000000138.376] I/user.int 0
[2025-08-13 18:11:02.741][000000138.635] I/user.int 1
[2025-08-13 18:11:02.755][000000138.635] I/user.table.remove 0
[2025-08-13 18:11:02.765][000000138.636] I/user.tick 138 false true
[2025-08-13 18:11:02.780][000000138.636] I/user.tick2 0 11 136 137 138
[2025-08-13 18:11:03.363][000000139.253] I/user.int 0
[2025-08-13 18:11:03.537][000000139.438] I/user.int 1
[2025-08-13 18:11:03.555][000000139.438] I/user.table.remove 0
[2025-08-13 18:11:03.561][000000139.439] I/user.tick 139 false true
[2025-08-13 18:11:03.574][000000139.439] I/user.tick2 11 136 137 138 139
[2025-08-13 18:11:04.020][000000139.921] I/user.int 0
[2025-08-13 18:11:04.586][000000140.478] I/user.int 0
[2025-08-13 18:11:05.075][000000140.972] I/user.int 0
[2025-08-13 18:11:05.202][000000141.093] I/user.tcp_client_main_task_func libnet.wait true false nil
[2025-08-13 18:11:05.626][000000141.528] I/user.int 0
[2025-08-13 18:11:06.145][000000142.035] I/user.int 1
[2025-08-13 18:11:06.171][000000142.035] I/user.table.remove 11
[2025-08-13 18:11:06.184][000000142.036] I/user.tick 141 true true
[2025-08-13 18:11:06.192][000000142.036] I/user.tick2 136 137 138 139 141
[2025-08-13 18:11:06.200][000000142.036] I/user.vib xxx
[2025-08-13 18:11:06.210][000000142.037] I/user.nmea is_open false
[2025-08-13 18:11:06.217][000000142.038] I/user.exgnss.open 1 vib nil function: 0C7EEE58
[2025-08-13 18:11:06.228][000000142.038] Uart_ChangeBR 1338:uart2, 115200 115203 26000000 3611
[2025-08-13 18:11:06.240][000000142.039] I/user.全卫星开启
[2025-08-13 18:11:06.249][000000142.039] I/user.debug开启
[2025-08-13 18:11:06.262][000000142.039] D/gnss Debug ON
[2025-08-13 18:11:06.277][000000142.040] I/user.agps开启
触发之后每5s发送一次经纬度数据到服务器:
[2025-08-13 18:13:51.149][000000307.042] I/user.TAGmode1_cb+++++++++ nil
[2025-08-13 18:13:51.152][000000307.044] I/user.nmea rmc {"variation":0,"lat":3447.8745117,"min":13,"valid":true,"day":13,"lng":11419.1962891,"speed":0.0730000,"year":2025,"month":8,"sec":50,"hour":10,"course":152.6990051}
[2025-08-13 18:13:51.154][000000307.044] I/user.DATA gnssnormal {"lat":3447.874512,"lng":11419.196289}
[2025-08-13 18:13:51.157][000000307.046] I/user.tcp_client_main_task_func libnet.wait true true nil
[2025-08-13 18:13:51.241][000000307.129] I/user.tcp_client_sender.proc send success
持续震动检测模式,触发开始开启GNSS应用:
[2025-08-13 18:25:24.809][000000358.919] I/user.int 1
[2025-08-13 18:25:24.822][000000358.921] I/user.x 0.35156250000000g y 0.31933593800000g z 1.9990234380000g
[2025-08-13 18:25:24.833][000000358.922] I/user.nmea is_open false
[2025-08-13 18:25:24.840][000000358.922] I/user.exgnss.open 1 vib nil function: 0C7EEEE0
[2025-08-13 18:25:24.850][000000358.923] Uart_ChangeBR 1338:uart2, 115200 115203 26000000 3611
[2025-08-13 18:25:24.863][000000358.924] I/user.全卫星开启
[2025-08-13 18:25:24.875][000000358.924] I/user.debug开启
[2025-08-13 18:25:24.886][000000358.924] D/gnss Debug ON
[2025-08-13 18:25:24.900][000000358.925] I/user.agps开启
触发之后每5s发送一次经纬度数据到服务器:
[2025-08-13 18:25:32.220][000000366.338] I/user.exgnss.timerFnc@1 1 vib nil nil 1
[2025-08-13 18:25:32.225][000000366.339] I/user.TAGmode1_cb+++++++++ vib
[2025-08-13 18:25:32.233][000000366.340] I/user.nmea rmc {"variation":0,"lat":3447.8679199,"min":25,"valid":true,"day":13,"lng":11419.1962891,"speed":0.2490000,"year":2025,"month":8,"sec":32,"hour":10,"course":175.2010040}
[2025-08-13 18:25:32.239][000000366.341] I/user.DATA gnssnormal {"lat":3447.867920,"lng":11419.196289}
[2025-08-13 18:25:32.242][000000366.342] I/user.tcp_client_main_task_func libnet.wait true true nil
[2025-08-13 18:25:32.353][000000366.473] I/user.tcp_client_sender.proc send success