AT命令操作实战

2018年11月05日 797点热度 0人点赞 0条评论

在使用AT命令前,我们应该大概了解一下什么是AT的背景知识,以及我们为什么需要了解AT命令。通过对本节的理解,可以快速熟悉什么是AT命令,以及AT命令工作方式和命令格式。

NB-IOT开发模块HX戊戌-NB,通过电脑串口来给模块发送AT命令来练习并熟悉AT命令的使用方法。

  • AT命令简介

AT 即Attention,由Hayes公司发明(所以也称Hayes command set),是所有调制解调器命令语言的标准。

AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。TE发送AT命令来控制终端设备的功能并与GSM网络进行交互。

在NB-IOT终端中,主要是通过USART串口进行通讯的AT命令操作方式,通过串口将命令集发送到设备端,然后设备端(NB-IOT模块)会对不同的AT命令进行解析、分析,然后进行相对应的处理,并返回其对应的处理结果。这也是我们为什么需要了解AT命令的原因。

https://en.m.wikipedia.org/wiki/Hayes_command_set

  • AT命令功能

AT命令在NB-IOT模块中,主要作用是让用户通过AT控制指令集控制模块的行为,比如说配置PDP、获取模块信号强度、在网状态、网络数据收发、查询模块IMSI和IMEI等

  • AT命令语法

AT命令主体分为以下三个部分,

  1. 前缀
  2. 主体
  3. 终止字符

前缀固定由字符AT单独构成。主体由命令,参数和可用到的数值组成。终止字符为<CR>(即\r,回车符,十六进制为0X0D)。注意为了发送AT命令,最后还要加上<LF> (即\n,换行符,十六进制为0X0A)这是串口终端要求。

总体上说AT命令有四种语法形态:

  1. 测试命令:用来检查命令可能的子参数值,格式:AT+<cmd>=?
  2. 读命令    :用来获取当前命令的参数值,格式:AT+<cmd>?。例如,信令连接状态获取“AT+CSCON?”
  3. 写命令    :用来进行参数设定和发送数据等,格式:AT+<cmd>=p1[,p2[,p3[.....]]]。例如,配置PDP“AT+CGDCONT=1,"IP","3GNET.COM"”,发送UDP数据“AT+NSOST=1,47.91.238.235,7385,5,3132333435”。
  4. 指令命令:用来执行某个命令操作,格式:AT+<cmd> 。例如,返回IMSI码信息,“AT+CIMI”,返回PDP信息“AT+CGPADDR”。

不同的命令其大致的语法格式是差不多的,当然也有一些自定义的AT命令,但其基本格式都是需要按照AT标准来定义。

AT命令的响应:

当AT命令处理程序处理完一行命令后,它将输出“OK”或“ERROR”,以此来指示它已经准备号接受新命令

响应的数据格式如下:
<CR><LF>+cmd:<parameters><CR><LF>
<CR><LF>OK<CR><LF>
或者
<CR><LF><parameters><CR><LF>
<CR><LF>OK<CR><LF>

  • AT命令操作实例

熟悉AT命令后,我们就需要对AT命令进行具体的操作了。这里就需要使用到硬件开发包中的NB-IOT模块以及一根USB线。

首先,我们需要通过USB/串口线将电脑与到NB-IOT模块连接上。这时你的电脑“设备管理器”里面应该会多一个串口。然后打开串口调试工具,选择串口号,把波特率设置为9600,其他参数默认。完成这些步骤后,我们就可以通过串口调试工具向NB-IOT模块发送各种AT命令进行测试,以此来熟悉各个AT命令的使用方法。以下为部分测试命令的说明。

返回模块的IMSI
发送:AT+CIMI

响应:460111175490643

OK

获取模块的IMEI
发送:AT+CGSN=1

响应:+CGSN:867726030170296

OK

配置PDP
发送:AT+CGDCONT=1,"IP","cmnet"

OK

注:此处设置APN为“cmnet”

激活网络连接
发送:AT+CGATT=1

OK

获取信号强度

发送:AT+CSQ

响应:+CSQ:20,99

OK

注:命令返回:+CSQ:  **, ##
其中:**应在 0 到 31 之间(99表示无信号),数值越大表明信号质量越好。
##为误码率,值在 0 到 99 之间。否则应检查天线或 SIM 卡是否正确安装。

查询网络连接状态
发送:AT+CGATT?

响应:+CGATT:1

OK

注:1表示注册成功,0表示不成功。

查询网络注册状态
发送:AT+CEREG?

响应:+CEREG:1,1

OK

注: 命令返回:+CEREG:*,#

* 取值说明如下:

  • 0 :表示禁用网络注册的主动上报结果码
  • 1:启用网络注册的主动上报结果码

#取值说明如下:

  • 0:没有搜寻一个新的运营商进行注册
  • 1:已注册成功,本地网络
  • 2:未注册,正在搜寻一个新的运营商进行注册
  • 3:注册被拒绝
  • 4:未知
  • 5:已注册成功,漫游网络

所以如果#的值是1或者5则表示数据业务可以使用, 2、3、4 表示数据业务不可用。

查询信令连接状态
发送:AT+CSCON?

响应:+CSCON:0,1

OK

注:命令返回+CSCON:0,*

其中*的取值是1表示连接成功状态,0表示空闲状态。

创建UDP,端口为4505
发送:AT+NSOCR=DGRAM,17,4505,1

响应:1

OK

发生UDP数据
发送:AT+NSOST=1,47.91.238.235,7385,5,3132333435

响应:1,5

OK

有UDP数据包被接收的提示(模块主动返回的,无需发送命令)

响应:+NSONMI:1,5

读取UDP数据
发送: AT+NSORF=1,5

响应:1,47.91.238.235,7385,5,3132333435,0

OK

注:命令输入完时都需要按一下Enter键再发送,目的就是给命令添加结束符(\r\n回车换行符)

想获取其它更多的AT命令使用方法,我们可以去阅读所使用的NB-IOT模块的AT命令手册。也可以下载3GPP官方文档参考。网址:http://www.3gpp.org/ftp/Specs/archive/27_series/27.007/

文章评论