物聯(lián)網(wǎng)從業(yè)者必須要會(huì )的AT指令介紹
對于大多數物聯(lián)網(wǎng)從業(yè)者來(lái)說(shuō),有兩樣東西是避免不了的,一個(gè)是單片機,一個(gè)是移動(dòng)通信模塊?,F在主流的通信模塊都以4G模組和NB-IOT模組為主(由于運營(yíng)商正在對2G進(jìn)行退網(wǎng),在新產(chǎn)品上繼續使用2G模組已經(jīng)是個(gè)不明智的決定了)。無(wú)論是曾經(jīng)的2G模組還是現在主流的4G和NB-IOT模組,都采用了AT指令的方式與外部控制器進(jìn)行通信,AT指令因此成為物聯(lián)網(wǎng)從業(yè)者必須要掌握的知識。
本文引用地址:http://dyxdggzs.com/article/202312/453928.htm4G模組舉例
AT是Attention的縮寫(xiě),最早是賀氏公司(Hayes)為了控制調制解調器而發(fā)明的協(xié)議。后來(lái)隨著(zhù)網(wǎng)絡(luò )帶寬的升級,速度很低的撥號調制解調器基本退出一般使用市場(chǎng),但是 AT 命令保留了下來(lái),并且逐漸被標準化?,F在的移動(dòng)通信模組(2G,4G,NB-IOT)皆采用AT指令作為其控制協(xié)議,AT 指令已經(jīng)成為通信模組產(chǎn)品開(kāi)發(fā)中的實(shí)際標準。

某4G模塊應用示意圖
AT指令只是AT客戶(hù)端(如MCU)和AT服務(wù)器(如移動(dòng)通信模組)之間的軟件接口,硬件上基本都采用串口作為接口。有一點(diǎn)需要注意,很多模塊的串口電平采用的是1.8V,而大多數MCU的IO口電平是3.3V或5V,所以在硬件連接上需要依據具體情況考慮進(jìn)行電平轉換。

AT指令工作示意圖
AT指令的大部分使用場(chǎng)景是這樣:MCU主動(dòng)發(fā)送AT指令給模組,然后等待模組返回數據,MCU再根據返回的數據做對應操作。每個(gè)AT指令都有一個(gè)超時(shí)時(shí)間,如果MCU發(fā)送出AT指令后在超時(shí)時(shí)間內沒(méi)有收到返回的數據則需要重試。AT指令中還有一種數據被成為URC數據,URC的全稱(chēng)是Unsolicited Result Code,翻譯成中文就是“不請自來(lái)的結果碼”。顧名思義,它不是模塊對MCU所發(fā)送AT指令的返回,而是模塊主動(dòng)上報的數據。比如模塊收到TCP數據包,或者模塊的網(wǎng)絡(luò )狀態(tài)發(fā)生改變,都會(huì )通過(guò)URC數據主動(dòng)告知MCU。

下面介紹下AT指令的格式。AT指令是基于字符串的通信協(xié)議,一般 AT 命令由三個(gè)部分組成,分別是:前綴、主體和結束符。其中前綴由字符“AT”構成;主體由命令、參數和可能用到的數據組成,結束符一般為 <CR><LF> (即回車(chē)換行,對應于A(yíng)SCII碼中的“rn”)。AT指令可以分為以下幾種(<x>代表命令):

上表中省略了結束符,在實(shí)際使用中,將<x>替換為要用的命令,并且整個(gè)命令需要以<CR><LF>結尾。如何知道模塊都支持哪些AT指令呢?關(guān)于具體的AT指令,其實(shí)不用刻意去記憶,因為每個(gè)模塊都會(huì )有配套的AT指令集手冊,要用的時(shí)候再去查詢(xún)手冊就行了。
AT指令應用舉例(以下指令皆省略了回車(chē)換行):
MCU發(fā)送:AT
模組返回:OK
命令說(shuō)明:可以根據是否有OK返回判斷模塊是否可用。
MCU發(fā)送:AT+CGSN
模組返回:<IMEI>
OK
命令說(shuō)明:用于查詢(xún)模組的IMEI。
MCU發(fā)送:AT+CGACT=<state>,<cid>
模組返回:OK
命令說(shuō)明:用于設置模塊PDP上下文激活狀態(tài)。
MCU發(fā)送:AT+CGACT?
模組返回:+CGACT: <cid>,<state>
OK
命令說(shuō)明:用于查詢(xún)模塊PDP上下文激活狀態(tài)。
評論