简述基于单片机ESP8266的智能配网

2021-06-11 05:39惠为君
科学与信息化 2021年15期
关键词:串口指令单片机

惠为君

盐城工学院 江苏 盐城 224051

ESP8266是一种面向物联网应用的Wi-Fi器件。其成本低廉、体积小巧、使用方便,在物联网应用设计中,获得广泛的使用。

ESP8266只有在配网成功后,才可以正常使用。配网时,需要设置ESP8266的工作模式。其模式有三种:客户端模式(station)、服务器模式(AP)、混合模式。连接路由器时,工作于客户端模式;作为手机热点时,工作于服务器模式。工程实践中,通过单片机串口或PC机串口助手发送AT指令设置ESP8266的工作模式。由于路由器信号强弱不同,如果时延不准确,设置ESP8266智能配网不容易成功。

1 AT指令

AT指令是终端与设备的通信指令,其特征是指令以字符串AT引导。ESP8266的AT指令分为四种,即测试指令、查询指令、设置指令、执行指令。配网所需的相关AT指令如表1所示[1]。

表1 AT指令

2 ESP8266串口通信

在工程实践中,一般单片机通过串口给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]。

3 ESP8266智能配网程序

由于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通过关注安信可公众号的微信配网来实现。

启动智能配置以后,死循环等待手机配置,一旦手机配网成功,退出死循环。

4 测试

基于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]。

5 结束语

Wi-Fi信号的强弱、ESP8266的安装位置都能影响配网结果。手机智能配网并不能100%保证成功,在使用的时候需要注意这一点。

猜你喜欢
串口指令单片机
基于 Verilog HDL 的多周期 CPU 设计与实现
《单一形状固定循环指令G90车外圆仿真》教案设计
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的多功能智能插排
基于单片机的便捷式LCF测量仪
多型串口的特性分析与演示
中断与跳转操作对指令串的影响