今天特别分享定位相关示例,欢迎大家一起来探讨。
一、基站/Wi-Fi/GPS定位概述
1.1 基站定位原理
基站定位也就是“LBS定位”,全称是Location Based Service,它包括两层含义:
首先是确定移动设备或用户所在的地理位置;其次是提供与位置相关的各类信息服务。意指与定位相关的各类服务系统,简称“定位服务”。
多基站定位中,模组正常联网后,搜索并上报周围的基站信息,上报到服务器后,服务器根据三角定位法,估算出一个大概的坐标,最后返回计算出来的经纬度给模组。
单基站定位中,模组正常联网后,搜索并上报周围的基站信息,服务器会存储多数已知基站的经纬度,根据模组上报的基站信息,直接下发对应位置的经纬度数据。
多基站一般精度在10-300米内,单基站误差有可能会在1.5KM内。
1.2 Wi-Fi定位原理
Wi-Fi定位的原理和基站定位原理类似,搜索并上报附近的 Wi-Fi信息,上报到服务器后,服务器根据三角定位法,估算出一个大概的坐标,精度在50~500米不等。
1.3 GPS定位原理
GPS不限制终端数,在GPS卫星信号不被阻挡的情况下,在地球上任何地点、任何时间,任何GPS终端都可以得到正确的位置和时间。定位只需要一个条件,那就是能够接收到足够多的卫星信号。因此,在室内通常无法定位。
Air201板载GNSS芯片特性:
捕获:18mw
追踪:10mw
单点定位精度<1.5m
灵敏度:-149dbm
支持双频,北斗,RTK(选配)
二、基站/Wi-Fi/GPS定位示例
本文将通过基站/Wi-Fi/GPS定位具体应用示例教程,教你使用Air201来实现定位服务,在实际开发中可根据具体情况灵活应用。
▼ 定位示例主要内容 ▼
免费版本基站定位:
烧录示例demo,通过lbsLoc2.request接口发起请求,进行单基站定位。
收费版本Wi-Fi+基站混合定位:
烧录示例demo,通过airlbs.request接口发起请求,上报基站和Wi-Fi,进行混合定位。
注:实际应用中,需先联系销售开通付费服务,然后在合宙IoT平台LBS服务中查看自己的id和key。
GPS定位:
烧录示例demo,实现GPS定位。
接下来,我们详细讲解应用示例的具体操作。
2.1 搭建环境
新同学建议先看前期的基础知识相关教程,更有助于理解和操作。
可以在LuaTools项目管理中新建一个项目,重新选择底层CORE和脚本;或者在原有项目的基础上,不更换CORE,将原来的脚本删除,添加为所需的定位功能脚本。
2.1.1 硬件准备:
Air201 PCBA
配套USB_BOOT小板
可正常上网的SIM卡
带有数据通信功能的数据线
Win10及以上PC
2.1.2 软件准备:
LuaTools调试工具:
https://docs.openluat.com/Luatools
最新固件:https://gitee.com/openLuat/LuatOS-Air201/tree/master/core
最新脚本:
GPS定位:
https://gitee.com/openLuat/LuatOS-Air201/blob/master/demo/gps_lbs_wifi/gnss.lua
免费版本基站定位:
https://gitee.com/openLuat/LuatOS-Air201/blob/master/demo/lbsLoc2/main.lua
付费版本基站定位:
https://gitee.com/openLuat/LuatOS-Air201/blob/master/demo/airlbs/main.lua
2.1.3 烧录操作:
由于Air201单板子没有复位键和BOOT键,所以数据线与Air201开发板之间还需要接一个USB_BOOT小板(Air201套件里已包含)。
将Air201通过USB_BOOT小板连接电脑,如下图所示:
1)根据下方操作进行烧录
此时就需要大家先点击Luatools工具上的【下载脚本】或【 下载底层和脚本】,再执行下方操作了。
新同学请先学习LuaTools使用和烧录教程:
https://docs.openluat.com/Luatools/
开发板处于未开机状态:
此时先按住下载模式按键(BOOT键)不放,再长按开机键(POW键)开机。若不出意外开发板将会进入下载模式,LuaTools工具下载进度条会开始跑,这时便可以松开BOOT键和POW键,等到工具提示下载完成即可。
开发板已经处于开机状态:
此时可以先按住BOOT键不放,再短按复位键(RST键)后开发板会重启并进入下载模式。
2)不同模式下的端口显示
正常开机模式:
下载模式:
2.2 示例代码
了解Air201的GPS定位、免费版本基站定位、付费版本基站定位示例代码之前,请注意:
免费版本基站定位为:单基站定位;
付费版本基站定位分为两种:
多基站定位、Wi-Fi+基站混合定位。
相对于免费的单基站定位服务来说,付费版本的基站定位方式精度更高。
▼ GPS定位示例 ▼
代码介绍:
1)打开GPS的供电和复位引脚。
02)开机后初始化一些GPS和打印数据的端口,清空一下历史定位数据,设置端口参数,更新星历,绑定端口。
03)订阅GNSS状态,GNSS有两种状态:FIXED-定位成功和LOSE-定位丢失。
04)写入星历,即AGPS辅助定位。
运行结果展示:
定位成功后,获取位置字符串。
▼ 免费版本基站定位示例 ▼
免费版本仅支持单基站定位,若需要更精准的定位服务,请查看付费版本多基站定位或GPS定位。
代码介绍:
运行结果展示:
返回的经纬度信息如下图红框所示:
▼ 付费版本多基站定位示例 ▼
代码介绍:
运行结果展示:
返回的经纬度信息如下图所示:
▼ 付费版本Wi-Fi + 基站混合定位示例 ▼
受限于模组设计,在使用Wi-Fi扫描时候,4G数据传输较慢丢包概率较大,所以尽量在Wi-Fi扫描完毕后,再进行数传工作。
代码介绍:
01)初始化:
等待联网,初始化wlan,扫码Wi-Fi频段。
02)Wi-Fi + 基站混合定位:
Wi-Fi扫描成功后,通过airlbs.request发送定位请求,进行混合定位。
运行结果展示:
本示例采用Wi-Fi + 多LBS混合定位,使用airlbs.request接口,上报基站和Wi-Fi信息,进行混合定位。
开通付费服务后,会显示附近多个基站定位信息,基站定位成功后返回获取到的经纬度信息。
如下图所示:
三、基站/Wi-Fi/GPS定位常见问题
3.1 基站定位精度如何?
搜索到的小区越多,定位的精度越高;一般来说,城市中心定位精度比郊区和农村定位精度高,城市中心的定位精度在几十米到几百米不等,郊区和农村的定位精度更低,可能会有几千米甚至更多的误差。
通过多小区定位,将实时搜索到的所有小区同时上报给后台参与定位,基站定位的误差都比较大。如果需要准确定位,请使用GPS定位。
3.2 官方的基站定位能在国外使用吗?
不能,没有国外的基站数据库。
3.3 为什么基站定位失败?
1)后台基站数据库查询不到所有小区的位置信息;
在LuaTools脚本日志中向上搜索mcc,mnc,lac,ci:
然后在电脑浏览器中打开:定位查询网站bs.openluat.com,手动查找mcc,mnc,lac,ci后的所有小区位置。
如果手动可以查到位置,则服务器存在BUG,直接向技术支持人员反映问题;如果手动无法查到位置,则基站数据库还没有收录当前设备的小区位置信息,向技术支持人员反馈,我们会尽快收录。
2)达到了总的QPS限制数量。
3.4 基站/Wi-Fi定位定位获取的经纬度是什么格式的?
基站定位获取的经纬度为WGS-84格式,各种坐标系说明以及转换方法请网上搜索坐标系在线转换工具即可查询。
3.5 GPS定位经纬度不准确是什么原因?
坐标没有纠偏,GPS定位输出的坐标为WGS84坐标系,请网上搜索坐标系在线转换工具进行纠偏;
周围有比较高的障碍物,会导致定位误差;
在开阔地带,正常情况下定位精度只能做到5米;
不能在室内测试,必须到室外测试;如果只能在室内测试,可以淘宝搜索"GPS信号转发器"。
今天的内容就分享就到这里了~
更多实用示例带你开启应用之门,下一期见!