用极简的代码实现NEO-6M GPS经纬度海拔UTC的硬件读取

96 篇文章 0 订阅
67 篇文章 0 订阅

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

本教程参考自 FlexLua 官网的ShineBlink学习板栏目。

一、本例程实现功能

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

二、 GPS使用说明

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

三、接线图

5920d8fb4e1ae173042d0d28e120dd63.jpeg

四、材料清单

  • NEO-6M GPS模块

f3002a4eafc3ee18669b4368161a69f1.jpeg

五、完整代码

--配置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的单位是:秒。

0fecd8f25c26be62598581262d241e3b.jpeg

7c113eaa7b014d4ee55e962ad82e8633.jpeg

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值