无线传感网

AT 指令入门

作者:陈广 日期:2019-12-26


AT 指令助手1.0版已经完成,这篇文章主要讲解软件如何使用,但本文也并非专门讲解软件的使用,而是在学习 AT 指令的同时演示 AT指令助手的使用,这样更接地气一些。软件上有一个帮助按钮,也是直接链接到本文。

各版本简介

Version 1.0

  • 日期:2019-12-26
  • 功能:
    • 串口通信
    • 指令集合面板,可使用中英文搜索指令,查看某个指令帮助文档。
    • 指令脚本面板,可自动运行多条指令并保存为脚本文件。
    • 指令手册编辑窗口,可编写自己的命令手册。

AT 指令

AT 命令集是由拨号调制解调器(MODEM)的发明者贺氏公司(Hayes)为了控制 Modem 发明的控制协议。AT 是 Attention 的缩写,协议本身采用文本。每个命令均以 AT 打头,因此得名。贺氏公司已于 1999 年破产,但 AT 命令保留了下来。主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和 HP 共同为 GSM 研制了一整套 AT 指令,其中就包括对 SMS 的控制。AT 指令在此基础上演化并被加入 GSM 07.05 标准以及现在的 GSM07.07 标准,完全标准化和比较健全的标准。

AT 指令集从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过 TA,TE 发送 AT 指令来控制移动台(Mobile Station,MS)的功能,与 GSM 网络业务进行交互。用户可以通过 AT 指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。

AT 命令简单易懂,并且采用标准串口来收发 AT 命令。另外AT 命令本身使用的是文本,这使得数据的传输可以跨操作系统,跨平台。这样我们对设备的控制就大大简化了。比如现在我们可以很方便地直接通过上位机软件控制通信模块完成各种操作,正是得益于以上优点。

AT 指令集可分为三种类型:

  • 执行命令:
    • 有参数:AT+<X>=<...>
    • 无参数:AT+<x>
  • 测试命令:AT+<x>=?
  • 查询命令:AT+<x>?

大部分模组支持 3GPP TS27.007 AT指令集,并在此基础上扩展出自定义指令集。以 C 开头的指令如 AT+CFUN 是通用命令,以 N 开头的命令是模组厂商自定义指令,不同的模组厂商可能使用不同的指令实现相同的功能。

第一条指令

开发板连接及参数设置请参考 这篇文章

我们首先发送第一个,也是最简单的一个 AT 指令:ATI,结果如下:

>>>>>>>>>>  ATI
ATI

Quectel_Ltd
Quectel_BC26
Revision: BC26NBR01A03

OK

如下图所示:

出现OK字样,说明已经成功连接到了 BC26。我的AT指令助手将我们发送的指令也打印出来了,发送内容在>>>>>>>>>>之后显示。之所以这样做,是因为在使用其它串口工具的过程中,我发现,很难区分哪些是发送的内容,哪些是接收的内容,也无法一眼看出接收的内容到哪结束,加上箭头之后就很直观了,可以看到每条命令的边界在哪。可以取消选中上图中的红框中的多选框关闭发送信息的显示。

这条指令用于查询芯片的产品信息:

  • Quectel_Ltd :这是移远通信公司的简写,表示通信芯片为移远通信的产品。
  • Quectel_BC26 :表示芯片的型号为移远的 BC26。
  • Revision: BC26NBR01A03 :BC26 内部自带一个操作系统,支持各种网络协议,这些软件可以使用工具烧写进芯片内部,而这个就是此软件的版本号。

我们看到,发送给芯片的指令会自动原样返回,这个叫回响(echo),如果使用的是我的 AT 助手,由于已经打印发送内容,可以将回响关掉:发送ATE0,然后再次发送ATI,结果如下:

>>>>>>>>>>  ATE0
ATE0

OK

>>>>>>>>>>  ATI

Quectel_Ltd
Quectel_BC26
Revision: BC26NBR01A03

OK

回响关掉后,画面就清爽了一些。

查看 SIM 卡连接状态

