1、SmartConfig
上篇文章提到的
2、连接固定的路由
在程序中写死;
例如:
void ESP8266_Init_Fixed_WiFi(void)
{
ESP8266_Clear();
/* AT测试 */
printf("0. AT\r\n");
ESP8266_SendCmd("AT\r\n", "");
delay_ms(500);
/* 重启 */
printf("1. RST\r\n");
ESP8266_SendCmd("AT+RST\r\n", "");
delay_ms(500);
/* 设置WiFi模式
* 1:Station 模式
* 2:SoftAP 模式
* 3:SoftAP+Station 模式
*/
printf("2. CWMODE\r\n");
while(ESP8266_SendCmd("AT+CWMODE=1\r\n", "OK"))
delay_ms(500);
/* 连接路由 */
printf("3. CWJAP\r\n");
while(ESP8266_SendCmd(ESP8266_WIFI_INFO, "OK"))
delay_ms(500);
/* 建立TCP连接 */
printf("4. CIPSTART\r\n");
while(ESP8266_SendCmd(ESP8266_TCP_INFO, "CONNECT"))
delay_ms(500);
printf("5. ESP8266 Init OK\r\n");
}
#define ESP8266_WIFI_INFO "AT+CWJAP=\"FAST_E162\",\"12345678\"\r\n"
#define ESP8266_TCP_INFO "AT+CIPSTART=\"TCP\",\"www.bilibili.com\",80\r\n"
例子中:
第三步实际发送的指令是 AT+CWJAP="FAST_E162","12345678"\r\n
在一对双引号内要表示双引号要加转义字符;
WiFi名称及密码,连接的服务器及端口需要修改,这里只是作为例子;
3、自动连接上一次配置的路由
void ESP8266_Init_Disconnected(void)
{
ESP8266_Clear();
printf("1. RST\r\n");
ESP8266_SendCmd("AT+RST\r\n", "");
delay_ms(500);
ESP8266_Clear();
while(1)
{
if(strstr((char *)esp8266_buf, "GOT IP"))
break;
delay_ms(500);
}
/* 建立TCP连接 */
printf("2. CIPSTART\r\n");
while(ESP8266_SendCmd(ESP8266_TCP_INFO, "CONNECT"))
delay_ms(500);
}
发送完命令后的延时不可少,可以适当调小,自行调试;
重启后会自动连接上次配置过的WiFi,如果该WiFi可用;
连接成功后ESP-01S会通过串口发送包含 GOT IP 字符串;
STM32通过检测串口接收到的数据有无包含该字符串来判断有无连上WiFi;
使用时可以注释掉 printf(); 语句,这里只是方便串口调试。
参考资料: