ESP32作为Wi-Fi STA模式的测试
一、STA模式的流程
初始化阶段 (Init Phase)
- 1.1: Main task(主任务)初始化LwIP(轻量级TCP/IP协议栈)。
ESP_ERROR_CHECK(esp_netif_init());
- 1.2: 创建和初始化Event task(事件任务)。
ESP_ERROR_CHECK(esp_event_loop_create_default());
- 1.3: 创建和初始化Wi-Fi任务。
esp_netif_create_default_wifi_sta();
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
1.4: 创建应用任务。
配置阶段 (Configure Phase)
- 2: 配置Wi-Fi,例如SSID、密码等参数。
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA) ); ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) );
启动阶段 (Start Phase)
- 3.1: 启动Wi-Fi。
ESP_ERROR_CHECK(esp_wifi_start());
- 3.2: WIFI_EVENT_STA_START事件触发,表示Wi-Fi STA已启动。
- 3.3: 应用任务或事件任务处理STA启动后的逻辑。
连接阶段 (Connect Phase)
- 4.1: 连接Wi-Fi网络。
- 4.2: WIFI_EVENT_STA_CONNECTED事件触发,表示Wi-Fi STA成功连接到接入点。
- 4.3: 应用任务处理连接后的操作。
获取IP阶段 (Got IP Phase)
- 5.1: 启动DHCP客户端以获取IP地址。
- 5.2: IP_EVENT_STA_GOT_IP事件触发,表示设备已成功获取IP地址。
- 5.3: 应用任务处理与IP相关的逻辑,例如初始化套接字。
- 5.4: 处理与套接字相关的初始化。
断开连接阶段 (Disconnect Phase)
- 6.1: WIFI_EVENT_STA_DISCONNECTED事件触发,表示Wi-Fi STA与接入点断开连接。
- 6.2: 处理STA断开连接后的逻辑。
- 6.3: 处理具体的断开连接操作,例如清理资源。
IP变更阶段 (IP Change Phase)
- 7.1: IP_EVENT_STA_GOT_IP事件表示设备的IP地址发生变更。
- 7.2: 处理IP地址变更的具体逻辑。
- 7.3: 套接字错误处理,例如由于IP变更引起的网络异常。
去初始化阶段 (Deinit Phase)
- 8.1: 断开Wi-Fi连接。
- 8.2: 停止Wi-Fi任务。
- 8.3: 去初始化Wi-Fi,清理相关资源。
二、代码流程
ESP32作为TCP Client—— IP地址默认分配为192.168.10.x
网络调试助手作为TCP Server——IP地址: 192.168.137.1 端口号:8080
主函数初始化 STA 模式:wifi_init_sta
- 1.初始化NVS
- 2.初始化 TCP/IP 协议栈
- 3.初始化esp事件循环
- 4.创建 Wi-Fi 接口,包括IP地址、子网掩码和网关
- 5.配置 Wi-Fi 事件处理器和IP事件处理器(函数指针指向函数wifi_event_handler)
- 6.设置 Wi-Fi 模式为STA模式,配置STA模式参数
- 7.启动Wi-Fi
Wi-Fi 事件处理器wifi_event_handler
- 1.处理Wi-Fi的STA(Station,客户端模式)启动事件
- 2.处理ESP32成功连接到指定的Wi-Fi AP事件
- 3.处理ESP32与Wi-Fi AP断开连接事件
- 4.处理ESP32成功从AP获取IP地址的事件(启动TCP客户端任务)
TCP 客户端任务tcp_client_task
- 1.设置struct sockaddr_in结构体保存目标服务器的地址信息,目标AP的IP地址和端口号
- 2.创建一个TCP套接字socket()
- 3.使用套接字连接到目标服务器connect()
- 4.通过send()函数发送数据到服务器,通过recv()从服务器接收数据,
- 5.在任务退出前,关闭TCP连接和释放资源。shutdown()用于关闭套接字上的连接,close()释放套接字资源。
三、实现效果:
通过网络调试助手作为TCP Server与ESP32建立TCP连接,发送和接收数据。
注意电脑使用网络调试助手,热点设置2.5G频段,连接wifi不能使用公司wifi