下面我们用另一种形式来发送命令,如下图所示:

假设我们发送的是AT+CIMI命令,又不太记得这个命令的全称了,这时可以点击窗体左侧【AT指令集合面板】按钮,打开AT命令面板。在下方浅紫色组合框中输入ci,此时找到AT+CIMI命令。可以在显示AT+CIMI的面板上编辑命令,点击右边圆形三角图标按钮即可直接发送命令。需要注意,这里查询的是所有命令手册里的命令,查询过程是查找两个项,一个是指令名称,另一个是面板上指令的中文标题。也就是说,也可以在组合框中输入中文进行查询,这个功能相当爽啊!如下图所示:

我买的这个模块是要插 SIM 卡的,上次去参观世界物联网博览会发现有 eSIM 的 NB-IOT 卡,那个是不需要插卡的,有机会弄一块回来玩玩。AT+CIMI是检查 SIM 卡是否连接成功,结果如下:

>>>>>>>>>>  AT+CIMI

460043338909075

OK

返回的数字是 SIM 卡的卡号,说明已经成功连接 SIM 卡。

输入命令AT+CGSN=1查看国际移动设备识别码,结果如下:

>>>>>>>>>>  AT+CGSN=1

+CGSN: 866971034209911

OK

查看信号质量

首先查看信号质量,输入AT+CESQ,结果如下:

>>>>>>>>>>  AT+CESQ

+CESQ: 45,0,255,255,14,63

OK

如何看这些返回数据请查看数据手册,AT指令助手里可以很方便查到,如下图所示:

需要注意,软件还未写完,界面上将来有可能会有变化。

上面这个是扩展信号质量命令,也可以使用一个简单的命令AT+CSQ,只返回2个参数:

>>>>>>>>>>  AT+CSQ

+CSQ: 24,0

OK

数字表明我这里信号还是不错的吧,0 应该是误码率。只是此命令在 BC26 的 AT命令手册中没有介绍。

查看入网状态

如下所示先后输入两个命令:

>>>>>>>>>>  AT+CGATT?

+CGATT: 1

OK

>>>>>>>>>>  AT+CGPADDR=1

+CGPADDR: 1,100.121.188.17

OK

AT+CGATT? 查看入网状态,返回 1 表示入网成功,返回 0 表示入网失败。

AT+CGPADDR=1 命令返回 IP 地址,从结果上看,已经有了一个 IP 地址,表明已经可以上网了。

接下来查看 SIM 卡运营商是电信的还是移动。输入命令AT+QBAND?,结果如下:

>>>>>>>>>>  AT+QBAND?

+QBAND: 8

OK

返回 8,表明运营商是移动,如果返回 5,则表明运营商是电信。

命令手册示例

接下来列出命令手册中的几个官方示例。命令我都编辑好了,神器在手,天下有我!如下图所示:

如上图所示,我们可以在左边命令集合面板中通过点击箭头按钮将指令添加至指令脚本面板。可以向脚本面板添加多条指令。在脚本中可以单独运行某条指令,也可以自动运行所有指令。非常方便,上图我已经将第一个示例的所有指令添加进面板。可以【选择脚本】组合框中选择“查看网络附着状态”载入此指令组。如下图所示:

还可以编辑自己的指令组并生成脚本文件:

将来讲到的所有命令组,我都会生成脚本供大家下载。

查询网络附着状态

下面演示了自动附着到网络的简单示例。客户仅需要通过以下命令就可以查询模块是否已经附着到网络(注意,先按评估板上的 Reset 按钮重启再运行脚本):

<<  +CPIN : READY //已检测到 SIM 卡
>>  AT+CFUN? //值为 1.
<<  +CFUN:1

<<  OK

>>  AT+CIMI //查询 IMSI 号.
<<  460012345678969

<<  OK

>>  AT+CESQ //查询信号强度
<<  +CESQ: 36,99,255,255,12,53

<<  OK

