ESP32入门例程3 WiFi开发
·
目录
一、wifi基础知识
WiFi(Wireless Fidelity,无线保真)是一种基于 IEEE 802.11 标准的无线局域网(WLAN)技术,允许电子设备通过无线方式连接到互联网或局域网。WiFi 使用无线电波在设备之间传输数据,通常工作在 2.4GHz 和 5GHz 频段。
WiFi 的工作模式常见有三种,AP模式、STA模式、AP+STA混合模式。
ESP32芯片内置了2.4 GHz Wi-Fi收发器,支持802.11b/g/n标准。ESP32芯片对于5GHz Wi-Fi暂不支持。
二、wifi开发流程
1. STA模式
1)初始化阶段
- 调用esp_event_loop_create() 创建一个系统事件任务,并初始化应用程序事件的回调函数;
- 调用esp_netif_init() 创建一个 LwIP 核心任务,并初始化 LwIP 相关工作;
- 调用esp_netif_create_default_wifi_sta() 创建有TCP/IP堆栈的默认网络接口实例绑定station;
- 调用函数esp_wifi_init() 创建 Wi-Fi 驱动程序任务,并初始化 Wi-Fi 驱动程序;
- 调用esp_event_handler_instance_register(WIFI_EVENT,
ESP_EVENT_ANY_ID,
&event_handler,
NULL,
&instance_any_id)注册对应的事件回调到应用当中;- 调用esp_event_handler_instance_register(IP_EVENT,
IP_EVENT_STA_GOT_IP,
&event_handler,
NULL,
&instance_got_ip)注册对应的事件回调到应用当中;
2)配置阶段
- 调用函数esp_wifi_set_mode() 将 Wi-Fi 模式配置为 station模式;
- 调用函数 esp_wifi_set_config() 配置热点名和密码;
3)启动阶段
- 调用esp_wifi_start() 启动 Wi-Fi 驱动程序;
- 应用程序的事件回调函数将事件WIFI_EVENT_STA_START 中继到应用程序任务中。此时,推荐调用函数esp_wifi_connect() 进行 Wi-Fi 连接;
4)连接阶段
- 调用函数esp_wifi_connect() 后,Wi-Fi 驱动程序将启动内部扫描/连接过程;
- event_handler中处理如下事件:
- 如果内部扫描/连接过程成功,将产生WIFI_EVENT_STA_CONNECTED 事件;
- 如果 Wi-Fi 成功从 DHCP 服务器接收到 IP 地址,则将引发IP_EVENT_STA_GOT_IP 事件;
2. AP模式
1)初始化阶段
- 调用esp_event_loop_create() 创建一个系统事件任务,并初始化应用程序事件的回调函数;
- 调用esp_netif_init() 创建一个 LwIP 核心任务,并初始化 LwIP 相关工作;
- 调用esp_netif_create_default_wifi_ap() 创建有TCP/IP堆栈的默认网络接口实例绑定ap;
- 调用函数esp_wifi_init() 创建 Wi-Fi 驱动程序任务,并初始化 Wi-Fi 驱动程序;
- 调用 esp_event_handler_instance_register(WIFI_EVENT,
ESP_EVENT_ANY_ID,
&wifi_event_handler,
NULL,
NULL)注册对应的事件回调到应用当中;
2)配置阶段
- 调用函数esp_wifi_set_mode() 将 Wi-Fi 模式配置为 ap模式;
- 调用函数 esp_wifi_set_config() 配置热点名和密码;
3)启动阶段
- 调用esp_wifi_start() 启动 Wi-Fi 驱动程序;
4)连接阶段
- event_handler中处理如下事件:
- WIFI_EVENT_AP_STACONNECTED 事件触发;
- WIFI_EVENT_AP_STADISCONNECTED 事件触发。
3. STA+AP模式
1)初始化阶段
- 调用esp_event_loop_create() 创建一个系统事件任务,并初始化应用程序事件的回调函数;
- 调用esp_netif_init() 创建一个 LwIP 核心任务,并初始化 LwIP 相关工作;
- 调用esp_netif_create_default_wifi_sta() 创建有TCP/IP堆栈的默认网络接口实例绑定station;
- 调用esp_netif_create_default_wifi_ap() 创建有TCP/IP堆栈的默认网络接口实例绑定ap;
- 调用函数esp_wifi_init() 创建 Wi-Fi 驱动程序任务,并初始化 Wi-Fi 驱动程序;
- 调用 esp_event_handler_instance_register(WIFI_EVENT,
ESP_EVENT_ANY_ID,
&wifi_event_handler,
NULL,
NULL)注册对应的事件回调到应用当中;- 调用esp_event_handler_instance_register(IP_EVENT,
IP_EVENT_STA_GOT_IP,
&event_handler,
NULL,
&instance_got_ip)注册对应的事件回调到应用当中;
2)配置阶段
- 调用函数esp_wifi_set_mode() 将 Wi-Fi 模式配置为 ap+sta模式;
- STA模式:调用函数 esp_wifi_set_config() 配置热点名和密码;
- AP模式:调用函数 esp_wifi_set_config() 配置热点名和密码;
3)启动阶段
- 调用esp_wifi_start() 启动 Wi-Fi 驱动程序;
4)连接阶段
- 主函数中等待连接连接事件置位,随后调用softap_set_dns_addr(esp_netif_ap,esp_netif_sta);
将STA(Station)模式设置为默认网络接口esp_netif_set_default_netif(esp_netif_sta);
在AP接口上启用NAPT(网络地址端口转换)esp_netif_napt_enable(esp_netif_ap)
参考代码可见官方例程:
更多推荐


所有评论(0)