当前位置: 首页 > news >正文

vscode的ws环境,esp32s3连接wifi

注意大小写,wsl(也就是linux环境)严格区分大小写。有帮助记得订阅专栏+点赞,当前不定期持续更新。

一、文件夹格式

oled1/                  # 项目根目录
├─ main/                # 主程序文件夹
│  ├─ main.c            # 主函数文件(包含 app_main)
│  └─ CMakeLists.txt    # main 组件的编译配置
├─ components/          # 自定义组件目录(与 main 同级)
│  └─ WIFI/             # WIFI 组件
│     ├─ WIFI.c         # WIFI 功能实现
│     ├─ WIFI.h         # WIFI 头文件(声明函数、宏等)
│     └─ CMakeLists.txt # WIFI 组件的编译配置
├─ CMakeLists.txt       # 项目根目录编译配置(指定项目名称、依赖等)
├─ sdkconfig            # ESP-IDF 配置文件(由 menuconfig 生成)
└─ partitions.csv       # 分区表配置文件(可选,默认使用 ESP-IDF 自带)

二、WIFI.c

#include "WIFI.h"void my_esp_event(void* event_handler_arg, esp_event_base_t event_base,int32_t event_id, void* event_data)
{if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {esp_wifi_connect();  //连接WiFiprintf("WiFi连接断开,正在重新连接...\n");}else if(event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {// WiFi station got IP addressprintf("获取IP地址成功!\n");ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;         char ip_str[16];sprintf(ip_str, IPSTR, IP2STR(&event->ip_info.ip));     //获取ip地址printf("IP的地址是: %s\n", ip_str);}
}void init_Wifi()
{//一、初始化nvs_flash_init();esp_netif_init();       //初始化nvs和网络接口esp_event_loop_create_default();    //创建事件循环(接收wifi信号变化,获取ip啥的,都需要在事件循环里处理)esp_netif_create_default_wifi_sta();    //创建按wifi station(工作站)模式的网络接口printf("WIFI初始化结束!\n");//二、注册wifi和ip的事件回调//wifi事件回调esp_event_handler_instance_t wifi_event_handler;esp_event_handler_instance_register(WIFI_EVENT,             //wifi事件 ESP_EVENT_ANY_ID,       //任何wifi事件都触发下面的回调函数&my_esp_event,          //回调函数NULL,                   //用户数据&wifi_event_handler);   //事件回调句柄//ip事件回调esp_event_handler_instance_t ip_event_handler;esp_event_handler_instance_register(IP_EVENT,               //ip事件IP_EVENT_STA_GOT_IP,    //只关注获取ip的事件&my_esp_event,          //回调函数NULL,                   //数据&ip_event_handler);     //事件回调句柄printf("WIFI和IP事件注册回调完成!\n");//wifi配置与启动//配置wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); //默认配置 cfg-configurationesp_wifi_init(&cfg);esp_wifi_set_mode(WIFI_MODE_STA);wifi_interface_t interface = WIFI_IF_STA; //设置wifi接口为工作站模式wifi_config_t wifi_sta_config = {.sta = {.ssid = User_Wifi_SSID,          //替换为你的WiFi SSID.password = User_Wifi_PassWord,  //替换为你的WiFi密码.threshold.authmode = WIFI_AUTH_WPA2_PSK, //认证方式},};//wifi配置,wifi_sta_config是工作站模式的配置,sta_config是配置wifi账号、密码,和wifi的认证方式esp_wifi_set_config(interface, &wifi_sta_config);   esp_wifi_start();   //启动wifiprintf("WIFI启动完成!\n");
}

三、WIFI.h

#pragma once#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "esp_log.h"
#include "esp_wifi.h"
#include "esp_event.h"
#include "nvs_flash.h"
#include "esp_netif.h"    #include "OLED.h"#define User_Wifi_SSID      "QL.ql"       //你的wifi名字(建议英文),建议使用2.4G频段,不然可能连接不上
#define User_Wifi_PassWord  "Ql.qlGood"  //你的wifi密码void init_Wifi();

四、CMakeList.txt

# components/WIFI/CMakeLists.txt
idf_component_register(SRCS "WIFI.c"INCLUDE_DIRS "."REQUIRES esp_wifi esp_event esp_netifnvs_flashesp_systemOLED
)

五、说明

在 C/C++ 中
#pragma once 
和
#ifndef ... #define ... #endif
作用一样。后者兼容性高且通用,前者方便

②需要更改成自己wifi账号密码的去修改WIFI.h的宏定义,有备注

③WIFI用到的官方组件比较多,注意CMakeList.txt的组件依赖声明和WIFI.h的引用头文件。如果直接引用库但是没有包含依赖,会报错。

六、参考

esp32-s3 IDF 连接wifi_哔哩哔哩_bilibili

http://www.dtcms.com/a/331022.html

相关文章:

  • 深入解析Python身份切换:安全权限管理实践指南
  • MyBatis缓存模块深度解析
  • dolphinscheduler中任务输出变量的问题出现ArrayIndexOutOfBoundsException
  • MCP和Agent之间的区别和联系
  • vercel部署上线
  • lesson38:MySQL数据库核心操作详解:从基础查询到高级应用
  • 飞算JavaAI智慧零售场景实践:从用户洞察到供应链优化的全链路技术升级
  • UniApp 中使用 tui-xecharts插件(或类似图表库如 uCharts)
  • [ HTML 前端 ] 语法介绍和HBuilderX安装
  • 通过网页调用身份证阅读器http websocket方法-湖南步联科技美萍MP999A电子————仙盟创梦IDE
  • 15 ABP Framework 开发工具
  • Transformer网络结构解析
  • HTML <link rel=“preload“>:提前加载关键资源的性能优化利器
  • CNN - 卷积层
  • MicroVM-as-a-Service 后端服务架构设计与实现
  • 使用 Docker 部署 PostgreSQL
  • 加密货币交易所开发:如何打造安全、高并发的数字资产交易平台?
  • 基于ECharts和EdgeOne打造云上智能图表
  • 单体架构集训整理
  • css 属性@font-face介绍
  • 经典深度学习模型——LSTM【原理解释 代码(以2025年美赛C题为例)】
  • FreeRTOS-C语言指针笔记
  • 【入门级-C++程序设计:13、STL 模板:栈(stack)、队 列(queue)、 链 表(list)、 向 量(vector) 等容器】
  • gitlab的ci/cd变量如何批量添加
  • 【P81 10-7】OpenCV Python【实战项目】——车辆识别、车流统计(图像/视频加载、图像运算与处理、形态学、轮廓查找、车辆统计及显示)
  • 智能清扫新纪元:有鹿机器人如何用AI点亮我们的城市角落
  • Streamlit实现Qwen对话机器人
  • CVPR 2025 | 机器人操控 | RoboGround:用“掩码”中介表示,让机器人跨场景泛化更聪明
  • GaussDB数据库架构师修炼(十六) 如何选择磁盘
  • Helm-K8s包管理(三)新建、编辑一个Chart