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

本文介绍ESP8266模块通过SmartConfig、固定路由连接及自动连接上次配置的路由三种方式接入WiFi的方法,并提供了STM32通过检测特定字符串判断WiFi连接状态的技巧。

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开发板代码资料

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值