问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ESP32作为Wi-Fi STA模式的测试

创作时间:
作者:
@小白创作中心

ESP32作为Wi-Fi STA模式的测试

引用
CSDN
1.
https://blog.csdn.net/weixin_55171106/article/details/145057158

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。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号