1. 程式人生 > 其它 >通過4G模組定位裝置

通過4G模組定位裝置

技術標籤:通訊定位linux

問題

最近考慮到裝置定位功能的改進, 考慮到成本與定位精度的要求, 單獨加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+CREG?

  1. 裝置撥號成功後再獲取:
AT+CGREG=
2 AT+CGREG?

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+QENG
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基站定位 移遠模組介面定位的文章