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