【摘要】本文分析了從Sim800C向M5310-A的移植方法。比較了二者電路設(shè)計(jì)、TCP/UDP傳輸過程以及二者的不同點(diǎn)。
【關(guān)鍵詞】Sim800C?M5310-A?GPRS?NB-IoT?TCP?UDP
1前言
Sim800C在物聯(lián)網(wǎng)傳輸中有著廣泛的應(yīng)用,具有體積小,運(yùn)行穩(wěn)定,具備藍(lán)牙傳輸?shù)裙δ?。M5310-A是中移物聯(lián)推出的NB-IoT工業(yè)級通訊模組,支持eSim卡和OneNet平臺,在窄帶物聯(lián)網(wǎng)模式下有著廣泛的應(yīng)用。二者都具備基本的移動(dòng)無線數(shù)據(jù)傳輸功能,都具備低功耗和串口通訊模式。
2電路設(shè)計(jì)
Sim800C具備GSM850、EGSM900、DCS1800、PCS1900MHz四個(gè)頻段。采用42腳城堡型封裝,具備一個(gè)全雙工串口,模塊尺寸17.6x15.7x2.3mm,管腳排列如下圖:
M5310-A采用兩側(cè)城堡封裝,共30個(gè)管腳,一個(gè)可與單片機(jī)連接的串口,模塊尺寸18.4x19mm,管腳排列如下圖:
二者均可使用MIC29302或SPX29302供電,模塊電壓3.8V左右,瞬間電流可能超過2A,需要在輸出端并聯(lián)大容量電解電容和附加濾波電容。Sim800C使用AT+CBC獲取電源電壓;M5310-A使用AT+NCHIPINFO獲取溫度和電壓數(shù)值。
二者天線設(shè)計(jì)基本相同。兩種模塊均需使用SIM卡才能連接到移動(dòng)網(wǎng)絡(luò)。M5310-A可以將eSim卡置于模組內(nèi)部。沒有SIM卡插入,二者均可用AT+CSQ返回信號強(qiáng)度為99判斷。Sim800C支持1.8V和3VSIM卡,M5310-A目前只支持3VSIM卡。SIM卡各數(shù)據(jù)管腳應(yīng)串聯(lián)22Ω電阻后再與模塊連接用于抑制EMI。應(yīng)當(dāng)對SIM卡進(jìn)行適當(dāng)?shù)腅SD保護(hù)措施,要求較高的場合應(yīng)使用TVS二極管陣列。
二者串口邏輯電平基本相同,2V以上為高電平,0.7V以下為低電平,如果采用3.3V系統(tǒng)電壓,可以采用串聯(lián)電阻的方式進(jìn)行電平匹配,否則需使用電平匹配電路。
3模塊啟動(dòng)和關(guān)閉
Sim800C需要將PWRKEY管腳拉低1秒使模塊開機(jī)。M5310-A模塊BAT管腳上電即可啟動(dòng),不需要專門的引腳控制。
二者均可使用AT+CPOWD=1關(guān)閉模塊,并可在串口接收到NORMALPOWERDOWN后將29302第一腳拉低關(guān)閉電源輸出。
M5310-A可以使用AT+NRB命令重啟模塊,或使用RESET引腳對模塊復(fù)位。
單片機(jī)判斷模塊是否可用,可以通過串口發(fā)出AT命令,并檢測是否有OK返回來判斷。Sim800C中可以通過檢測STATUS管腳是否為高電平判斷模塊是否已經(jīng)正常啟動(dòng)。二者的外部電源輸出引腳VDD_EXT是否有電壓輸出也是檢測模塊是否可用的判斷條件。
4注冊并準(zhǔn)備上網(wǎng)
Sim800C確認(rèn)可插入后,可以通過命令A(yù)T+CIPSTATUS命令的返回結(jié)果判斷是否可以聯(lián)網(wǎng)。
使用M5310-A模塊需要先使用命令A(yù)T+COPS=1,2,"46000"注冊移動(dòng)運(yùn)營商,然后發(fā)送AT+CSCON=1命令打開信號提示自動(dòng)上報(bào),發(fā)送AT+CEREG=1命令打開注冊信息自動(dòng)上報(bào),等待返回+CSCON:1表示自動(dòng)上報(bào)的網(wǎng)絡(luò)提示已經(jīng)連接,最后等待返回諸如+CEREG:1,19E6,94,7的信息后,才表示可以聯(lián)網(wǎng)。如果未返回上述信息,需要根據(jù)AT+CEREG?查詢網(wǎng)絡(luò)狀態(tài)。另外還可以發(fā)送AT+NPING=目標(biāo)IP命令觀察返回結(jié)果,如果未返回錯(cuò)誤,就表示可以聯(lián)網(wǎng)。
5 TCP通訊
Sim800C采用AT+CIPSTART=”TCP”,”(IP地址)”,端口命令向服務(wù)器發(fā)起TCP客戶端連接。模塊返回“CONNECTOK”表示連接成功。連接成功后,使用AT+CIPSEND命令向服務(wù)器發(fā)出信息,服務(wù)器返回信息在設(shè)置了AT+CIPHEAD=1后,接收的信息有“+IPD”開頭的長度和信息字符串。
M5310-A的TCP通訊需要先創(chuàng)建TCPSocket并綁定本地端口,如AT+NSOCR="STREAM",6,6003,1表示創(chuàng)建TCP Socket,并綁定本地端口6003,開啟數(shù)據(jù)到達(dá)自動(dòng)通知(接收到+NSONMI),需要使用AT+NSORF命令讀取數(shù)據(jù)。
6 UDP通訊
Sim800C采用AT+CIPSTART=”UDP”,”(IP地址)”,端口命令向服務(wù)器發(fā)起UDP連接。模塊返回“CONNECTOK”表示連接成功。與TCP相同,Sim800C的UDP傳輸中也使用了AT+CIPSEND命令,接收信息需要檢測“+IPD”開頭的字符串。
7結(jié)束語
數(shù)據(jù)通訊過程中,應(yīng)盡量使用字符信息傳輸,盡可能不傳輸二進(jìn)制信息。
調(diào)試模塊中,應(yīng)先使用串口助手在電腦端調(diào)試,不急于反復(fù)修改單片機(jī)的程序和收發(fā)邏輯。
Sim800C有可選的藍(lán)牙模塊,可以實(shí)現(xiàn)基本的藍(lán)牙SPP傳輸。Sim800C還具備完整的語音通話功能,但是,這些功能在移動(dòng)物聯(lián)網(wǎng)中幾乎用不到。M5310-A不具備語音功能,通過CMIOT擴(kuò)展命令實(shí)現(xiàn)基于OneNet的數(shù)據(jù)傳輸,具備了更多的IoT方面的性能,是IoT的發(fā)展方向,組建移動(dòng)物聯(lián)網(wǎng)系統(tǒng)會更加方便、迅速。
參考文獻(xiàn):
[1]M5310-A硬件設(shè)計(jì)手冊_V1_20180827154400_38290.
[2]M5310A AT命令用書使用手冊_V1_20180827154312_20506.
[3]M5310-A TCPIP應(yīng)用指導(dǎo)手冊_v1_20180827154425_35228.
[4]SIM800C_硬件設(shè)計(jì)手冊_V1.01.
[5]SIM800 Series_AT Command Manual_V1.09.
作者簡介:吳迪(1972-)男,天津人,天津市夜景燈光管理中心,工程師,研究方向:MIS系統(tǒng)設(shè)計(jì)、開發(fā)、維護(hù)研究。