STM32+ESP8266连接网络的几种方法

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();  语句,这里只是方便串口调试。

参考资料:

C语言转义字符

ESP8266 AT指令集

OneNET开发板代码资料

你可能感兴趣的:(stm32,stm32,嵌入式)