ESP-C3入门13. SoftAP模式
- 一、 ESP32-C3 WIFI的工作模式
- 二、SoftAP配置
- 1. `wifi_config_t` 结构体
- 2. `wifi_event_handler ` 事件
- (1) `esp_event_handler_instance_register` 注册事件
- (2) `system_event_sta_connected_t` 结构体
- 3. 关闭SoftAP
- 三、示例
- 1. main.c
- 2. wifi_ap.h
- 3. wifi_ap.c
一、 ESP32-C3 WIFI的工作模式
ESP32 的 Wi-Fi 可以工作在以下几种工作状态:
- Station 模式(STA):在这种模式下,ESP32 连接到一个已经存在的无线网络,类似于一台普通的 Wi-Fi 客户端设备。
- Access Point 模式(AP):在这种模式下,ESP32 自己作为一个 Wi-Fi 热点,并接受其他 Wi-Fi 客户端设备的连接,类似于一个路由器。
- Station + Access Point 模式(STA+AP):在这种模式下,ESP32 同时工作在 Station 和 Access Point 两种模式下,既可以连接到已有的 Wi-Fi 网络,也可以提供 Wi-Fi 热点。
- Wi-Fi Direct 模式(P2P):在这种模式下,ESP32 作为 Wi-Fi Direct 设备,可以直接和其他 Wi-Fi Direct 设备进行通信,不需要使用路由器。
- Promiscuous 模式:在这种模式下,ESP32 可以在监听所有 Wi-Fi 数据包,而不仅仅是与它连接的 AP 或者 P2P 设备相关的数据包。
前面文章介绍了ESP32作为 Station的工作模式,今天使用其Access Point模式。
二、SoftAP配置
1. wifi_config_t 结构体
示例代码设置 ESP32 的 Wi-Fi 模块工作在 AP 模式下,同时配置 Wi-Fi AP 热点的一些参数,方便客户端连接:
2. wifi_event_handler 事件
(1) esp_event_handler_instance_register 注册事件
示例:
esp_event_handler_instance_register
用于在事件循环中注册事件处理程序,其参数解释:
- WIFI_EVENT:事件的基础类型,该函数将向WiFi事件注册处理程序。
- ESP_EVENT_ANY_ID:这是事件ID,这里使用ESP_EVENT_ANY_ID表示注册所有WiFi事件。
- &wifi_event_handler:这是事件处理程序的指针,它将在WiFi事件发生时被调用。
- NULL:这是事件处理程序的参数,这里没有使用参数,因此将其设置为NULL。
- NULL:这是事件处理程序的实例,这里没有使用多个实例,因此将其设置为NULL。
(2) system_event_sta_connected_t 结构体
在ESP-IDF中,当一个设备通过WiFi连接到ESP32的WiFi热点时,ESP32会触发一个连接事件。这个事件会包含一个结构体system_event_sta_connected_t,其中包含连接设备的MAC地址(event->mac)和连接设备在该AP热点下的AID(event->aid)。
其中,event->aid代表的是连接设备在AP热点下的AID(Association ID),AID是一个整数值,表示AP热点中连接的设备的编号。
在802.11标准中,AID是一个由AP热点指派的,可以被用来唯一标识一个STA(Station)设备的值。在ESP-IDF中,AID的范围是1~16,代表连接的设备数量。
3. 关闭SoftAP
三、示例
ESP32可以通过Wi-Fi芯片在AP(接入点)模式下运行,充当热点。下面是开启ESP32热点的步骤:
1. main.c
2. wifi_ap.h
3. wifi_ap.c
运行效果: