使用AT模式控制ESP8266模块与设备进行通信

想要测试网络有没有接通,最方便的方式就是使用ping测试,ESP8266提供了AT+PING=<IP>的指令,我们可以使用AT+PING=”192.168.0.1″指令ping一下路由器,当然,如果你的路由器ip和我们的不一样要修改IP参数。当然你也可以选择ping外网域名,比如AT+PING=”www.baidu.com”。

可以使用AT+CIPDNS_CUR?查看DNS地址,这个DNS地址是临时获取到的地址,也可以使用AT+CIPDNS_DEF=1,”DNS1″,”DNS2″设置指定dns地址并保存到flash中,其实DNS1和DNS2应指定需要的dns服务器的ip地址。

现在我们可以使用安可信提供的TCP&UDP测试工具尝试使用ESP8266与电脑进行通信。

ESP8266支持两种传输模式,可以使用AT+CIPMODE=<mode>进行设置,这两种模式分别是:

0:普通传输模式

1:透传模式,仅支持TCP单连接和UDP固定通信对端的情况

因为透传模式信息直接发送,操作比较简单,我们先使用透传模式测试通信。

使用AT+CIPMODE=1设置传输模式为透传模式。注意上面的指令仅仅是暂时使用透传模式,不会将设置保存到flash,要使用AT+SAVETRANSLINK命令保存透传模式到flash。

打开TCP&UDP测试工具,创建服务器,然后启用服务器,有防火墙的应该选择允许,记录下IP地址和端口号。

要进行通信,首先要建立连接,以TCP连接为例,首先建立ESP8266到电脑的TCP连接,使用AT+CIPSTART指令建立连接。比如:AT+CIPSTART=”TCP”,”192.168.0.131″,3456,就是建立到192.168.0.131:3456端口的连接。成功后可以接收到CONNECT的提示。同时可以在TCP&UDP测试工具中看到已经建立的连接。

然后使用AT+CIPSEND指令发送数据。在透传模式中使用AT+CIPSEND后进入发送模式,ESP8266每接受2048字节数据或20ms后就会将数据发送的服务器。

要停止通信回到指令模式需要单独发送一包+++,注意在发送+++的时候要取消勾选发送新行,不然ESP8266会将其当作要发送的内容。要继续使用命令需要等待至少1秒。

现在我们就已经可以通过TCP与其他设备进行通信了。

更新ESP8266固件

因为在测试网络通信的时候发现有些指令不能用,所以先更新一下固件版本。

使用AT+GMR查看ESP8266的固件版本,发现已经比较老了,最新的固件可以到乐鑫官网下载,固件和烧写工具分别在AT页面工具页面下载。

要进行烧写,首先要将ESP8266阵脚连接成烧写模式,将GPIO0接地,EN接高电平,不要上电,先把USB转串口模块接到电脑上,打开烧录工具。

选择ESP8266 DownloadTool,按照下载的固件中的Readme.md文件中的指引选择合适的bin文件到对应的地址。

选择晶振频率,我没有找到文档说明我用的模块的晶振频率,我本来以为是40M的,烧写之后全是乱码不能用,改用26M烧写成功,选择FLASH SIZE,通过查看Flash芯片上的型号,查询到是8Mbit的,选择合适的COM口和波特率。点击start。

看到等待上电同步之后,连接ESP8266模块的电源。

然后就可以看到烧写的进度,烧写完成后断开电源,将GPIO0悬空,再接通电源。可能会提示错误,可以再次点击START并重新插拔电源线,多试几次可能就可以成功了。

发送AT+GMR查看固件版本。

使用AT模式控制ESP8266模块连接网络

ESP-01S是安信可使用乐鑫公司出品的使用ESP8266芯片开发的一款WiFi模块。详细参数可以访问安信可官网查看。

首先使用USB转串口模块在电脑上测试AT命令。推荐使用安信可出品的串口调试工具,可以在安信可开发工具清单页面下载。

首先连接USB转串口和ESP8266模块,在产品参数页面我们可以看到这个模块一共有8个阵脚,使用AT模式只需要连接其中5个脚,分别是VCC、GND、TXD、RXD、EN,其中EN需要连接高电平才能进入AT模式,可以使用上拉电阻,也可以直接接VCC,注意VCC使用的是3.3V电源,接5V电源会烧坏。

将USB串口模块连接到电脑上,打开安信可串口调试助手,选择正确的端口号和波特率后打开串口,默认波特率是115200,也可以使用AT指令设置指定波特率。

使用杜邦线接通ESP8266电源,可以从串口助手看到一些乱码,这不需要担心,ESP8266开始工作之前输出乱码是正常的。看到ready提示符之后说明你的ESP8266模块可以工作了。可以发送”AT”指令进行测试,模块会回复”OK”表示工作正常,注意要勾选发送新行,因为ESP8266的AT指令都是以回车换行结束的。

下面使用AT指令将ESP8266模块连接到路由器,具体的AT指令可以在乐鑫官方文档中查询。

ESP8266有三种工作模式,分别是:

1: Station模式

2:SoftAP模式

3:SoftAP+Station模式

这里使用Station将ESP8266作为局域网设备连接到网络,发送AT+CWMODE_DEF=1设置工作模式,并将设置保存到flash中。你也可以使用3模式进行连接,因为我后面的实验都是使用ESP8266作为设备,所以将模式设置为1模式。

使用AT+CWJAP_DEF指令将ESP8266模块连接到希望连接的AP上,这个指令有两个参数,分别是UUID和密码,参数之间使用英文逗号分隔,注意字符串参数都需要加双引号。例如我要连接到我的路由器使用AT+CWJAP_DEF=”MERCURY_3A2″,”********”指令进行连接,你需要将UUID和密码设置为你要用的UUID和密码。

可以使用AT+CIPSTA?指令查询ESP8266获取到的IP地址。

可以使用AT+CWDHCP?指令查询ESP8266 DHCP设置。

可以使用AT+CWAUTOCONN?查询开机是否自动连接AP,通过设置该参数为1或0控制开机是否连接路由器。

更多AT指令可以从AT指令文档中查看。稍后我会介绍如何使用AT指令与其他设备通信。