赞
踩
AT 命令(AT Commands)最早是由发明拨号调制解调器(MODEM)的贺氏公司(Hayes)为了控制 MODEM 而发明的控制协议。后来随着网络带宽的升级,速度很低的拨号 MODEM 基本退出一般使用市场,但是 AT 命令保留下来。
在嵌入式开发中,经常是使用AT命令去控制各种通讯模块,比如ESP8266 WIFI模块、4G模块、GPRS模块等等。一般就是主芯片通过硬件接口(比如串口、SPI)发送AT命令给通讯模块,模块接收到数据之后回应响应的数据。
在这个通讯过程中其实就是涉及AT命令客户端和AT命令服务器,AT命令集就是他们互相约定好的协议接口。大概的通讯结构如下:
其中,AT客户端通常是主芯片作为客户端,AT服务器一般就是各种通讯模块。
AT命令由三个部分组成,分别是前缀、主体和结束符。其中前缀由字符 AT 构成;主体由命令、参数和可能用到的数据组成;结束符一般为 <CR><LF>
("\r\n"
)。
比如 AT+CWMODE=3\r\n
这条命令,AT就是前缀,中间就是主体部分,\r\n 就是结束符。
AT命令通讯过程的实现,需要AT Client 和 AT Server 两部分共同完成。
AT客户端和AT服务器之间硬件通讯接口,一般最常用的是串口,也有SPI接口等。
AT Client主要作用是主动发送AT命令,然后等待AT Server的响应数据,并对响应数据或者AT Server主动发送的数据(即URC数据)进行解析。
AT Server 返回给 AT Client 的数据有两种。命令响应数据和 URC 数据(unsolicited result code)。
命令响应数据:AT Client 发送命令后 AT Server 回应的响应状态和信息。
URC数据:AT Server 主动发送给 AT Client 的数据。比如 AT Server接收到网络的数据后,会主动把这些数据发送给 AT Client ,又或者 WIFI 断开连接等,也会主动发数据告知 AT Client。
命令 | 功能 |
---|---|
AT | 回复OK。主要用于查询模块是否正常工作 |
AT+RST | 复位模块 |
ATE0/ATE1 | 关闭/打开命令回显功能 |
AT+CWMODE=1 | 设置WIFI模式为 WIFI station 模式 |
AT+GMR | 获取模块版本信息 |
AT+CIFSR | 查询模块IP地址 |
AT+CIPMUX=0/1 | 0:单连接。1:开启多连接。这时可以支持多个TCP客户端接入模块(模块作为TCP Server)。当使能了多连接之后,后面的有些指令就要带上连接号了,不然模块会识别为错误的AT指令。 |
AT+CWJAP=“SSID”,“password” | 连接WIFI。SSID是WIFI名称,password是WIFI密码。 |
AT+CIPSTART=“TCP”,“192.168.0.102”,8080 | ESP8266作为TCP Client连接到TCP服务器。TCP代表协议,192.168.0.102是服务器IP,8080是服务器端口。 |
AT+CIPSEND=n | ESP8266模块向TPC Server发送数据,n表示要发送多少个字节。如果这条命令发送成功的话,会回复 OK 然后接着下一行回复 ‘>’ 这个符号。 然后再接着向模块写入n字节数据(超过n字节的话,会丢弃超过的数据),这个时候就相当于发送出去了。如果回复 SEND OK 表示发送成功,回复 SEND FAIL 表示发送失败。 |
+IPD,n:xxxxxxxxxxx | 当模块接收到 TCP Server 发送的数据时,会回复这条数据给主芯片(AT Client)。其中n,表示接收到了n字节,: 号后面就是 TCP Server 实际发送过来的数据。 |
AT+CIPCLOSE | ESP8266模块断开与 TCP Server 的网络连接。 |
AT+CWQAP | ESP8266模块断开 WIFI 连接。 |
ESP8266模块是使用串口对外作为通讯接口的,我们可以通过串口发送各种AT命令配置模块、收发数据等等。
我们使用电脑上运行的串口助手作为 AT Client 发送命令和接收模块的响应数据、URC数据,ESP8266模块作为AT Server。
1、USB转串口连接ESP86266模块
首先,使用USB转串口,接线到ESP8266模块。我们只要连接模块的 VCC、GND、RX、TX,这四个引脚即可。如下图:
连接好之后,USB转串口插到电脑上。然后使用串口助手发送上面介绍的常用AT命令。
2、PC串口助手发送AT命令
PC段运行串口助手,通过串口助手发送AT命令给ESP8266模块,如下,记录了AT发送命令和命令响应数据。
[13:46:03.634]发→◇AT+GMR [13:46:03.639]收←◆AT+GMR AT version:1.2.0.0(Jul 1 2016 20:04:45) SDK version:1.5.4.1(39cb9a32) v1.0.0 Mar 11 2018 18:27:31 OK [13:46:10.170]发→◇AT+CIFSR [13:46:10.174]收←◆AT+CIFSR +CIFSR:APIP,"192.168.4.1" +CIFSR:APMAC,"4a:55:19:c7:ed:ad" +CIFSR:STAIP,"192.168.0.100" +CIFSR:STAMAC,"48:55:19:c7:ed:ad" OK [13:46:25.723]发→◇AT+CIPSTART="TCP","192.168.0.103",8080 [13:46:25.729]收←◆AT+CIPSTART="TCP","192.168.0.103",8080 [13:46:25.782]收←◆CONNECT OK [13:51:50.705]发→◇AT+CIPSEND=4 [13:51:50.710]收←◆AT+CIPSEND=4 OK > [13:51:56.161]发→◇abcd [13:51:56.166]收←◆ busy s... Recv 4 bytes [13:51:56.222]收←◆ SEND OK [13:52:01.535]收←◆ +IPD,10:1234567890
下图记录了收发过程:
如果要连接TCP Server,那么还有在电脑上开启一个TCP Server,这样ESP8266要连接TCP Server是才能连接成功。下面就开启了一个TCP服务器。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。