问题
最近考虑到设备定位功能的改进, 考虑到成本与定位精度的要求, 单独加GPS模块不太适用于我们, 因此将定位的功能希望通过基站定位实现, 达到模块多用;
结果
更换模块
最简单的办法就是将4G模块改为含定位功能的模块, 不过要额外增加GNSS天线等, 4G模块的价格也会升高, 而且室内信号差因为这些这种方法就暂时不考虑了.
移远定位服务
其次就是通过移远模块自带的AT
进行基站定位, 本质就是调用移远的IOT云服务进行基站定位.
要先在移远物联网云服务平台申请token, 然后在模块中通过以下AT指令获取坐标;
AT+QICSGP=1,1,"UNIWAP","","",1
AT+QIACT=1
AT+QLOCCFG="contextid",1
AT+QLOCCFG="token","xxxxxxxxxxxx"
AT+QLOCCFG="server","47.74.213.211:80"
AT+QCELLLOC
通过LAC和CID定位
通过查移远ec20的AT指令手册可以找到能获得lac和cid的指令;
1.拨号注册时获取
AT+CREG=2
AT+CREG?
- 设备拨号成功后再获取:
AT+CGREG=2
AT+CGREG?
3. 通过Engineering mode
获取该信息:
AT+QENG=?
#返回OK表示支持工程模式,执行下面的指令
AT+QENG="servingcell"
Response
In the case of GSM mode:
+QENG: "servingscell",<state>,"GSM",<mcc>,<mnc>,<lac>,<cellid>,<bsic>,<arfcn>,<band>,<rxlev>,<txp>,<rla>,<drx>,<c1>,<c2>,<gprs>,<tch>,<ts>,<ta>,<maio>,<hsn>,<rxlevsub>,<rxlevfull>,<rxqualsub>,<rxqualfull>,<voicecodec>
OK
In the case of WCDMA mode:
+QENG: "servingcell",<state>,"WCDMA",<mcc>,<mnc>,<lac>,<cellid>,<uarfcn>,<psc>,<rac>,<rscp>,<ecio>,<phych>,<sf>,<slot>,<speech_code>,<comMod>
OK
In the case of LTE mode:
+QENG: "servingcell",<state>,"LTE",<is_tdd>,<mcc>,<mnc>,<cellid>,<pcid>,<earfcn>,<freq_band_ind>,<ul_bandwidth>,<dl_bandwidth>,<tac>,<rsrp>,<rsrq>,<rssi>,<sinr>,<srxlev>
OK
AT指令手册:
EC25&EC21 AT Commands Manual
EC2x&EG9x&EM05_QuecCell_AT_Commands_Manual_V1.0
这时候我们得到了LAC和CID, 就可以根据这两个值进行基站定位, 而定位需要基站位置数据库, 这种数据有服务商提供一般是地图服务商(地图GPS信息匹配基站信息WiFi信息存储到数据库)或者一些其它的提供商, 需要找到靠谱的服务提供方, 参考文章中有几个服务方没用过, 有需要的可以尝试一下, 通过提供商给的接口查询位置即可;
参考文章
1.基站定位LAC,CID转经纬度 提供测试接口
2. LBS数据仓库 基站数据库
3. 伪基站识别技巧 介绍LAC CID的含义,以及一些基础知识,值得一看
4. How to find the Cell Id location with MCC, MNC, LAC and CellID (CID) 介绍了几个值的含义,以及提供了一个全球的MCC和MNC的list方便确定服务提供商;
5. 移远EC20基站定位 移远模块接口定位的文章