sim7080g nb-iot模塊使用心得
掃描二維碼
隨時隨地手機看文章
sim7080g nb-iot模塊使用心得
-
1.概述
-
2.設計方式
-
3.初始化
-
4.TCP連接測試
-
5.SIM7080使用注意
-
6.工程小結(jié)
1.概述
最近有個朋友找到我,讓我調(diào)試一個程序,由于之前項目的硬件采用sim800c的gsm模塊,由于現(xiàn)場的信號太差,所以找了個sim7080g模塊進行替換。底層設計采用at指令集,中間通信協(xié)議層也是我一年多前完成的,上層業(yè)務基本不會變化。本以為只會通過修改底層的at指令集就好了,但實際在這個過程中也遇到一些問題。特此記錄此次調(diào)試過程,避免同樣的錯誤再次出現(xiàn)。
2.設計方式
由于我對該項目也相當熟悉了,所以按照模塊化的方式進行程序設計。
從整個架構(gòu)上來看,此時整體架構(gòu)的變化不大,僅僅是將sim7080g的模塊使用起來就好了。protocal層則是按照之前的處理方式處理。其實也就是將模塊recv到的數(shù)據(jù)組合成一個包,然后交給協(xié)議層去處理就可以了。
由于本方案采用的是tcp client傳輸模式,而且未開啟透傳模式,而且需要使用到gps功能。
這里主要介紹sim7080g的使用流程以及其中調(diào)試的注意事項。
3.初始化
按照模塊的使用方式,與TCP相關(guān)的AT列表可以分為:
其初始化流程如下所示:
按照上述的初始化流程進行初始步驟即可。一旦一條指令的順序不對都需要重新進行連接。
對此,我也整理出如下的表格
| 指令 | 成功返回值 | 備注 |
|---|---|---|
| AT | OK | AT測試指令 |
| AT+CPIN? | READY | 檢查sim卡狀態(tài)指令 |
| AT+CNMP=38 | OK | 選擇網(wǎng)絡制式 |
| AT+CSQ | +CSQ: 26,99 | 檢查信號質(zhì)量 |
| AT+CPSMS=0 | OK | 關(guān)閉PCM |
| AT+CEDRXS=0 | OK | 關(guān)閉eDRX |
| AT+CGREG? | +CGREG: 0,1 | 查詢網(wǎng)絡附著 |
| AT+CGNAPN | OK | 獲取網(wǎng)絡APN |
| AT+CPSI? | OK | 請求UE系統(tǒng)信息 |
| AT+CNACT=0,1 | OK | 激活應用網(wǎng)絡(只能發(fā)送一次) |
| AT+CNACT? |
|
查詢網(wǎng)絡IP |
| AT+CACID=0 |
|
設置索引(只能發(fā)送一次) |
| AT+CASSLCFG=0,"SSL",0 | OK | 設置SSL參數(shù) |
| AT+CAOPEN=0,0,"TCP","iot-as-mqtt.cn-shanghai.aliyuncs.com",1883 | OK | 打開一個TCP鏈接 |
| AT+CASWITCH=0,1 | OK | 設置透傳模式 |
| AT+CASTATE? | OK | 查詢連接狀態(tài) |
4.TCP連接測試
為了測試方便,我是在本地用內(nèi)網(wǎng)穿透進行測試調(diào)試。內(nèi)網(wǎng)穿透采用花生殼進行本地內(nèi)網(wǎng)端口映射。
這樣調(diào)試起來就非常的方便了。
連接服務器采用
AT+CAOPEN=0,0,\"TCP\",\"iot-as-mqtt.cn-shanghai.aliyuncs.com\",1883
進行TCP連接,連接上后,通過
AT+CASTATE?
查詢TCP的連接狀態(tài),直到連接上就可以發(fā)送數(shù)據(jù)了。
數(shù)據(jù)發(fā)送
模塊數(shù)據(jù)發(fā)送時,首先輸入要發(fā)送數(shù)據(jù)的長度,下面的10即為10個字節(jié)的數(shù)據(jù)長度。
AT+CASEND=0,10,10000
此時模塊會返回>符號回來,接著向串口寫數(shù)據(jù)就可以了。
一定需要注意,結(jié)束的標志\r\n。所以不滿10個字節(jié)當遇到\r\n則退出輸入模式。
數(shù)據(jù)接收
該模塊在使用的使用,需要主動去查詢有沒有數(shù)據(jù)接收到。
AT+CARECV=0,100
表示最大接收100個字節(jié),當然,接收時也會提示接收到多少數(shù)據(jù)。
返回:
+CARECV: 10,GET / HTTP
5.SIM7080使用注意
這個模塊TCP連接和GPS同時工作時,會造成TCP斷開的現(xiàn)象,這個應該是這個模塊設計的BUG,我當時也排查了好久。終于在網(wǎng)上找到與我遇到的同意的問題。
當然,這個問題肯定不是很好解決,目前最好的用法就是兩者之中只能使用一個模塊進行使用。
6.工程小結(jié)
該模塊與sim800c的指令和訪問方式都有一些不同,在使用時也需要充分的理解設計方式。特別是在做物聯(lián)網(wǎng)應用時,第一是保證連接的可靠性,第二就是需要設計斷網(wǎng)重連機制。上述的過程其實還是比較簡單,直接查詢連接狀態(tài)即可。其實復雜的還有心跳包等。
嵌入式物聯(lián)網(wǎng)應用的設備端,其中間的協(xié)議層一定要設計完善,如果設計的一塌糊涂,都是if...else結(jié)構(gòu),那么這個項目換了模塊則無法維護了,這時中間件的作用就體現(xiàn)出來了。在做方案設計的時候,一定考慮清楚模塊之間的耦合層次關(guān)系,設計出來的架構(gòu)才清晰明確。





