惠为君
盐城工学院 江苏 盐城 224051
ESP8266是一种面向物联网应用的Wi-Fi器件。其成本低廉、体积小巧、使用方便,在物联网应用设计中,获得广泛的使用。
ESP8266只有在配网成功后,才可以正常使用。配网时,需要设置ESP8266的工作模式。其模式有三种:客户端模式(station)、服务器模式(AP)、混合模式。连接路由器时,工作于客户端模式;作为手机热点时,工作于服务器模式。工程实践中,通过单片机串口或PC机串口助手发送AT指令设置ESP8266的工作模式。由于路由器信号强弱不同,如果时延不准确,设置ESP8266智能配网不容易成功。
AT指令是终端与设备的通信指令,其特征是指令以字符串AT引导。ESP8266的AT指令分为四种,即测试指令、查询指令、设置指令、执行指令。配网所需的相关AT指令如表1所示[1]。
表1 AT指令
在工程实践中,一般单片机通过串口给ESP8266发送AT指令。在配置的时候,单片机除了向ESP8266发送AT命令,还要接收ESP8266的回传信号。一般根据回传信号,判断ESP8266的工作状态。本文采用51兼容单片机STC15F2K60S2的串口二传输AT指令,程序中通过串口中断服务程序实现单片机与ESP8266的通信。在此基础上,设计发送和接受函数,用来完成AT指令的发送和回传信号的接收。其中,发送函数部分程序如下:
while (*s) //检测字符串结束标志
{
uart2_SendData(*s++); //发送当前字符
Delay1ms();
}
uart2_SendData(‘ ’); //回车
Delay1ms();
uart2_SendData(‘ ’); //换行
程序中,指针s指向要发送的AT指令,AT指令的结束标记是回车和换行两个标记[2]。
由于Wi-Fi信号的强弱不同和ESP8266处理命令及回传命令的时延,智能配网ESP8266比较困难。在设计配网程序的时候,根据具体的配网状况,需要添加适当的时延,然后执行响应的AT 指令。其配网流程流程如图1所示。
图1 配网流程图
图2 手机智能配置流程图
ESP8266启动时,要检测连接的Wi-Fi,并获取ID。如果没有获取ID,说明是第一次配置或Wi-Fi已经改变,此时,需要启动手机智能配置。其配置流程如图2所示。手机智能配网的时候,先要确定ESP8266的工作模式,即station模式和AP模式,然后设置ESP8266是否上电自动连接Wi-Fi,最后开启智能配置,即手机智能配置[3]。智能配置的核心程序如下:
if(Send_Wi-Fi_CMD(“AT+CWSTARTSMART=3”,”OK”))
{
Uart1_SendString(“SmartConfig Command is sended successfully ”) ;
}
//等待手机配置Wi-Fi....
while(1)
{ if(Send_Wi-Fi_CMD(“AT+CIPSTATUS”,”STATUS:2”))
{
Uart1_SendString(“ESP8266 is successed to config by phone ”);
Wi-Fi_config = 1;
break;
}
实现智能配网,主要有两条指令完成。 AT+CWMODE=1,设置ESP8266单station模式,AT+CWSTARTSMART=3,设置ESP8266配置类型为AirKisss或Esp_touch。AirKiss通过关注安信可公众号的微信配网来实现。
启动智能配置以后,死循环等待手机配置,一旦手机配网成功,退出死循环。
基于STC15F2K60S2完成某个项目,该单片机具有两个全双工串口。项目中用U2口实现ESP8266与单片机通信,U1口通过转接口接PC机USB口,可以在串口助手观察配网的过程。配网成功时的信息如图3所示。
图3 智能配网信息
配网成功后,ESP8266作为站点连接TCP或UDP服务器。如下片段代码,实现ESP8266连接TCP服务器。
if(Send_Wi-Fi_CMD(“AT+CIPSTART=”TCP”,”192.1 68.1.3”,8082”,”OK”)) //
{
Delay200ms();
server_connect_flag = 1;
Uart1_SendString(“ESP8266 has connected to TCP server ”);
}
指令AT+CIPSTART用于建立ESP8266与TCP或UDP服务器连接。服务器连接成功后,ESP8266就可以向服务器发送数据了[4]。
Wi-Fi信号的强弱、ESP8266的安装位置都能影响配网结果。手机智能配网并不能100%保证成功,在使用的时候需要注意这一点。