一、AT命令简单介绍
AT即Attention,AT指令集是从终端设备(Terminal Equipment, TE)或数据中断设备(Data Terminal Equipment, DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设备(TE)或电脑来完全控制 SMS。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM 研制了一整套AT指令,其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM 07.05标准以及现在的GSM07.07标准,完全标准化和比较健全的标准。如:对SMS的控制共有3种实现途径:最初的Block Mode;基于AT指令的Text Mode;基于AT指令的PDU Mode。到现在PDU Mode已经取代BlockMode,后者逐渐淡出。GSM 模块与计算机之间的通信协议是一些AT指令集,AT指令是以AT作首,字符结束的字符串,AT指令的响应数据包在 中。每个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。

GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。GSM模块根据其提供的数据传输速率又可以分为GPRS模块、EDGE模块和纯短信模块。短信模块只支持语音和短信服务。GPRS,可说是GSM的延续。它经常被描述成“2.5G”,也就是说这项技术位于第二代(2G)和第三代(3G)移动通讯技术之间。GPRS的传输速率从56K到114Kbps不等,理论速度最高达171k。相对于GSM的9.6kbps的访问速度而言,GPRS拥有更快的访问数据通信速度,GPRS技术还具有在任何时间、任何地点都能实现连接,永远在线、按流量计费等特点。EDGE技术进一步提升了数据传输的速率到384K-473K,被称为”2.75G”,数据传输速率更2倍于GPRS。目前,国内的GSM网络普遍具有GPRS通讯功能,移动和联通的网络都支持GPRS,EDGE在部分省市实现了网络覆盖。

1、AT命令的优点
命令简单易懂,并且采用标准串口来收发AT命令,这样对设备控制大大简化了,转换成简单串口编程了。

AT命令提供了一组 标准的硬件接口——串口,这个简化的硬件设计,在较新的电信网络模块,几乎都采用串口硬件接口。

AT命令功能较全,可以通过一组命令完成设备的控制,完成呼叫、短信、电话本、数据业务、传真。

2、AT命令与ppp协议的关系
在数据通讯的应用中,比如说无线拨号上网。除了AT命令,还会常听到另外一个网络协议ppp(Point to Point Protocol)。

在应用串口通讯的场合,我们可以从硬件上明确看到分为两大块。

DTE(Data Terminal Equipment)数据终端设备。通常是一个智能设备,如PC机,嵌入式主机等,用于发送AT命令和PPP命令,
还有用于链路通讯的DCE(Data Circuit Terminal )数据电路终端。用于与外界建立通讯的链路。
DTE与DCE之间用串口相连。比如PC机用串口接入拨号MODEM时,PC机是DTE,拨号MODEM是DCE.

AT和PPP的相同点都是由DTE发送给DCE的协议。不同点是AT只用于DTE来控制DCE。比如初始化设备,用于发送呼叫,发送短消息等,虽然AT有规范,但是大部分DTE产商都扩展了一些AT命令。

而PPP是用于数据通讯,是DTE与远程的接入服务器(Access Server)进行通讯的协议。是属于网络通讯的数据链路层协议,DCE本身收到PPP包时,除了将其调制到物理层上发送到远端服务器外,本身并不处理PPP的内容。

AT命令的简单介绍和使用-编程知识网
二、AT命令的简单使用
不同产商的AT命令大同小异,但是还是有所区别,一般要看产品手册。

AT命令以AT开头,一回车符结束。一个简单命令如:AT回车符,模块对命令的响应为:回车符、换行符response回车符、换行符。

AT命令大致可以分为三类:

  • 基本AT命令:AT<><>或者AT&<><>,如:ATE1(打开串口回显),AT&D1(开启DTR低电平切换)。
  • S参数AT命令:ATS<>=<>,如:ATS0=1(设置模块来电一声自动接起)
  • 扩展型AT命令(四种)
    ①AT+<>=?
    用于查看此命令在模块中允许设置的参数范围,如发送命令:AT+CREG=?
    正常时相应:+CREG: (0-2)
    OK
    AT命令的简单介绍和使用-编程知识网
    ②AT+<>?
    用于查看此命令在模块中的当前设置值,如发送命令:AT+IPR?
    正常时响应:+IPR:0
    OK

③AT+<>=<>
用于设置当前AT命令x的参数值,如发送命令:AT+CMGF=0
正常时响应:OK

④AT+<>
查看模块内部的一些状态值,如发送命令:AT+CSQ
正常时响应:+CSQ:29, 0
OK

一些常见的AT命令简单介绍:
AT:检测Module与串口是否连通,能否接收AT命令;
AT命令的简单介绍和使用-编程知识网

AT+GSN:查询IMEI,如果不需要,可以不用获取
AT命令的简单介绍和使用-编程知识网
AT+CPIN?:查询SIM卡是否在位;
AT命令的简单介绍和使用-编程知识网
AT+CSQ:查询信号强度
AT命令的简单介绍和使用-编程知识网
AT+CREG?:查询是否注册到运营商
AT命令的简单介绍和使用-编程知识网
AT+COPS?:查询是哪家运行商

AT命令的简单介绍和使用-编程知识网
拨打电话的一些常见AT命令:
拨打电话:ATD电话号码;
来电显示:AT+CLCC;
接电话:ATA;
挂电话:ATH;
挂电话尚未接通的来电:AT+CHUP

发短信的一些常见AT命令:

短信的编码方式有两种:text模式,pdu模式。因此短信的AT指令执行格式也有两种,分别对应text模式和pdu模式。

1、Text模式
纯文本模式,支持不同的字符集,从技术上说也可用于发送中文短消息,但国内手机基本上不支持,主要用于欧美地区。

2、Pdu模式

这个是手机默认的编码方式,可以使用任何字符集,其包括三种编码方式:7bit编码,8bit编码,UCS2编码。

7bit编码:ASCⅡ码就是7bit编码。

8bit编码:ASCⅡ字符可以使用7位二进制表示,但是由于计算机的基本处理单位是字节(1byte=8bit),所以一般在高位补0,用一个字节表示一个ASCⅡ字符。这就是8bit编码。

UCS2编码:处理Unicode字符,使用2个字节来表示一个字符,可以表示世界上所有的字符。发送中文就是使用此编码方式。

发英文短信

设置信息格式: AT+CMGF=1 (格式有TEXT方式和PDU方式。AT+CMGF=1时是TEXT方式,AT+CMGF=0是PDU方式)
发送短信: AT+CMGS=“电话号码”
data //下一行出现>后面跟的data 为发送内容(以ctrl+z(0x1A)结束)

设置收到短消息提示: AT+CNMI=1,1,2

设置存储区域为SM: AT+CPMS=”SM”

读取短信: AT+CMGR=index(index为读第几条短信)

发中文短信:
具体的AT命令可以参考此篇博客:https://blog.csdn.net/a_tu_/article/details/47808017

AT命令详解:https://blog.csdn.net/bytxl/article/details/25614491