这是一篇总结文章,在参考诸多文章和一些实验之后写下的笔记,初学之参考。此文不涉及硬件详解,只简解软件相关。
此文需要用到一些设备,某宝上可以获得:
1、USB转TTL,用于调试;
2、ESP8266模块,此文用的是安信可ESP-01S版本;
3、WIFI继电器,配合ESP8266模块使用,某宝上有两者合一的版本;
4、ESP8266下载器(可选)。
然后需要一些调试软件,这里选用安信可官方提供的软件:
1、安信可烧录软件
2、安信可串口调试助手
3、安信可TCP/UDP调试助手PC版本
4、安信可TCP/UDP调试助手安卓版本
5、串口驱动:CH340和CP2102
6、AT固件
首先是接线,把USB转TTL串口和ESP8266连接起来,下图来自安信可官方网站的典型接线图。
给不懂硬件的同学简单说一下,把USB转TTL的四根线,GND接模块的GND,电源接模块的电源,TXD接模块的RXD,RXD接模块的TXD,就行了。
如果是下图这样的ESP8266模块和继电器在一起的设备,接线也是一样的。
将设备连接上电脑,在设备管理器中的端口中就可以看到了,记下端口号。
此文写作的目的是使手机软件可以控制继电器的开关,所以这里的串口设置主要是使ESP8266模块连接到WIFI,使用的AT指令只有一部分,更为全面的AT指令请参考安信可的AT指令文档。
注:一些安全软件会拦截安信可的串口调试助手,使用的时候需要加入白名单
简单说明一下,串口选择设备的串口,在设备管理器中可以查看。首次使用的时候,波特率选择115200,继电器的波特率是9600,需要更改。发送AT指令需要勾选“自动换行”。右侧的AT指令是可以保存的,直接点击就行。
打开串口之后,按下面的指令依次发送进行配置:
1、 AT:返回OK就说明模块准备就绪了;
2、 AT+RST:初始设置,返回OK就可以了;
3、 AT+GMR:这个是查询固件版本信息,可以跳过;
4、 AT+CWMODE=3:返回OK表明设置成功。
——这个指令是把模块设置为AP+STATION模式共存。笔者手中的继电器对于两种连接方式都支持,所以选择了3。1是Station模式,2是AP模式。
5、 AT+CWJAP=“WIFI名称”,“WIFI密码”:这指令使ESP8266模块连接至路由器,需要注意的是,WIFI必须是2.4G,5G网络不支持。返回OK表明连接成功。
6、 AT+CIFSR:这个指令是查看模块的IP和MAC地址,在第4个步骤中如果是选择AP+Station共存的方式,这里会返回两套信息,分别是AP和Station对应的信息。模块的APIP是般是192.168.4.1,而STAIP一般是192.168.0.106这样的。
进行到这里,ESP8266模块已经连接到了WIFI网络,不过根据安信可的介绍和笔者的尝试,在模块断电并重新上电之后,之前连接的WIFI信息是在模块的Flash中保存的,但是在重新上电之后,模块并不能自动连接WIFI,在发送AT+RST指令之后模块才会连接上已经保存的WIFI。如果要实现模块上电即连接WIFI,需要重写模块固件,笔者这部分还未尝试。
此文的目的是使手机软件可以操控继电器,那么自然会用到网络通信,ESP8266模块上使用是TCP/UDP方式,在进行了上面的配置之后,还并不能进行网络通信,还需要再设置一下。
1、 AT+CIPMUX=1:开启多连接
2、 AT+CIPSERVER=1,8080:开启TCP服务,设置端口号。这条指令是将ESP8266模块作为服务器,电脑端或手机端作为客户端。
3、 AT+CIPSTART=“TCP”,“192.168.0.104”,8080:这条指令是将ESP8266作为客户端,主动连接到“192.168.0.104”这个服务器,8080是服务器的端口号。
——2、3两个步骤是两个不同的方式,笔者这里以2说明。
4、 打开安信可的网络助手工具,如下图:
创建连接,选择客户端模式,填好模块的IP和端口,进行连接,连接上之后,在串口工具的窗口中就会显示0,CONNECT,表明已经建立通信。
同样,如果模块作为客户端,电脑作为服务端,在创建连接的时候则选择服务器模式。
ESP8266连接上了WIFI,也建立了TCP通信,接下来就是对继电器进行控制。笔者使用的是此文中的第二张图所示的继电器,这个设备将继电器和ESP8266模块集成到了一起,某宝上有不少这样的,笔者所使用的这一款,对继电器的指令只有两条:A0 01 01 A2和A0 01 00 A1,均以十六进制发送,分别控制继电器的开关。
笔者使用这个设备提供了两种控制继电器的方式,一种是使用USR转TTL串口线,一种就是使用ESP8266模块。
直接操作继电器的话,需要把ESP8266模块拿掉,串口线的RXD、TXD、GND、5V或3.3V与继电器的引脚对应相接。连接电脑之后,使用串口调试助手以HEX方式发送开关指令,即可实现对继电器的操控。
注:笔者使用的这个设备,继电器的波特率是9600,所以在打开串口的时候,波特率要选择9600。
如上所述,笔者使用的继电器的波特率是9600,而ESP8266的波特率默认是115200,所以在ESP8266建立好TCP通信之后,电脑向模块发送继电器的操控指令是无法对继电器进行开关。ESP8266的波特率是可以更改的,而且这个更改是可以保存的,模块重新上电之后的波特率就是更改后的波特率。这里的指令有两个,AT+CIOBAUD=9600,笔者查询了某宝上类似WIFI继电器的详情介绍,基本上都一样,客服不懂,详情页标示的和给出的下载资料里面所用到的都是这一条指令。但是这条指令输入之后只会提示ERROR,这个不知道是为什么。而某度上搜出来一条指令是AT+UART=9600,8,1,0,0,这条指令对笔者手中的设备是可用的。诸位看官请自行尝试一下吧。
笔者手中的继电器的供电和串口调试是分开的,所以在更改好波特率之后,把串口线拔了。此时使用安信可的网络调试助手连接ESP8266模块,发送继电器的控制指令,就可以实现对继电器的操控了。
文章写到这里,笔者一直是使用的电脑版本的串口调试和网络调试,实际上切换到安信可的手机版本进行尝试也是一样的,也可以实现对继电器的控制了。
1、 上面写到波特率的更改,某度上有一条问答说AT+UART也不能更改波特率,同样提示了ERROR,https://blog.csdn.net/weixin_40660408/article/details/90143391,这篇文章提出的解决方法是刷一遍固件,诸位可以参考。安信可也提供了官方烧录工具,官方提供的这个烧录工具还是比较好用的。
2、 当我们把ESP8266的TCP通信配置好,以网络通信的方式发送AT指令对模块进行操作是不可行的。但是安可信和乐鑫提供了透传模式,发送的信息均可以被模块接收。笔者在进行到这里尝试的时候,模块没有了反应,抢救的机会都没有给<_>!所以诸位进行到这里的时候也小心点。。。
笔者写到这里,所有的配置操作都是使用电脑串口进行的,但是如果放到智能家居产品上,顾客拿到一个产品,不可能把产品连接到电脑上进行配置,所以ESP8266模块有一键配置WIFI的功能,请参考https://bbs.elecfans.com/jishu_1150853_1_5.html这篇文章,原理写的比较明白。相关过程笔者也还在探究过程中。
===============================================================================未完待续 2021.07.13
参考
[1] https://blog.csdn.net/fengyingyuechou/article/details/51144884