ESP8266的三种工作方式

  • AP模式
  • Station模式
  • AP+Station模式

esp8266模组在Station模式下是一个网络节点,可以通过路由器接入到互联网;esp8266模组在AP模式下是一个WIFI热点,可以使用手机或者电脑直接进行局域网控制;AP+Station模式是两种模式共存的方式。

 

 

基于SDK的开发流程

设置Station模式

流程图

代码

#define SSID "你的路由器WIFI名称"
#define PASSWORD "你的路由器密码"

/******************************************************************************
 * FunctionName : user_init
 * Description  : entry of user application, init user function here
 * Parameters   : none
 * Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
user_init(void)
{
    printf("SDK version:%s\n", system_get_sdk_version());
	wifi_set_opmode(STATION_MODE);		//设置模式
	struct station_config * config = \
		(struct station_config *)malloc( sizeof(struct station_config) );	//给结构体分配空间
	sprintf(config->ssid, SSID);	//填充参数
	sprintf(config->password, PASSWORD);
	
	wifi_station_set_config(config);	//设置参数

	free(config);	//释放空间
	
	wifi_station_connect();	//连接
	

}


串口打印结果

 

 

设置AP模式

流程图

 

代码

#define SSID "你要设置的热点名"
#define PASSWORD "你要设置的接入密码"

/******************************************************************************
 * FunctionName : user_init
 * Description  : entry of user application, init user function here
 * Parameters   : none
 * Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
user_init(void)
{
    printf("SDK version:%s\n", system_get_sdk_version());
	
	wifi_set_opmode(SOFTAP_MODE);		//设置模式
	struct softap_config * config = \
		(struct softap_config *)malloc( sizeof(struct softap_config) );	//给结构体分配空间
		
	wifi_softap_get_config(config);	//获取参数到内存
	sprintf(config->ssid, SSID);	//填充参数
	sprintf(config->password, PASSWORD);
	config->authmode = AUTH_WPA_WPA2_PSK;	//加密方式
	config->max_connection = 5;				//最大连接数量
	config->ssid_len = 0;					//设置长度为0

	wifi_softap_set_config(config);	//设置参数

	free(config);	//释放空间

}

 

串口打印结果

 

 

Smartconfig 智能连接

使用之前station模式,就必需在项目代码中配置接入路由器的名称-密码,很不方便。使用智能连接的方式,可以让wifi模块通过手机进而接入路由器了,无需在代码中配置密码。
手机通过UDP广播,将AP的相关信息组帧发出。而WiFi模块一直处于UDP监听状态。获取到AP信息之后,WiFi模块便可以接入AP了。

 

流程图

 

代码配置

/******************************************************************************
 * FunctionName : user_init
 * Description  : entry of user application, init user function here
 * Parameters   : none
 * Returns      : none
*******************************************************************************/
void ICACHE_FLASH_ATTR
user_init(void)
{
    printf("SDK version:%s\n", system_get_sdk_version());

    /* need to set opmode before you set config */
    wifi_set_opmode(STATION_MODE);

    xTaskCreate(smartconfig_task, "smartconfig_task", 256, NULL, 2, NULL);
}

 

软件

Airkiss是微信针对物联网开发的,底层是对Smartconfig技术封装。扫码使用

 

串口打印

 

 

PS:至于源码的编译与烧写,我这边使用的是乐鑫提供的编译环境,有兴趣可以get一下。

esp8266+SDK开发 搭建开发环境