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。
热门推荐
股票MA指标详解:如何理解股票中的技术指标?
心肺复苏——生命的救赎法宝!
西部球队分级:雷霆领跑 掘湖勇等列第二集团 附加赛区竞争白热化
磨牙症病因及临床治疗新书中文版正式发布:开启口腔医学新视角
免疫放疗联合方案在肝癌治疗中的新突破丨肿瘤研究展播
胃病拖延后果严重!医生提醒:“3多、2痛”需警惕,及时胃镜检查
微藻的秘密武器!它们怎样利用“眼睛”在深海中适应环境变化?
超1.1万个政治团体砸钱,2024年美国大选已花费147亿美元
深入探讨物权取得的法律原则与实践应用
去泰国需要带什么?一篇给你讲清楚(文末附打包清单)
“典亮生活”|人格权保护指南之姓名权和名称权
【云计算】安全组和网络ACL的区别
意甲重要情报分享:国际米兰vs佛罗伦萨
外骨骼机器人引爆泰山 “科技+文旅”重构景区经济
棉浆纸和木浆纸有何不同?一文解析材质差异与适用场景
为什么要自我超越?
房价倒数第一,经济增长全国第一!最逆天的城市,出现了
糖醋蒜(超详细步骤+配方)
《2024中国新型灵活就业报告》发布:招聘职位数占比增至15.2%
治疗风热感冒的五种中成药
GMT时区详解
增压花洒有用吗?增压花洒是不是智商税?
吕子乔:《爱情公寓》中的人气角色到底是什么身份?
腿抽筋了别大意,这可能是身体在报警!
蔬菜价格集体大涨!上海这些菜场为什么依然平价?
欧洲四国旅游签证需要哪些材料?如何准备?
幽默的力量:如何在职场中有效运用幽默
激活消费“主引擎”,上海靠什么?
衣裳有色,章纹有彩:读懂清宫服饰的色彩美
以茅台的确定性为例:巴菲特愿为“成长”付出怎样的溢价?