跳到主要内容

NEO-6M GPS经纬度/海拔/时间

一、本例程实现功能

通过NEO-6M GPS模块获取当地经纬度、海拔高度、以及获取GPS时间 (UTC),并通过 print() 函数在电脑串口调试终端打印输出。

二、 GPS使用说明

  • GPS模块默认每秒自动输出一次经纬度、海拔、UTC信息
  • GPS上电工作后大概需要1~3分钟(时间长短取决于信号好坏)的搜星定位准备工作,此阶段无数据输出
  • 如果希望提高搜星能力或者在室内定位,请将GPS模块的天线换成有源天线
  • 当GPS模块上的LED灯开始每秒闪烁一次时,说明GPS此时有数据正在输出

三、接线图

layout

四、材料清单

名称推荐购买链接(或者您可以自己制作)模块/芯片硬件资料下载
NEO-6M GPS模块NEO-6M模块购买链接下载地址
声明:这里推荐的购买链接仅供参考,您完全可以去其他商家或渠道购买,只要功能相似即可,如果需要更低的成本建议自己开发硬件模块或定制。

product

五、完整代码

--配置Core的USB口以虚拟串口模式工作,这样print()输出的内容就可以在电脑串口终端上显示了
LIB_UsbConfig("CDC")
--配置GPS模块开始工作,占用TX0和RX0引脚,默认每秒钟自动输出一组GPS数据
LIB_NEO6MConfig("UART0")
--开始大循环
while(GC(1) == true)
do
--查询是否解析到GPS数据
flag,lo,la,al,utc = LIB_NEO6MGetGpsData()
if flag == 1 then
--将读取到的经度、纬度、海拔、UTC时间打印输出
print(string.format("longtitue:%f latitue:%f altitue:%.0fm UTC:%d", lo,la,al,utc))
--将从GPS获取的时间设置为Core自身的系统时间
LIB_SetUtcTime(utc);
end
end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

六、代码运行结果

电脑串口调试终端上显示的GPS信息(经纬度/海拔/UTC)内容如下图:

经纬度的单位是:度, 海拔高度的单位是:米,UTC的单位是:秒。

result

result2

七、坐标系转换(需注意):

由于定位模块设备输出的经纬度定位信息的坐标系为WGS84国际标准,所以在不同地图中需要转换成对应的坐标系。例如使用百度地图时,需要将WGS84坐标系转换为BD09坐标系;用国内其他地图时,需要将WGS84坐标系转换为GCJ-02坐标系。如果不进行这些转换会出现定位偏差多则一两公里的问题。开发者可以使用 https://tool.lu/coordinate/ 这个网络在线工具做一个简单的验证。