>>  AT+QENG=0 //查询模块当前网络状态
<<  +QENG: 0,2506,2,62,"6923252",-84,-10,-74,2,5,"69C9",0,90

<<  OK

>>  AT+CGATT? //查询网络是否已激活,1 表示成功附着网络,0 表示未附着网络

<<  +CGATT:1

<<  OK

>>  AT+CEREG? //查询网络注册状态,1 表示已经注册网络,2 表示正在搜索网络

<<  +CEREG:0,1

<<  OK

>>  AT+CSCON? //查询信号连接状态,1 表示连接;0 表示空闲

<<  +CSCON:0,1

<<  OK

自动网络附着

以下是自动网络附着的一个简单示例。用户无需总是查询模块是否已经附着网络,网络附着状态将通过 URC(非请求结果码)报告(注意,先按评估板上的 Reset 按钮重启再运行脚本):

<<  +CPIN : READY //检测到SIM卡
>>  AT+CFUN? //值为 1
<<  +CFUN:1

<<  OK

>>  AT+CIMI //查询 IMSI 号
<<  460012345678969

<<  OK
>>  AT+CEREG=1 //设置自动报告网络注册状态,当模块注册了网络,将报告一个 URC

<<  OK
>>  AT+CSCON=1 //设置自动报告网络注册状态,当模块注册了网络,将报告一个 URC

<<  OK
<<  +CEREG:2 //URC 报告,MT 当前正在尝试附着或搜索一个进行注册的操作

<<  +CSCON:1 //URC 报告,MT 已连接
<<  +CEREG:1 //URC 报告,MT 已连接

>>  AT+CESQ //查询信号强度
<<  +CESQ: 36,99,255,255,12,53

<<  OK

>>  AT+QENG=0 //查询模块状态
<<  +QENG: 0,2506,2,62,"6923252",-84,-10,-74,2,5,"69C9",0,90

<<  OK

>>  AT+CGATT? //查询网络是否激活,1 表示附着网络成功,0 表示未附着网络

<<  +CGATT:1

<<  OK
>>  AT+CEREG? //查询网络注册状态,1 表示已经注册网络,2 表示正在搜索网络

<<  +CEREG:0,1

<<  OK

>>  AT+CSCON? //查询信号连接状态,1 表示连接,0 表示空闲

<<  +CSCON:0,1

<<  OK

指定PLMN的自动网络附着

如果网络附着过程占用很长的时间,用户可尝试指定 PLMN 或指定专用的 EARFCN 或 PCI 或 BAND 以减少搜索时间。以下简单救命演示了包含 PLMN 或专用 EARFCN/PCI 或 BAND 的自动网络附着。

PLMN(Public Land Mobile Network,公共陆地移动网络),由政府或它所批准的经营者,为公众提供陆地移动通信业务目的而建立和经营的网络。该网络必须与公众交换电话网(PSTM)互连,形成整个地区或国家规模的通信网。如中国移动的 PLMN 为 46000、46002、46004、46007,中国联通的 PLMN 为 46001、46006、46009,中国电信的 PLMN 为 46003、46005,电信 4G 使用 46011,铁通使用 46020。

<<  +CPIN : READY //检测到SIM卡
>>  AT+CFUN? //值为 1
<<  +CFUN:1

<<  OK
>>  AT+CIMI //查询 IMSI 号.
<<  460012345678969

<<  OK
>>  AT+COPS=1,2,"46000" //指定 PLMN
<<  OK
>>  AT+CESQ //查询信号强度
<<  +CESQ: 36,99,255,255,12,53

<<  OK

>>  AT+QENG=0 //查询模块状态
<<  +QENG: 0,2506,2,62,"6923252",-84,-10,-74,2,5,"69C9",0,90

<<  OK

>>  AT+CGATT? //查询网络是否激活,1 表示附着网络成功,0 表示未附着网络

<<  +CGATT:1

<<  OK
>>  AT+CEREG? //查询网络注册状态,1 表示已经注册网络,2 表示正在搜索网络

<<  +CEREG:0,1

OK

