如何使用ESP8266 SDK开发WiFi的Station和AP连接

描述

WiFi站点(Station)和接入点(Access Point)

WiFi是由无线接入点AP(Access Point) 、站点(Station)等组成的无线网络。 Station (STA)是指每个连接到无线网络中的终端; 接入点 (AP)是无线网络的创建者,是网络的中心节点

无线网络

ESP8266模组支持STA、AP、STA+AP三种工作模式

  • STA模式:ESP8266模块通过路由器连接互联网,PC或手机通过互联网实现对设备的远程控制
  • AP模式:ESP8266模块作为热点,PC或手机直接与模块通讯,实现局域网无线控制
  • STA+AP模式:两种模式的共存,既可以通过路由器连接到互联网,通过互联网控制设备; 也可以作为WiFi热点,供其他WiFi设备连接。 实现了局域网和广域网的无缝切换

下面将介绍如何使用ESP8266 SDK开发WiFi的Station和AP连接

1. Station连接

WiFi Station入网流程如下图示:

无线网络

实现步骤如下:

在ESP8266_RTOS_SDK目录下新建station文件夹,把LED灯实验中的led目录下所有文件拷贝到该文件夹中

无线网络

使用Source Insight编辑器,编辑和浏览代码; 新建工程,并将station和include文件夹下的文件添加到工程中; 在led灯程序基础上,在user_main.c文件中的user_init()函数下添加如下代码

user_init(void)
{
    printf("SDK version:%s\\n", system_get_sdk_version());
    Led_init();
    wifi_set_opmode(STATION_MODE);	//配置WiFi为Station模式
    struct station_config *config = (struct station_config *)
    	zalloc(sizeof(struct station_config));//动态的分配内存空间
    sprintf(config->ssid,SSID);    
    sprintf(config->password,PASSWORD);     
    wifi_station_set_config(config);	//配置设置到寄存器里面
    free(config);	                //释放动态分配的内存
    wifi_station_set_auto_connect(TRUE);//启动wifi的一键连接
    xTaskCreate(ATaskLed, "LED", 256, NULL, 2, NULL);
}

无线网络

回到ESP8266编译器中,在station文件夹下,运行gen_misc.sh文件,依次确认配置(Y/1/2/3/4),编译完成后,烧写bin文件到ESP8266

无线网络

打开串口助手,模组复位后,串口输出相关信息后,模块显示连接到无线网络中,并获取到路由分配的IP

无线网络

2. AP连接

WiFi AP入网流程如下图示:

无线网络

实现步骤如下:

在ESP8266_RTOS_SDK目录下新建ap文件夹,把LED灯实验中的led目录下所有文件拷贝到该文件夹中

无线网络

使用Source Insight编辑器,编辑和浏览代码; 新建工程,并将ap和include文件夹下的文件添加到工程中; 在led灯程序基础上,在user_main.c文件中的user_init()函数下添加如下代码

user_init(void)
{
    printf("SDK version:%s\\n", system_get_sdk_version());
    Led_init();  
    wifi_set_opmode(SOFTAP_MODE);	//设置为AP模式 
    struct softap_config *config = (struct softap_config *)
	zalloc(sizeof(struct softap_config)); 
    wifi_softap_get_config(config);	//获取当前参数
    sprintf(config->ssid,SSID);		//传入自己定义的网络名称
    sprintf(config->password,PASSWORD);	//传入自己定义的网络密码
    config->authmode = AUTH_WPA_WPA2_PSK;//授权加密方式
    //设置网络名称长度为0,表示网络名称字符串中遇到'\\0'时结束
    config->ssid_len = 0;		
    config->max_connection = 4;		//设置最大连接数
    wifi_softap_set_config(config);	//设置到寄存器
    free(config);			//释放动态存储
    xTaskCreate(ATaskLed, "LED", 256, NULL, 2, NULL);
}

无线网络

回到ESP8266编译器中,在ap文件夹下,运行gen_misc.sh文件,依次确认配置(Y/1/2/3/4),编译完成后,烧写bin文件到ESP8266

无线网络

烧写bin文件到ESP8266后,打开串口助手,模组复位后,串口输出相关信息,用手机连接AP,获取到AP分配的地址

无线网络

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分