www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式IoT

sim7080g nb-iot模塊使用心得


  • 1.概述

  • 2.設(shè)計(jì)方式

  • 3.初始化

  • 4.TCP連接測(cè)試

  • 5.SIM7080使用注意

  • 6.工程小結(jié)


1.概述

最近有個(gè)朋友找到我,讓我調(diào)試一個(gè)程序,由于之前項(xiàng)目的硬件采用sim800c的gsm模塊,由于現(xiàn)場(chǎng)的信號(hào)太差,所以找了個(gè)sim7080g模塊進(jìn)行替換。底層設(shè)計(jì)采用at指令集,中間通信協(xié)議層也是我一年多前完成的,上層業(yè)務(wù)基本不會(huì)變化。本以為只會(huì)通過(guò)修改底層的at指令集就好了,但實(shí)際在這個(gè)過(guò)程中也遇到一些問(wèn)題。特此記錄此次調(diào)試過(guò)程,避免同樣的錯(cuò)誤再次出現(xiàn)。

2.設(shè)計(jì)方式

由于我對(duì)該項(xiàng)目也相當(dāng)熟悉了,所以按照模塊化的方式進(jìn)行程序設(shè)計(jì)。

從整個(gè)架構(gòu)上來(lái)看,此時(shí)整體架構(gòu)的變化不大,僅僅是將sim7080g的模塊使用起來(lái)就好了。protocal層則是按照之前的處理方式處理。其實(shí)也就是將模塊recv到的數(shù)據(jù)組合成一個(gè)包,然后交給協(xié)議層去處理就可以了。

由于本方案采用的是tcp client傳輸模式,而且未開(kāi)啟透?jìng)髂J?,而且需要使用到gps功能。

這里主要介紹sim7080g的使用流程以及其中調(diào)試的注意事項(xiàng)。

3.初始化

按照模塊的使用方式,與TCP相關(guān)的AT列表可以分為:

其初始化流程如下所示:

按照上述的初始化流程進(jìn)行初始步驟即可。一旦一條指令的順序不對(duì)都需要重新進(jìn)行連接。

對(duì)此,我也整理出如下的表格

指令 成功返回值 備注
AT OK AT測(cè)試指令
AT+CPIN? READY 檢查sim卡狀態(tài)指令
AT+CNMP=38 OK 選擇網(wǎng)絡(luò)制式
AT+CSQ +CSQ: 26,99 檢查信號(hào)質(zhì)量
AT+CPSMS=0 OK 關(guān)閉PCM
AT+CEDRXS=0 OK 關(guān)閉eDRX
AT+CGREG? +CGREG: 0,1 查詢(xún)網(wǎng)絡(luò)附著
AT+CGNAPN OK 獲取網(wǎng)絡(luò)APN
AT+CPSI? OK 請(qǐng)求UE系統(tǒng)信息
AT+CNACT=0,1 OK 激活應(yīng)用網(wǎng)絡(luò)(只能發(fā)送一次)
AT+CNACT?
查詢(xún)網(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 打開(kāi)一個(gè)TCP鏈接
AT+CASWITCH=0,1 OK 設(shè)置透?jìng)髂J?
AT+CASTATE? OK 查詢(xún)連接狀態(tài)

4.TCP連接測(cè)試

為了測(cè)試方便,我是在本地用內(nèi)網(wǎng)穿透進(jìn)行測(cè)試調(diào)試。內(nèi)網(wǎng)穿透采用花生殼進(jìn)行本地內(nèi)網(wǎng)端口映射。

這樣調(diào)試起來(lái)就非常的方便了。

連接服務(wù)器采用

AT+CAOPEN=0,0,\"TCP\",\"iot-as-mqtt.cn-shanghai.aliyuncs.com\",1883

進(jìn)行TCP連接,連接上后,通過(guò)

AT+CASTATE?

查詢(xún)TCP的連接狀態(tài),直到連接上就可以發(fā)送數(shù)據(jù)了。

數(shù)據(jù)發(fā)送

模塊數(shù)據(jù)發(fā)送時(shí),首先輸入要發(fā)送數(shù)據(jù)的長(zhǎng)度,下面的10即為10個(gè)字節(jié)的數(shù)據(jù)長(zhǎng)度。

AT+CASEND=0,10,10000

此時(shí)模塊會(huì)返回>符號(hào)回來(lái),接著向串口寫(xiě)數(shù)據(jù)就可以了。

一定需要注意,結(jié)束的標(biāo)志\r\n。所以不滿(mǎn)10個(gè)字節(jié)當(dāng)遇到\r\n則退出輸入模式。

數(shù)據(jù)接收

該模塊在使用的使用,需要主動(dòng)去查詢(xún)有沒(méi)有數(shù)據(jù)接收到。

AT+CARECV=0,100

表示最大接收100個(gè)字節(jié),當(dāng)然,接收時(shí)也會(huì)提示接收到多少數(shù)據(jù)。

返回:

+CARECV: 10,GET / HTTP

5.SIM7080使用注意

這個(gè)模塊TCP連接和GPS同時(shí)工作時(shí),會(huì)造成TCP斷開(kāi)的現(xiàn)象,這個(gè)應(yīng)該是這個(gè)模塊設(shè)計(jì)的BUG,我當(dāng)時(shí)也排查了好久。終于在網(wǎng)上找到與我遇到的同意的問(wèn)題。

當(dāng)然,這個(gè)問(wèn)題肯定不是很好解決,目前最好的用法就是兩者之中只能使用一個(gè)模塊進(jìn)行使用。

6.工程小結(jié)

該模塊與sim800c的指令和訪問(wèn)方式都有一些不同,在使用時(shí)也需要充分的理解設(shè)計(jì)方式。特別是在做物聯(lián)網(wǎng)應(yīng)用時(shí),第一是保證連接的可靠性,第二就是需要設(shè)計(jì)斷網(wǎng)重連機(jī)制。上述的過(guò)程其實(shí)還是比較簡(jiǎn)單,直接查詢(xún)連接狀態(tài)即可。其實(shí)復(fù)雜的還有心跳包等。

嵌入式物聯(lián)網(wǎng)應(yīng)用的設(shè)備端,其中間的協(xié)議層一定要設(shè)計(jì)完善,如果設(shè)計(jì)的一塌糊涂,都是if...else結(jié)構(gòu),那么這個(gè)項(xiàng)目換了模塊則無(wú)法維護(hù)了,這時(shí)中間件的作用就體現(xiàn)出來(lái)了。在做方案設(shè)計(jì)的時(shí)候,一定考慮清楚模塊之間的耦合層次關(guān)系,設(shè)計(jì)出來(lái)的架構(gòu)才清晰明確。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