一、前言
本次测试所使用的是正点原子的ATK-ESP8266 WIFI模块。直接使用官方提供的固件使用AT指令来配置模块并使用。
模块默认为AT指令状态,模拟波特率为115200(8bit数据位,1bit停止位)。
硬件连接
使用USB转TTL方式(电脑需要安装CH340驱动)连接ESP8266,接线图如下。
二、透传模式
什么是透传模式,简单的讲就是,ESP8266将通过串口接收到的数据,直接进行转发到所设置的目标服务器的端口上,而我们不需要关心WIFI协议是如何来实现数据的传输。只需要在ESP8266上设置好服务器地址即可。
ATK_ESP8266 模块仅在 TCP Client 和 和 UDP ,支持透传模式。
三、ESP8266的三种工作模式
ESP8266支持 STA / AP / STA+AP 这三种工作模式。
- STA模式:ESP8266模块通过路由器连接互联网,可以通过互联网实现对设备的远程控制。类似于无线网卡。
- AP模式:ESP8266模块作为热点,可以实现手机或者其他联网设备通过WIFI直接与模块进行通信,实现局域网无线控制。类似于路由或者网桥。
- STA+AP模式:两种模式都支持。
通俗来讲,STA模式就是一个联网设备,需要通过wifi连接在其他的无线路由器上。AP模式就是一个无线路由器,其他联网设备可以通过wifi接入。
四、ESP8266的基本常用AT指令集
在这里只列出几个常用的基本的AT指令集。
AT指令 | 功能 |
---|---|
AT | 测试指令 |
AT+RST | 重启模块 |
AT+GMR | 查看版本信息 |
ATE | 开关回显功能 |
AT+RESTORE | 恢复出厂设置 |
AT+UART | 设置串口配置参数 |
*关于回显功能就是在使用AT指令对ESP8266进行配置的时候,ESP8266是否将收到的AT指令通过串口发回。
在这里主要说一下串口参数配置这个AT指令。
AT+UART=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>
参数说明:
- < baudrate > 串口波特率
波特率支持范围: 110~4608000
- < databits> 数据位
5:5 bit 数据位
6:6 bit 数据位
7:7 bit 数据位
8:8 bit 数据位
- < parity> 校验位
0: None
1: Odd
2: EVEN
- < flow control> 流控
0:不使能流控
1:使能 RTS
2:使能 CTS
3:同时使能 RTS 和 CTS
比如我需要设置串口波特率为256000bit/s,8bit数据位,1bit停止位,无校验位,需要发送
AT+UART=256000,8,1,0,0
注:本设置将保存在 Flash user parameter 区,重新上电后 仍生效。
五、WIFI功能的AT指令
指令 | 描述 |
---|---|
AT+CWMODE | 选择 WIFI 应用模式 |
AT+CWJAP | 加入 AP |
AT+CWLAP | 列出当前可用 AP |
AT+CWQAP | 退出与 AP 的连接 |
AT+CWSAP | 设置 AP 模式下的参数 |
AT+CWLIF | 查看已接入设备的 IP |
AT+CWDHCP | 设置 DHCP 开关 |
AT+CWAUTOCONN | 设置 STA 开机自动连接到 wifi |
AT+CIPSTAMAC | 设置 STA 的 MAC 地址 |
AT+CIPAPMAC | 设置 AP 的 MAC 地址 |
AT+CIPSTA | 设置 STA 的 IP 地址 |
AT+CIPAP | 设置 AP 的 IP 地址 |
AT+CWSTARTSMART | 启动智能连接 |
AT+CWSTOPSMART | 停止智能连接 |
AT+WPS | 设置 WPS 功能 |
AT+MDNS | 设置 MDNS 功能 |
AT+CWHOSTNAME | 设置 ATK-ESP-01 Station 的主机名字 |
六、TCP/IP相关AT指令
指令 | 描述 |
---|---|
AT+CIPSTATUS | 获得连接状态 |
AT+CIPDOMAIN | 域名解析功能 |
AT+CIPSTART | 建立 TCP 连接或注册 UDP 端口号 |
AT+CIPSSLSIZE | 设置 SSL Buffer 容量 |
AT+CIPSEND | 发送数据 |
AT+CIPCLOSE | 关闭 TCP 或 UDP |
AT+CIFSR | 获取本地 IP 地址 |
AT+CIPMUX | 启动多连接 |
AT+CIPSERVER | 配置为服务器 |
AT+CIPMODE | 设置模块传输模式 |
AT+SAVETRANSLINK | 保存透传到 Flash |
AT+CIPSTO | 设置服务器超时时间 |
AT+CIPDINFO | 接收网络数据时是否提示对端 IP 和端口 |
AT+CIPSNTPCFG | 设置时域和 SNTP 服务器 |
AT+CIPSNTPTIME | 查询 NTP 时间 |
AT+PING PING | 命令 |
AT+ATKCLDSTA | 连接到原子云服务器 |
AT+ATKCLDCLS | 关闭原子云服务器连接 |
七、TCP Client透传模式
首先测试ESP8266模块在STA模式下的透传。
在PC端使用网络调试助手创建一个TCP服务器,设置好主机地址以及主机端口。
然后使用串口助手连接ESP8266,通过AT指令对其进行配置。
1、将ESP8266设置为STA模式。
AT+CWMODE=1 //设置为 STA 模式
响应:OK
2、重启ESP8266,使设置生效
AT+RST
响应:OK
3、连接路由器
AT+CWJAP=“LAB411”,“lab411411”
响应:OK
注意这里,前面是wifi的ssid,后面是password。仅支持2.4GHzwifi。
4、将模块连接到刚刚所创建的TCP server
AT+CIPSTART=“TCP”,“192.168.1.35”,1125
响应:CONNECT OK
5、开启透传模式
AT+CIPMODE=1
响应:OK
6、开始透传
AT+CIPSEND
响应:OK >
此时,我们就可以在串口助手和网络调试助手中进行数据传输了。
7、退出透传模式
一旦进入了透传模式,再发送AT指令是不会回复的,所发送的AT指令会当做消息发送。
在透传模式中,若识别到单独的一包数据“ +++”,则退出透传模式。
+++
8、开机自动进入透传模式
如果需要模块上电自动个连接到某个 IP 并进入透传模式,这个时候需要在模块连接路由器wifi热点之后,发送以下命令设置模块为上电自动到连接到 TCP Server:192.168.1.35,1125,并进入透传模式。
AT+SAVETRANSLINK=1,"192.168.1.35",1125,"TCP"
当发送AT+SAVETRANSLINK 指令后,模块断电再上电会自动进入透传模式,此时发送, 指令模块是不会回复的(即使透传的服务器不存在, 模块也会进入透传模到式的)。要退出开机自动进入透传模式,需要先退出透传模式,再发送“AT+SAVETRANSLINK=0 ”,这样上电模块就不会再上电进入透传了。