>>  AT+CSCON? //查询信号连接状态,1 表示连接,0 表示空闲

<<  +CSCON:0,1

<<  OK

注意:我的开发板使用的是移动卡,指定 PLMN 为 46000 可以上网,各位根据自己的运营商可以一个个试。如果都不行,要重新上网,请重启评估板后发送命令:AT+COPS=0

指定 EARFCN/PCI

EARFCN 表示中心频点,PCI 表示物理小区号

<<  +CPIN : READY //检测到SIM卡
>>  AT+CFUN? //值为 1.
<<  +CFUN:1

<<  OK

>>  AT+CIMI //查询 IMSI 号.
<<  460012345678969

<<  OK
>>  AT+QLOCKF=1,2506,2,62 //指定 EARFCN ,偏移和 PCI
<<  OK
>>  AT+CESQ //查询信号强度
<<  +CESQ: 36,99,255,255,12,53

<<  OK

>>  AT+QENG=0 //查询模块状态
<<  +QENG: 0,2506,2,62,"6923252",-84,-10,-74,2,5,"69C9",0,90

<<  OK

>>  AT+CGATT? //查询网络是否激活,1 表示附着网络成功,0 表示未附着网络

<<  +CGATT:1

<<  OK
>>  AT+CEREG? //查询网络注册状态,1 表示已经注册网络,2 表示正在搜索网络

<<  +CEREG:0,1

<<  OK

>>  AT+CSCON? //查询信号连接状态,1 表示连接,0 表示空闲

<<  +CSCON:0,1

<<  OK

指定 BAND

+CPIN : READY //检测到SIM卡
AT+CFUN? //值为 1
+CFUN:1

OK

AT+QBAND=? //查询支持的频带列表
+QBAND:(1,2,3,5,8,11,12,13,17,18,19,20,21,25,26,28,31,66,70)

OK
AT+QBAND=1, 5 //设置使用的频带

OK
+IP: 10.170.235.216

AT+QBAND? //查询频带
+QBAND:5

OK

这是官方手册的参数,我的评估板需要使用命令AT+QBAND=0, 8方能成功。

编写自己的命令手册

通信芯片数量众多,每个芯片都有自己的命令手册,即使同样是使用 MT2625 的 NB-IOT 芯片,不同的厂商的 AT 命令也会有所不同。AT 指令助手最强大的地方莫过于可以编写自己的命令手册,也可对现有命令手册进行编辑。

按上图指示打开 AT指令编辑窗口并点击【新建一个命令手册】按钮打开如下窗口。

在各编辑框内输入相应信息,一般情况下,手册都是翻译而来【手册出处】填写的是原文档名称。手册名称由自己起名,版本号及出版日期都可在手册原文中查到。填写完毕后,单击【创建】按钮返回命令编辑窗口。

如上图所示,刚才填写的内容已经显示在窗体中间下方,在中间最上方编辑框输入第一条命令“good+good+study”,然后点击左边【新建一个指令】按钮,按照下图指示进行操作:

输入相关内容后点击【保存】按钮对文档进行保存,此保存按钮是保存所有命令,并不是单条命令信息,可以选择编辑多条命令后再保存,但如果中间断电,信息就没有了。也可以每编辑一条命令保存一次。如上图所示,在编辑的过程中可以随时通过点击【显示效果】选项卡来预览 Markdown 文档的显示效果。下图为显示效果。

注意:MarkDown 格式中,要换行,一般是打一个空行,但如果不打空行也可以在每行结尾打两个空格换行,上图中的每行后面皆有两个空格,第一行标题除外。

别人写好的文档导出后,你可以将其导入自己使用。删除按钮只是删除一条指令,我并没有做删除文档功能,以免误操作。需要删除文档的可到 Manual 文件夹中自行删除。

文档使用方法就介绍到这里,将来可能还会对程序进行修改,界面随时会变。各位如果在使用过程中发现什么 bug,可 E-main 我:cgblueksy@126.com。

;

© 2018 - IOT小分队文章发布系统 v0.3