AT指令(基于esp8266)
ESP8266-01s比01升级了
#
什么是AT指令AT(Attention) command set,AT指令集或AT命令集,一般称其为AT指令
来源于海斯命令集:Hayes command set
用于直接发送命令操作设备。
指令集参考文档rtos_doc_source\RTOS培训资料\00_基础资源资料\1_STM32F103\3_硬件资料\4_ESP8266-01S模块资料\01_技术手册\01_乐鑫(espressif)\ESP8266 Non-OS SDK AT 指令集_V3.0.1.pdf
注意事项
发送”AT”可以判断模块是否就绪,返回”OK“表示就绪
AT命令区分大小写
串口调试助手需要勾选发送新行,也就是命令后面需要有
\r\n
CR(Carriage Return)\r 表示回车, LF(Line Feed)\n 表示换行
Dos和Windows采用回车+换行(CR+LF)表示下一行
\r\n
UNIX/Linux采用换行符(LF)表示下一行
\n
MAC OS系统采用回车符(CR)表示下一行
\r
Windows下编写的Shell脚本,直接放到linux/unix下执行会报错,就是因为行结束符不一样导致的。
#
AT指令的分类和提示信息分类:
- 测试指令:⽤于查询设置指令的参数以及取值范围
- 查询指令:返回参数的当前值
- 设置指令:设置⽤户⾃定义的参数值
- 执⾏指令:执⾏受模块内部程序控制的参数不可变的功能,如指令
"AT"
注意:
- 不是每条AT指令都具备上述4种类型的命令
- []括号内为缺省值,不必填写或者可能不显示.例如,
AT+CWJAP_DEF
—连接 AP,保存到 Flash :AT+CWJAP_DEF=<ssid>,<pwd>[,<bssid>][,<pci_en>]
- 使用双引号表示字符串数据"string”,例如:
AT+CWSAP:="ESP756290","21030826",1,4
- 默认波特率为115200,修改波特率 临时修改-
AT+UART_CUR=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
;写入FLASH修改,AT+UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
- AT指令必须大写,并且以回车换行符结尾(CRLF)
- 命令中分为
xxx_CUR
和xxx_DEF
,前者为临时配置,后者为永久配置,写入Flash
#
基础AT指令基础AT指令是控制模块的基础功能模式的指令,如下表所示:
#
WIFI功能指令配置WIFI连接的AT指令,如下表:
#
TCP/IP 指令#
使用示例参考"rtos_doc_source\RTOS培训资料\00_基础资源资料\1_STM32F103\3_硬件资料\4_ESP8266-01S模块资料\01_技术手册\01_乐鑫(espressif)\ESP8266 Non-OS AT 指令使用示例_V1.3.pdf"
#
(1)单连接的TCP Client配置WIFI模式
连接路由器
注:没有后缀的命令等于
xxx_DEF
,即写入Flash命令一样响应:
查询 ESP8266 设备的 IP 地址
响应:
- PC与ESP8266设备连接同⼀路由器,在PC端使⽤⽹络调试⼯具(使用sscom软件
"rtos_doc_source\RTOS培训资料\00_基础资源资料\1_STM32F103\3_硬件资料\4_ESP8266-01S模块资料\02_开发工具\sscom5.13.1.zip"
),建⽴⼀个UDP传输。
ESP8266 设备作为 TCP client 连接到上述服务器 AT+CIPSTART—建⽴ TCP 连接,UDP 传输或 SSL 连接
发送数据 服务器发送数据:
客户端esp8266发送数据:
报错notail error
是复制命令时后面有符号。 (- -)尴尬
下面是正常的过程
注:发送数据时,如果输⼊的字节数超过了设置⻓度(n),系统将提示 busy,并发送数据的前 n 个字节,发送完成后响应 SEND OK。
当ESP8266设备接收到服务器发来的数据,将提示如下信息:
此指令在普通指令模式下有效,ESP8266 接收到⽹络数据时向串⼝发送 +IPD 和数据:
#
(2)固定远端的UDP通信(多连接)UDP 传输不区分 server 或者 client ,由指令 AT+CIPSTART 建⽴传输。
配置 WiFi 模式
连接路由器
查询 ESP8266 设备的 IP 地址
PC 与 ESP8266 设备连接同⼀路由器,在 PC 端使⽤⽹络调试⼯具,建⽴⼀个 UDP 传输。
UDP 通信的远端固定,由
AT+CIPSTART
指令的最后⼀个参数设置为 0 决定。系统将分配⼀个连接号给这个固定连接,UDP 通信双⽅不会被其他设备替代。使能多连接
esp8266创建 UDP 传输。 分配连接号为 4, UDP协议, 远端ip:192.168.3.3,远端端口号:8080, 本地端口号:9090, UDP模式为0,即远端固定,收到数据后不更改远端目标
格式:
多连接模式 (AT+CIPMUX=1) 时:AT+CIPSTART=<link ID>,<type>,<remote IP>,<remote port>[,(<UDP local port>),(<UDP mode>)]
esp8266发送数据
多连接时:
(+CIPMUX=1)
AT+CIPSEND=<link ID>,<length>
esp8266接收到数据
和之前类似,多了4表示网络连接号。
断开UDP连接(多连接)
当ID为5时,关闭所有连接。
#
(3)远端可变的UDP通信设置与连接wifi部分,和前文一致。这里直接从建立传输开始
当使⽤ AT+CIPSTART 指令创建 UDP 通信,将最后⼀个参数设置为 2 时,UDP 通信的远端可改变。UDP传输远端会⾃动更改为最近⼀个与ESP8266 UDP 通信的远端。
创建 UDP 传输
注意,上面连接方式需要先设置为单连接:
发送数据
发送数据到其他指定远端。例如,发数据到192.168.3.3, 端⼝8081 。
UDP传输远端会⾃动更改为最近⼀个与ESP8266 UDP通信的远端。就是说,现在继续发送,都是默认和8081通信:
接收数据
断开连接(单连接)
#
(4)TCP Client 单连接透传注:ESP8266 AT 默认仅在 TCP client 单连接 或 UDP 传输模式时,⽀持透传
透传是什么?
透明传输:在传输过程中,对外界透明,不管所传输的内容、数据协议形式,不对要传输数据做任何处理,只是把需要传输的内容当成一组二进制数据完美地传输到目的节点。
- 配置WIFI模式,连接路由器;查询 ESP8266 设备的 IP 地址,PC 与 ESP8266 设备连接同⼀路由器,在 PC 端使⽤⽹络调试⼯具,建⽴⼀个 TCP 服务器
- 使能透传模式
- ESP8266 设备向服务器发送数据
收到此命令后先换⾏返回 >
进⼊透传模式发送数据,每包最⼤ 2048 字节,或者每包数据以 20 ms 间隔区分。
- 退出发送数据
在透传发送数据过程中,若识别到单独的⼀包数据 “+++”,则退出透传发送。
“+++“退出透传发送数据,回到正常AT指令模式。此时,TCP连接仍然是保持的,可以再发AT+CIPSEND指令,重新开始透传。
退出透传模式
断开 TCP 连接
#
(5)UDP 透传ESP8266 作为 softAP 实现 UDP 透传的举例,ESP8266 作为 station 可同理实现透传,跳过第二步就可以了。
配置 WiFi 模式
(可选)PC 连⼊ ESP8266 softAP,
在 PC 端使⽤⽹络调试⼯具,建⽴⼀个 UDP 传输
ESP8266 与 PC 对应端⼝建⽴固定对端的 UDP 传输
使能透传模式
发送数据
退出发送数据
退出透传模式
断开 TCP 连接
#
(6)多连接 TCP Server配置 WiFi 模式
使能多连接
建⽴ TCP server
•
<mode>
: ‣
0
:关闭服务器 ‣
1
:建⽴服务器•
<port>
:端⼝号,默认为 333。注:多连接情况下 (AT+CIPMUX=1),才能开启 TCP 服务器。
创建 TCP 服务器后,⾃动建⽴ TCP 服务器监听。
当有 TCP 客户端接⼊,会⾃动占⽤⼀个连接 ID。
在 PC 端使⽤⽹络调试⼯具,建⽴⼀个 TCP client,连接 ESP8266 的 TCP server
ESP8266 作为 TCP server 有超时机制,如果连接建⽴后,⼀段时间内⽆数据来往,ESP8266 TCP server 会将 TCP client 踢掉
补充:设置 TCP 服务器超时时间 - ESP8266 作为 TCP 服务器,会断开⼀直不通信直⾄超时了的 TCP 客户端连接
<time>
:TCP 服务器超时时间,取值范围 0 ~ 7200s。如果设置 AT+CIPSTO=0,则永远不会超时,不建议这样设置。
esp8266发送数据
esp8266接收数据
断开连接
请点击左侧菜单(移动端为右下角)选择要查看的所有笔记吧。