物联网从业者必须要会的AT指令介绍
对于大多数物联网从业者来说,有两样东西是避免不了的,一个是单片机,一个是移动通信模块。现在主流的通信模块都以4G模组和NB-IOT模组为主(由于运营商正在对2G进行退网,在新产品上继续使用2G模组已经是个不明智的决定了)。无论是曾经的2G模组还是现在主流的4G和NB-IOT模组,都采用了AT指令的方式与外部控制器进行通信,AT指令因此成为物联网从业者必须要掌握的知识。
本文引用地址://www.cazqn.com/article/202312/453928.htm4G模组举例
AT是Attention的缩写,最早是贺氏公司(Hayes)为了控制调制解调器而发明的协议。后来随着网络带宽的升级,速度很低的拨号调制解调器基本退出一般使用市场,但是 AT 命令保留了下来,并且逐渐被标准化。现在的移动通信模组(2G,4G,NB-IOT)皆采用AT指令作为其控制协议,AT 指令已经成为通信模组产品开发中的实际标准。
某4G模块应用示意图
AT指令只是AT客户端(如MCU)和AT服务器(如移动通信模组)之间的软件接口,硬件上基本都采用串口作为接口。有一点需要注意,很多模块的串口电平采用的是1.8V,而大多数MCU的IO口电平是3.3V或5V,所以在硬件连接上需要依据具体情况考虑进行电平转换。
AT指令工作示意图
AT指令的大部分使用场景是这样:MCU主动发送AT指令给模组,然后等待模组返回数据,MCU再根据返回的数据做对应操作。每个AT指令都有一个超时时间,如果MCU发送出AT指令后在超时时间内没有收到返回的数据则需要重试。AT指令中还有一种数据被成为URC数据,URC的全称是Unsolicited Result Code,翻译成中文就是“不请自来的结果码”。顾名思义,它不是模块对MCU所发送AT指令的返回,而是模块主动上报的数据。比如模块收到TCP数据包,或者模块的网络状态发生改变,都会通过URC数据主动告知MCU。
下面介绍下AT指令的格式。AT指令是基于字符串的通信协议,一般 AT 命令由三个部分组成,分别是:前缀、主体和结束符。其中前缀由字符“AT”构成;主体由命令、参数和可能用到的数据组成,结束符一般为 <CR><LF> (即回车换行,对应于ASCII码中的“rn”)。AT指令可以分为以下几种(<x>代表命令):
上表中省略了结束符,在实际使用中,将<x>替换为要用的命令,并且整个命令需要以<CR><LF>结尾。如何知道模块都支持哪些AT指令呢?关于具体的AT指令,其实不用刻意去记忆,因为每个模块都会有配套的AT指令集手册,要用的时候再去查询手册就行了。
AT指令应用举例(以下指令皆省略了回车换行):
MCU发送:AT
模组返回:OK
命令说明:可以根据是否有OK返回判断模块是否可用。
MCU发送:AT+CGSN
模组返回:<IMEI>
OK
命令说明:用于查询模组的IMEI。
MCU发送:AT+CGACT=<state>,<cid>
模组返回:OK
命令说明:用于设置模块PDP上下文激活状态。
MCU发送:AT+CGACT?
模组返回:+CGACT: <cid>,<state>
OK
命令说明:用于查询模块PDP上下文激活状态。
评论