GPRS是如何获取位置的呢?GPRS不同于GPS,我们都知道GPS是通过卫星来定位,而GPRS是通过基站来定位,其定位精度收到通信基站的位置和密度的影响在没有基站的位置上,误差范围会比较大,也许系有人会问既然GPS定位更精准,拿为什么还需要基站定位呢?这是因为GPS定位只能在空旷的地方接收到信号,比如在高楼密集的城市,高架桥下,室内等GPS信号会很差或接收不到信号,同时也会受天气的影响如果天气差GPS信号强度会低很多。但基站定位虽精度虽不及GPS,但只要有基站至室内也可定位,且不会收天气的影响。随着基站的数量越来越多,GPRS的定位也会越来越准确。
基站定位示意图
获取位置流程
流程图
获取到基站的位置信息后我们可以调用LBS的数据仓库API接口进行查询,这里推荐一个比较好用的接口这个网站的查询接口是免费开放的,但是有限制,每5分钟限制查询300次,基站/WIFI/经纬度查询接口每日限制查询1000次如果我们的查询次数不多的话是足够用的,不够使用也有收费的可以用。
基站查询接口可查询全国移动联通电信的2G/3G/4G基站位置信息,收录数据超过两万条。下面是提供查询的API接口:
API接口
有与GPRS模块可以与服务器通讯所以我们在获取到基站的位置信息之后直接将数据通过单片机串口通过GPRS模块发送到服务器进行查询即可。
GPRS通讯示意图
1.单片机通过AT指令服务器的相关信息配置进模块
(1) 设置工作模式为网络透传模式 AT+WKMOD="UDC"
(2) 使能 socket A AT+SOCKAEN="on"
(3) 设置 socket A 为 TCP 客户端,服务器地址为 api.cellocation.com,服务器端口号为 81。 AT+SOCKA="TCP", api.cellocation.com",81
(4) 使能心跳包 AT+HEARTEN="on"
(5) 设置心跳包发送间隔 AT+HEARTTM=30
(6) 使能注册包 AT+REGEN="ON"
2. 查询基站信息
单片机串口发送 AT+LBS?
返回坐标信息 如: LAC =21269,CID =30321
3. 调用数据接口进行位置查询
GET /cell/?mcc=460&mnc=1&lac=4301&ci=20986&output=csvHTTP/1.1
Host:api.cellocation.com:81
发送数据时这个位置一定要空两行
发送时将lac和ci替换为获取到的坐标信息即可,返回的数据是CSV格式的,我们用","来解析即可获得经纬度和具体的位置信息
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』