惠為君
鹽城工學院 江蘇 鹽城 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%保證成功,在使用的時候需要注意這一點。