ESP8266-AP模式建立学习笔记

前言

ESP8266设置为AP模式,建立WIFI局域网

一、思路

1
2
1秒定时
user_init函数串口OLED初始化
设置AP模式相关参数
创建AP模式结构体
设置AP模式
给结构体赋值
1秒软件定时
定时回调函数
窗口打印信息

二、程序

串口OLED初始化
void ICACHE_FLASH_ATTR user_init(void)
{
	uart_init(115200,115200);	// 初始化串口波特率
	os_delay_us(10000);			// 等待串口稳定
	os_printf("\r\n=================================================\r\n");
	os_printf("\t Project:\t%s\r\n", ProjectName);
	os_printf("\t SDK version:\t%s", system_get_sdk_version());
	os_printf("\r\n=================================================\r\n");


	// OLED初始化
	//---------------------
	OLED_Init();							// |
	OLED_ShowString(0,0,"ESP8266 :");	// |
	OLED_ShowString(0,2,"IP:");				// |
	//---------------------
	OLED_ShowCHinese(0,4,0);//OLED显示“连接设备数量”
	OLED_ShowCHinese(18,4,1);
	OLED_ShowCHinese(36,4,2);
	OLED_ShowCHinese(54,4,3);
	OLED_ShowCHinese(72,4,4);
	OLED_ShowCHinese(90,4,5);
	OLED_ShowCHinese(56,0,6);
	OLED_ShowCHinese(74,0,7);
	OLED_ShowCHinese(92,0,8);
	OLED_ShowCHinese(114,0,9);
	ESP8266_AP_Init();			// 设置ESP8266_AP模式相关参数
    OS_Timer_1_Init(1000,1);		// 1秒软件定时

设置AP模式相关参数

用到 的几个主要API
os_memset(void *s, int ch, size_t n) 将指定内存块清零
char os_strcpy(char *s1,const char *s2); 将参数2指向的字符串复制到参数一只想的地址处
os_strlen(char *s) 计算字符串长度
在这里插入图片描述
bool wifi_softap_set_config (struct softap_config *config) 设置AP模式参数,并保存到Flash

void ICACHE_FLASH_ATTR ESP8266_AP_Init()
{
	struct softap_config AP_Config;				// AP参数结构体
	wifi_set_opmode(0x02);						// 设置为AP模式,并保存到Flash
	// 结构体赋值(注意:【服务集标识符/密码】须设为字符串形式)
	//--------------------------------------------------------------------------------------
	os_memset(&AP_Config, 0, sizeof(struct softap_config));	// AP参数结构体 = 0
	os_strcpy(AP_Config.ssid,ESP8266_AP_SSID);		// 设置SSID(将字符串复制到ssid数组)
	os_strcpy(AP_Config.password,ESP8266_AP_PASS);	// 设置密码(将字符串复制到password数组)
	AP_Config.ssid_len=os_strlen(ESP8266_AP_SSID);	// 设置ssid长度(和SSID的长度一致)
	AP_Config.channel=1;                      		// 通道号1~13
	AP_Config.authmode=AUTH_WPA2_PSK;           	// 设置加密模式
	AP_Config.ssid_hidden=0;                  		// 不隐藏SSID
	AP_Config.max_connection=4;               		// 最大连接数
	AP_Config.beacon_interval=100;            		// 信标间隔时槽100~60000 ms

	wifi_softap_set_config(&AP_Config);				// 设置soft-AP,并保存到Flash
}

AP参数结构体
在这里插入图片描述

定时回调窗口打印信息
void ICACHE_FLASH_ATTR OS_Timer_1_cb(void)
{
	struct ip_info ST_ESP8266_IP;	// IP信息结构体

	u8  ESP8266_IP[4];		// 点分十进制形式保存IP


	// 查询并打印ESP8266的工作模式
	//---------------------------------------------------------------------
	switch(wifi_get_opmode())	// 输出工作模式
	{
		case 0x01:	os_printf("\nESP8266_Mode = Station\n");		break;
		case 0x02:	os_printf("\nESP8266_Mode = SoftAP\n");			break;
		case 0x03:	os_printf("\nESP8266_Mode = Station+SoftAP\n");	break;
	}


	// 获取ESP8266_AP模式下的IP地址
	//【AP模式下,如果开启DHCP(默认),并且未设置IP相关参数,ESP8266的IP地址=192.168.4.1】
	//-----------------------------------------------------------------------------------
	wifi_get_ip_info(SOFTAP_IF,&ST_ESP8266_IP);	// 参数2:IP信息结构体指针

	// ESP8266_AP_IP.ip.addr==32位二进制IP地址,将它转换为点分十进制的形式
	//------------------------------------------------------------------------------------------
	ESP8266_IP[0] = ST_ESP8266_IP.ip.addr;			// 点分十进制IP的第一个数 <==> addr低八位
	ESP8266_IP[1] = ST_ESP8266_IP.ip.addr>>8;		// 点分十进制IP的第二个数 <==> addr次低八位
	ESP8266_IP[2] = ST_ESP8266_IP.ip.addr>>16;		// 点分十进制IP的第三个数 <==> addr次高八位
	ESP8266_IP[3] = ST_ESP8266_IP.ip.addr>>24;		// 点分十进制IP的第四个数 <==> addr高八位

	// 打印ESP8266的IP地址
	//-----------------------------------------------------------------------------------------------
	os_printf("ESP8266_IP = %d.%d.%d.%d\n",ESP8266_IP[0],ESP8266_IP[1],ESP8266_IP[2],ESP8266_IP[3]);
	OLED_ShowIP(24,2,ESP8266_IP);			// 显示ESP8266的IP地址


	// 查询并打印接入此WIFI的设备数量
	//-----------------------------------------------------------------------------------------
	os_printf("Number of devices connected to this WIFI = %d\n",wifi_softap_get_station_num());
	i=wifi_softap_get_station_num();
	f[0]='0'+i;
	OLED_ShowString(50,6,f);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值