新闻  |   论坛  |   博客  |   在线研讨会
单片机如何利用GPRS模块获取位置信息
Linux嵌入式 | 2022-12-30 10:12:41    阅读:309   发布文章

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格式的,我们用","来解析即可获得经纬度和具体的位置信息


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
工科男,多年嵌入式工作者,每日分享工作中常遇到的一些“坑”
推荐文章
最近访客