2024年最新ESP8266--STA AP模式_esp8266的ap和sta(1),阿里P8亲自教你

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

uint16 beacon_interval;   // Note: support 100 ~ 60000 ms, default 100

};


② 设置ESP8266为AP模式



wifi_set_opmode(0x02); // 设置为AP模式,并保存到Flash 详见文档6.2.1.3章节
0x01:STA模式
0x02:AP模式
0x03:STA + AP模式


③ 设置WiFi相关参数,将对应参数一一赋值



os_memset(&APConfig, 0, sizeof(struct softap_config)); // 将结构体清零
os_strcpy(APConfig.ssid, WiFiName); // 设置WiFi名称
os_strcpy(APConfig.password, WiFiPassWord); //设置WiFi密码
APConfig.ssid_len=os_strlen(WiFiName); // 设置ssid长度(和SSID的长度一致)
APConfig.channel=1; // 通道号1~13
APConfig.authmode=AUTH_WPA2_PSK; // 设置加密模式
APConfig.ssid_hidden=0; // 不隐藏SSID
APConfig.max_connection=4; // 最大连接数
APConfig.beacon_interval=100; // 信标间隔时槽100~60000 ms


④ 将参数数据保存到Flash空间



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


![在这里插入图片描述](https://img-blog.csdnimg.cn/20190521210400188.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d5c2NqbA==,size_16,color_FFFFFF,t_70)  
 接下来就是通过软件定时器查看连接这个WiFi的情况了【这部分代码写在timer.c里面】  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190521210553457.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d5c2NqbA==,size_16,color_FFFFFF,t_70)  
 手机连接AP服务器的效果  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190521210626235.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d5c2NqbA==,size_16,color_FFFFFF,t_70)


#### 1.2 参考代码



//apMode.c
#include “driver/apMode.h”

void ICACHE_FLASH_ATTR WifiSetAPModeInit(void)
{
struct softap_config APConfig; // AP参数结构体
wifi_set_opmode(0x02); // 设置为AP模式,并保存到Flash 详见文档6.2.1.3章节

os_memset(&APConfig, 0, sizeof(struct softap_config));	// 将结构体清零
os_strcpy(APConfig.ssid, WiFiName);						// 设置WiFi名称
os_strcpy(APConfig.password, WiFiPassWord);				//设置WiFi密码
APConfig.ssid_len = os_strlen(WiFiName);				// 设置ssid长度(和SSID的长度一致)
APConfig.channel = 1;                      				// 通道号1~13
APConfig.authmode = AUTH_WPA2_PSK;           			// 设置加密模式
APConfig.ssid_hidden = 0;                  				// 不隐藏SSID
APConfig.max_connection = 4;               				// 最大连接数
APConfig.beacon_interval = 100;            				// 信标间隔时槽100~60000 ms

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

}



//timer.c
#include “driver/delay.h”
#include “driver/led.h”
#include “driver/key.h”
#include “driver/uart.h”
#include “driver/timer.h”
#include “driver/dht11.h”
#include “driver/apMode.h”

/*

  • 函数名称:void TimerInitConfig(uint32_t DelayMs,bool repeat_flag)
  • 函数功能:定时器初始化函数
  • 函数形参:
  •   uint32_t DelayMs   延时时间
    
  •   bool repeat_flag   是否重复
    
  •   		1:重复   0:不重复
    
  • 返回值:
  • */
    os_timer_t os_timer_500ms;//定义一个定时器名称
    void TimerInitConfig(uint32_t DelayMs, bool repeat_flag)
    {
    os_timer_disarm(&os_timer_500ms);//关闭定时器
    os_timer_setfn(&os_timer_500ms, (os_timer_func_t *)TimerBackFunction, NULL);//设置定时器回调函数
    os_timer_arm(&os_timer_500ms, DelayMs, repeat_flag);
    }

/*

  • 函数名称:void TimerBackFunction(void)

  • 函数功能:定时器回调函数

  • 函数形参:无

  • 返回值: 无

  • */
    void TimerBackFunction(void)
    {
    struct ip_info ipESP8266; // 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, &ipESP8266); // 参数2:IP信息结构体指针

    // ESP8266_AP_IP.ip.addr32位二进制IP地址,将它转换为点分十进制的形式
    ESP8266_IP[0] = ipESP8266.ip.addr; // 点分十进制IP的第一个数 <
    > addr低八位
    ESP8266_IP[1] = ipESP8266.ip.addr >> 8; // 点分十进制IP的第二个数 <> addr次低八位
    ESP8266_IP[2] = ipESP8266.ip.addr >> 16; // 点分十进制IP的第三个数 <
    > addr次高八位
    ESP8266_IP[3] = ipESP8266.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]);
    // 查询并打印接入此WIFI的设备数量
    os_printf(“Number of devices connected to this WIFI = %d\n”, wifi_softap_get_station_num());
    }



//user_init函数
void ICACHE_FLASH_ATTR user_init(void)
{
int i;
os_DelayMs(1000);
uart_init(115200, 115200);//设置串口波特率
WifiSetAPModeInit();//wifi AP模式设置
TimerInitConfig(500, 1);//软件定时器500毫秒延时 – 回调函数在timer.c

os_printf("=============================================\r\n");
os_printf("\t SDK version:\t%s", system_get_sdk_version());
os_printf("\r\n嵌入式陈工个人编辑资料\r\n未经本人同意请勿私自传播\r\n");
os_printf("\r\nESP8266创建局域网服务器\r\n");
os_printf("\r\n带看门狗\r\n");
os_printf("\r\nSPI Flash 的 ID 号:%d\r\n", spi_flash_get_id());
os_printf("=============================================\r\n");

}


### 2 ESP8266的STA模式


#### 2.1 创建ESP8266 STA模块步骤


① 创建WiFi结构体



struct station_config staConfig; // STA参数结构体
struct station_config {
uint8 ssid[32];
uint8 password[64];
uint8 bssid_set; // Note: If bssid_set is 1, station will just connect to the router
// with both ssid[] and bssid[] matched. Please check about this.
uint8 bssid[6];
wifi_fast_scan_threshold_t threshold;
};


② 设置WiFi模块为STA模式



wifi_set_opmode(0x01); // 设置为STA模式,并保存到Flash 详见文档6.2.1.3章节
0x01:STA模式
0x02:AP模式
0x03:STA + AP模式


③ 配置连接的路由器信息



// 结构体赋值,配置STA模式参数
os_memset(&staConfig, 0, sizeof(struct station_config)); // STA参数结构体 = 0
os_strcpy(staConfig.ssid, staWiFiName); // 设置WIFI名
os_strcpy(staConfig.password, staWiFiPassWord); // 设置WIFI密码


④ 将WiFi的配置信息保存到Flash



wifi_station_set_config(&staConfig); // 设置STA参数,并保存到Flash


![在这里插入图片描述](https://img-blog.csdnimg.cn/2019052121201917.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d5c2NqbA==,size_16,color_FFFFFF,t_70)


#### 2.2 参开代码



//staMode.c
#include “driver/staMode.h”

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

转存中…(img-16N2Cmxf-1715639666080)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 35
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值