diff --git a/README.md b/README.md
index 6301e19..f64eefb 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,12 @@
# ESP32从初见到入门(ESP32-Guide)

+## 许可协议:
+
+本仓库中的文本、代码、图片和视频均采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议— [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/)。
## 前言:
-本教程旨在记录并分享个人学习ESP32过程中的经验和心得,以帮助其他初学者快速上手ESP32开发。这是一份从初学者视角出发,整理了学习ESP32的一条较为合理的路径和方法的笔记汇编。
+本教程基于**ESP-IDF-V5.3.2**,旨在记录并分享个人学习ESP32过程中的经验和心得,以帮助其他初学者快速上手ESP32开发。这是一份从初学者视角出发,整理了学习ESP32的一条较为合理的路径和方法的笔记汇编。
文档内容基于对大量优质ESP32教程、官方文档以及实际项目实践的总结和理解,力求做到内容清晰、条理分明,既注重基础知识的巩固,也兼顾实战技能的提升。希望通过本教程,读者能少走弯路,从初学到实战开发,逐步掌握ESP32的开发技能。
@@ -42,40 +45,37 @@
### 当前进度:
-| 章节 | 教程 | 文字教程 | 视频教程 | 配套代码 | 完成日期 |
-| -------------- | -------------------- | :--: | :--: | :--: | ---------- |
-| 一、认识ESP32 | 1.1 ESP32介绍 | ✔ | ✔ | 无 | 2025/1/3 |
-| 一、认识ESP32 | 1.2 ESP32开发环境搭建 | ✔ | ✔✔✔ | 无 | 2025/1/4-6 |
-| 一、认识ESP32 | 1.3 idf.py的基本使用 | ✔ | ✔ | 无 | 2025/1/7 |
-| 二、IDF基础与工具使用 | 2.1 ESP32工程结构及构建 | ✔ | ✔ | ✔ | 2025/1/9 |
-| 二、IDF基础与工具使用 | 2.2 ESP-IDF项目配置 | ✔ | ✔ | ✔ | 2025/1/21 |
-| 二、IDF基础与工具使用 | 2.3 ESP-IDF自定义组件 | ✔ | ✔ | ✔ | 2025/1/22 |
-| 二、IDF基础与工具使用 | 2.4 ESP-IDF组件管理器 | ✔ | ✔ | ✔ | 2025/1/24 |
-| 三、FreeRTOS基础 | 3.1 FreeRTOS概述 | ⏳ | ⏳ | 无 | |
-| 三、FreeRTOS基础 | 3.2 FreeRTOS多任务与任务管理 | ⏳ | | | |
-| 三、FreeRTOS基础 | 3.3 FreeRTOS任务看门狗 | ⏳ | | | |
-| 四、外设学习 | 4.1.1 GPIO入门 | ⏳ | | | |
-| 四、外设学习 | 4.1.2 UART串口通信 | ⏳ | | | |
-| 四、外设学习 | 4.1.3 硬件定时器 | ⏳ | | | |
-| 四、外设学习 | 4.1.4 ADC模数转换 | ⏳ | | | |
-| 四、外设学习 | 4.1.5 DAC数模转换 | ⏳ | | | |
-| 四、外设学习 | 4.1.6 LED PWM控制 | ⏳ | | | |
-| 四、外设学习 | 4.1.7 I2C通信 | ⏳ | | | |
-| 四、外设学习 | 4.1.8 SPI通信 | ⏳ | | | |
-| 四、外设学习 | 4.2.1 分区表设计 | ⏳ | | | |
-| 四、外设学习 | 4.2.2 非易失性存储 | ⏳ | | | |
-| 四、外设学习 | 4.2.3 FAT文件系统 | ⏳ | | | |
-| 四、外设学习 | 4.2.4 SPIFFS文件系统 | ⏳ | | | |
-| 五、FreeRTOS进阶 | 5.1 FreeRTOS队列使用教程 | ⏳ | | | |
-| 五、FreeRTOS进阶 | 5.2 FreeRTOS信号量教程 | ⏳ | | | |
-| 五、FreeRTOS进阶 | 5.3 FreeRTOS互斥量教程 | ⏳ | | | |
-| 五、FreeRTOS进阶 | 5.4 FreeRTOS事件组教程 | ⏳ | | | |
-| 五、FreeRTOS进阶 | 5.5 FreeRTOS任务通知教程 | ⏳ | | | |
-| 五、FreeRTOS进阶 | 5.6 FreeRTOS软件定时器教程 | ⏳ | | | |
-| 六、Wi-Fi功能与相关协议 | 6.1.1 Wi-Fi模式与基础操作 | ⏳ | | | |
-| 六、Wi-Fi功能与相关协议 | 6.1.2 Wi-Fi STA与AP配置 | ⏳ | | | |
-| 六、Wi-Fi功能与相关协议 | 6.2.1 TCP协议应用 | ⏳ | | | |
-| 六、Wi-Fi功能与相关协议 | 6.2.2 UDP协议应用 | | | | |
+| 章节 | 教程 | 文字教程 | 视频教程 | 配套代码 | 完成日期 |
+| -------------- | -------------------- | :----------: | :--: | :--: | ---------- |
+| 一、认识ESP32 | 1.1 ESP32介绍 | ✔ | ✔ | 无 | 2025/1/3 |
+| 一、认识ESP32 | 1.2 ESP32开发环境搭建 | ✔ | ✔✔✔ | 无 | 2025/1/4-6 |
+| 一、认识ESP32 | 1.3 idf.py的基本使用 | ✔ | ✔ | 无 | 2025/1/7 |
+| 二、IDF基础与工具使用 | 2.1 ESP32工程结构及构建 | ✔ | ✔ | ✔ | 2025/1/9 |
+| 二、IDF基础与工具使用 | 2.2 ESP-IDF项目配置 | ✔ | ✔ | ✔ | 2025/1/21 |
+| 二、IDF基础与工具使用 | 2.3 ESP-IDF自定义组件 | ✔ | ✔ | ✔ | 2025/1/22 |
+| 二、IDF基础与工具使用 | 2.4 ESP-IDF组件管理器 | ✔ | ✔ | ✔ | 2025/1/24 |
+| 三、FreeRTOS基础 | 3.1 FreeRTOS概述 | ⏳ | ⏳ | 无 | |
+| 三、FreeRTOS基础 | 3.2 FreeRTOS多任务与任务管理 | ⏳ | | | |
+| 三、FreeRTOS基础 | 3.3 FreeRTOS任务看门狗 | ⏳ | | | |
+| 四、外设学习 | 4.1.1 GPIO入门 | ✔ | | | |
+| 四、外设学习 | 4.1.2 UART串口通信 | ✔ | | | |
+| 四、外设学习 | 4.1.3 硬件定时器 | ✔ | | | |
+| 四、外设学习 | 4.1.4 ADC模数转换 | ✔ | | | |
+| 四、外设学习 | 4.1.5 DAC数模转换 | ✔ | | | |
+| 四、外设学习 | 4.1.6 LED PWM控制 | ✔ | | | |
+| 四、外设学习 | 4.1.7 I2C通信 | ✔(新版I2C暂未更新) | | | |
+| 四、外设学习 | 4.1.8 SPI通信 | ⏳ | | | |
+| 四、外设学习 | 4.2.1 分区表设计 | ✔ | | | |
+| 四、外设学习 | 4.2.2 非易失性存储 | ✔ | | | |
+| 四、外设学习 | 4.2.3 FAT文件系统 | ✔ | | | |
+| 四、外设学习 | 4.2.4 SPIFFS文件系统 | ✔ | | | |
+| 五、FreeRTOS进阶 | 5.1 FreeRTOS队列使用教程 | ✔ | | | |
+| 五、FreeRTOS进阶 | 5.2 FreeRTOS信号量教程 | ✔ | | | |
+| 五、FreeRTOS进阶 | 5.3 FreeRTOS互斥量教程 | ✔ | | | |
+| 五、FreeRTOS进阶 | 5.4 FreeRTOS事件组教程 | ✔ | | | |
+| 五、FreeRTOS进阶 | 5.5 FreeRTOS任务通知教程 | ✔ | | | |
+| 五、FreeRTOS进阶 | 5.6 FreeRTOS软件定时器教程 | ✔ | | | |
+
@@ -89,8 +89,12 @@

-至于LVGL,特殊外设,实战演练部分,会在教程章节单独推荐开发板。
+如果想进一步节省学习成本,还可以使用这种9.9元的ESP32-C3开发板(淘宝搜下面的图):
+
+
+
+至于LVGL,特殊外设,实战演练部分,会在教程章节单独推荐开发板或外设模块。
## 〇、常见问题及解决方案:
@@ -99,6 +103,7 @@
> 常见问题及解决方案:[常见问题及解决方案.md](docs/00.常见问题及解决方案/常见问题及解决方案.md)
## 一、认识ESP32 【完结】
+
> 目标:学会安装ESP-IDF开发环境,并使用其烧录代码,掌握ESP32的基本特点及工具使用。
### 1.1 什么是ESP32
@@ -112,7 +117,9 @@
本节将详细讲解如何在不同操作系统(Windows/Linux/Mac)上搭建ESP-IDF开发环境,涵盖工具链安装、环境变量配置及调试工具的准备等内容。通过本节,读者可以完成开发环境的搭建,为后续开发做好准备。
-- 在线文字教程:[ESP-IDF开发环境搭建.md](docs/01.认识ESP32/1.2-ESP32开发环境搭建/ESP32开发环境搭建.md)
+- 在线文字教程-1:[环境搭建-Windows.md](docs/01.认识ESP32/1.2-ESP32开发环境搭建/1.环境搭建-Windows.md)
+- 在线文字教程-2:[环境搭建-Ubuntu虚拟机.md](docs/01.认识ESP32/1.2-ESP32开发环境搭建/2.环境搭建-Ubuntu虚拟机.md)
+- 在线文字教程-3:[环境搭建-Windows与虚拟机组合使用.md](docs/01.认识ESP32/1.2-ESP32开发环境搭建/3.环境搭建-Windows与虚拟机组合使用.md)
- 在线视频教程-1:[认识ESP32—1.2.1 Win下安装ESP-IDF开发环境](https://www.bilibili.com/video/BV14o62YQEBC?vd_source=ef5a0ab0106372751602034cdd9ab98e&spm_id_from=333.788.videopod.sections)
- 在线视频教程-2:[认识ESP32—1.2.2 Linux下安装ESP-IDF开发环境](https://www.bilibili.com/video/BV1vLrKYHExy/?vd_source=ef5a0ab0106372751602034cdd9ab98e#reply251069588753)
- 在线视频教程-3:[认识ESP32—1.2.3 Windows下使用ssh调用Linux系统下的开发环境](https://www.bilibili.com/video/BV1vLrKYHExy/?vd_source=ef5a0ab0106372751602034cdd9ab98e#reply251069588753)
@@ -123,7 +130,7 @@
- 在线文字教程:[ESP32初体验-idf.py的基本使用.md](docs/01.认识ESP32/1.3-初试ESP32-idf.py的基本使用/idf.py的基本使用.md)
- 在线视频教程:[ESP32初体验-idf.py的基本使用](https://www.bilibili.com/video/BV1VLrSY3E15?spm_id_from=333.788.videopod.sections&vd_source=ef5a0ab0106372751602034cdd9ab98e)
-- 教程配套代码:[hello_world](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/01.start/hello_world)
+- 教程配套代码:[hello_world](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/01.start/hello_world)
---
@@ -137,7 +144,7 @@
- 在线文字教程:[ESP32工程结构.md](docs/02.ESP-IDF基础/2.1-ESP32工程结构/ESP-IDF的工程结构.md)
- 在线视频教程:[ESP32工程结构](https://www.bilibili.com/video/BV1CfrzYcEkK/?spm_id_from=333.1387.homepage.video_card.click&vd_source=ef5a0ab0106372751602034cdd9ab98e)
-- 教程配套代码:[基础工程模板代码](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/01/sample_project)
+- 教程配套代码:[基础工程模板代码](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/01/sample_project)
### 2.2 ESP-IDF项目配置
@@ -145,7 +152,7 @@
- 在线文字教程:[ESP-IDF项目配置.md](docs/02.ESP-IDF基础/2.2-ESP-IDF项目配置/ESP-IDF项目配置.md)
- 在线视频教程:[ESP-IDF项目配置详解](https://www.bilibili.com/video/BV15xwbeiEnD/)
-- 教程配套代码:[项目配置示例代码](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/02)
+- 教程配套代码:[项目配置示例代码](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/02)
### 2.3 ESP-IDF自定义组件
@@ -153,7 +160,7 @@
- 在线文字教程:[ESP-IDF自定义组件.md](docs/02.ESP-IDF基础/2.3-ESP-IDF自定义组件/ESP-IDF自定义组件.md)
- 在线视频教程:[ESP-IDF自定义组件](https://www.bilibili.com/video/BV182ftYHEox/?spm_id_from=333.1387.upload.video_card.click&vd_source=ef5a0ab0106372751602034cdd9ab98e)
-- 教程配套代码:[组件示例代码](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/03/blink_component)
+- 教程配套代码:[组件示例代码](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/03/blink_component)
### 2.4 ESP-IDF组件管理器
@@ -161,7 +168,7 @@
- 在线文字教程:[ESP-IDF组件管理器.md](docs/02.ESP-IDF基础/2.4-ESP-IDF组件管理器/ESP-IDF组件管理器.md)
- 在线视频教程:[ESP-IDF组件管理器详解](https://www.bilibili.com/video/BV1etfHYgE6M/)
-- 教程配套代码:[组件管理器示例代码](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/04/button_blink)
+- 教程配套代码:[组件管理器示例代码](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/04/button_blink)
---
@@ -526,6 +533,16 @@ MCPWM 外设是一个多功能 PWM 生成器,集成多个子模块,在电力
> 补充一些综合性性案例,与实用功能,为前八章做补充。
+### 1.Web服务程序(Vue3+element-plus)
+> 在线文字教程:[WEB服务程序(Vue3+element-plus).md](docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/WEB服务程序.md)
+> 在线视频教程:
+> 教程配套代码:[WEB服务程序示例代码](docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/WEB服务程序.md)
+
+### 1. OTA功能
+
+
+
+
## 十、项目实战
@@ -534,12 +551,9 @@ MCPWM 外设是一个多功能 PWM 生成器,集成多个子模块,在电力
## 参考链接
-- 孤独的二进制:https://space.bilibili.com/1375767826
-- Augtons正(单片机):https://blog.csdn.net/m0_50064262/article/details/120250151
-- 乐鑫文档:https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.4/esp32c3/index.html
-- 第九个下弦月:https://space.bilibili.com/34165842?spm_id_from=333.999.0.0
-- **Michael_ee**:https://space.bilibili.com/505630520/fans/follow?tagid=529812
+- 孤独的二进制: https://space.bilibili.com/1375767826
+- Augtons正(单片机): https://blog.csdn.net/m0_50064262/article/details/120250151
+- 乐鑫文档: https://docs.espressif.com/projects/esp-idf/zh_CN/release-v4.4/esp32c3/index.html
+- 第九个下弦月: https://space.bilibili.com/34165842?spm_id_from=333.999.0.0
+- **Michael_ee**: https://space.bilibili.com/505630520/fans/follow?tagid=529812
-# License
-
-The texts, code, images,, and videos in this repository are licensed under [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/).
\ No newline at end of file
diff --git a/docs/00.常见问题及解决方案/常见问题及解决方案.md b/docs/00.常见问题及解决方案/常见问题及解决方案.md
index 287dd6e..a8c55d1 100644
--- a/docs/00.常见问题及解决方案/常见问题及解决方案.md
+++ b/docs/00.常见问题及解决方案/常见问题及解决方案.md
@@ -1,5 +1,8 @@
# 常见问题与解决
+>[!INFO]
+>这里也推荐大家参考:[ESP-FAQ](https://docs.espressif.com/projects/esp-faq/zh_CN/latest/index.html) 是由乐鑫官方推出的针对常见问题的总结。在线帮助我们的用户快速检索经常问到的问题,通过简单的解释获得解答。目前常见问题的种类涵盖:开发环境、应用方案、软件平台、硬件相关和测试测试。
+
## 索引
[[toc]]
diff --git a/docs/01.认识ESP32/1.2-ESP32开发环境搭建/1.环境搭建-Windows.md b/docs/01.认识ESP32/1.2-ESP32开发环境搭建/1.环境搭建-Windows.md
new file mode 100644
index 0000000..a8b21bd
--- /dev/null
+++ b/docs/01.认识ESP32/1.2-ESP32开发环境搭建/1.环境搭建-Windows.md
@@ -0,0 +1,160 @@
+# ESP32开发环境搭建—Windows系统
+
+> [!NOTE]
+> 本文介绍在Windows系统下安装ESP-IDF开发环境,并且推荐使用VS Code插件直接安装
+> 对应视频教程-1:https://www.bilibili.com/video/BV14o62YQEBC
+
+## 一、使用VS Code插件直接安装
+
+### 1.1 下载插件
+
+在Windows系统下使用VS Code插件直接安装ESP-IDF可以参考官方文档:[Install ESP-IDF and Tools](https://docs.espressif.com/projects/vscode-esp-idf-extension/zh_CN/latest/installation.html),下面介绍安装过程:
+
+安装VS Code,并安装ESP-IDF插件
+
+
+
+### 1.2 配置插件:安装ESP-IDF
+
+按Ctrl+Shift+P打开命令行,输入`Configure ESP-IDF Extension`
+
+
+
+选择`ESP-IDF: Configure ESP-IDF Extension`这一项来配置插件,选择后页面如下图所示:
+
+
+
+这里我们选择Express快速安装。
+
+
+
+第一项为下载服务器选项,推荐使用 Espressif 下载服务器。
+第二项为ESP-IDF版本,建议选择V开头的正式发布板,本教程使用V5.2.3版本。
+第三项ESP-IDF源码位置,请选择不带空格的路径,且对应文件夹需要为空。
+第四项ESP-IDF 工具 位置,要求同上,**但不能与第三项相同**!
+这里我们选择在D盘根目录下新建`Espressif`文件夹。
+
+然后点击安装即可,如下图所示:
+
+
+
+等待十几分钟即可安装完成(网络差可能会久一点),安装完成后如下图所示:
+
+
+
+至此开发环境安装完成,我们可以打开一个示例工程编译,验证安装是否完成。
+
+### 1.3 测试开发环境可用
+
+点击shown examples 选择刚才下载的IDF版本
+
+
+
+
+随便选择一个示例工程,这里以blink工程为例:
+
+
+
+
+点击新建示例项目,选择一个存储位置:
+
+
+
+VS Code会自动打开项目目录,如下:
+
+
+
+点击扳手图标构建项目:
+
+
+
+编译停止后,命令行显示下列内容,则开发环境安装无误。至此ESP32的开发环境就准备完毕了。
+
+
+
+至于进一步烧录代码至开发板,将在下一节介绍。
+
+## 二、 手动安装
+
+Windows系统下手动安装可以参考官方文档:[Windows 平台工具链的标准设置](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/windows-setup.html#),下面简单介绍安装过程:
+
+### 2.1 下载 ESP-IDF 工具安装器
+
+打开下面的链接,下载 ESP-IDF 工具安装器
+
+>https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/windows-setup.html
+
+
+
+选择自己需要的版本,这里以V5.2.3版本为例(后续教程也使用该版本)
+
+
+
+### 2.2 安装ESP-IDF
+
+下载完成后打开esp-idf-tools-setup-offline-x.x.x.exe程序即可开始安装
+
+
+
+选择安装路径:
+
+
+
+选择需要的组件和驱动程序(建议全选):
+
+
+
+等待安装完成即可,安装完成如下图:
+
+
+
+
+### 2.3 测试开发环境可用
+下面编译一个示例工程,以确保ESP-IDF可以正常工作,示例代码位于`安装目录\frameworks\esp-idf-v5.2.3\examples`,如下图:
+
+
+
+复制`examples/get-started`下的`blink`点灯工程到桌面(或其他位置),在安装完成后弹出的命令行中切换到`blink`目录,并运行`idf.py build`命令:
+
+
+
+运行后编译完成输出如下,则开发环境安装无误,至此ESP32的开发环境就准备完毕了。
+
+
+### 2.4 配置VS Code插件
+
+**但如果要使用VS Code插件功能,还需要继续下面的步骤(可选,不使用插件进行开发也完全没有问题):**
+
+依然是安装VS Code,并安装ESP-IDF插件
+
+
+
+按Ctrl+Shift+P打开命令行,输入`Configure ESP-IDF Extension`
+
+
+
+选择`ESP-IDF: Configure ESP-IDF Extension`这一项来配置插件,选择后页面如下图所示:
+
+
+
+这里我们选择第三个选项,使用现有设置,设置`Enter ESP-IDF directory (IDF_PATH)`为安装根目录下的`frameworks\esp-idf-v5.2.3`目录,设置`Enter ESP-IDF Tools directory (IDF_TOOLS_PATH)`为安装根目录,如下图(本教程中安装根目录为`c:\Espressif\V523`)
+
+
+
+点击安装,等待十几分钟安装完成即可,要注意的是虽然是离线安装,但这个步骤依赖网络下载python环境相关的工具,容易失败(失败很大可能是网络引起的,不妨换个网络环境重新尝试😂)
+
+
+
+
+安装成功显示如下:
+
+
+
+
+## 参考链接
+
+1. https://www.bilibili.com/video/BV1J14y1n7Ve/?spm_id_from=333.337.search-card.all.click&vd_source=ef5a0ab0106372751602034cdd9ab98e
+2. https://blog.csdn.net/ZRongZH/article/details/129237476
+3. https://www.bilibili.com/video/BV1Mv4y1U7x9/?spm_id_from=333.999.0.0&vd_source=ef5a0ab0106372751602034cdd9ab98e
+
+
diff --git a/docs/01.认识ESP32/1.2-ESP32开发环境搭建/2.环境搭建-Ubuntu虚拟机.md b/docs/01.认识ESP32/1.2-ESP32开发环境搭建/2.环境搭建-Ubuntu虚拟机.md
new file mode 100644
index 0000000..25b6c76
--- /dev/null
+++ b/docs/01.认识ESP32/1.2-ESP32开发环境搭建/2.环境搭建-Ubuntu虚拟机.md
@@ -0,0 +1,150 @@
+# 二、ESP32开发环境搭建—Linux系统
+
+> [!NOTE]
+> 本节介绍在Linux系统下搭建ESP-IDF开发环境,以获得更高的编译速度。
+> 对应视频教程: https://www.bilibili.com/video/BV1vLrKYHExy
+
+## 一、使用VS Code插件直接安装
+
+这种安装方法和[环境搭建-Windows](1.环境搭建-Windows.md)介绍的Windows下使用VS Code插件直接安装没有太大区别,参考[环境搭建-Windows](1.环境搭建-Windows.md)和官方文档中针对Linux系统的提示即可,这里就不展开描述了。
+
+建议直接参考官方文档:[Install ESP-IDF and Tools](https://docs.espressif.com/projects/vscode-esp-idf-extension/zh_CN/latest/installation.html)进行安装,但相比于在Linux下使用VS code安装,笔者更建议直接手动安装。
+
+## 二、 手动安装
+
+Linux系统下使用ESP-IDF更推荐手动安装,因为Linux系统下我们使用更多的是命令行,VS Code插件提供的可视化操作可有可无。
+
+这部分同样可以优先参考官方文档:[Linux 和 macOS 平台工具链的标准设置](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/linux-macos-setup.html),下面就安装过程进行简单说明:
+
+
+### 2.1 准备linux的电脑或者虚拟机
+
+教程使用Ubuntu22.04的虚拟机环境,以安装v5.1.2为例,**注意本教程后续使用v5.2.3进行教学**,读者下载时建议下载新的`v5.2.3`版本。
+
+
+
+
+### 2.2 下载ESP-IDF包环境
+
+下载ESP-IDF包环境,这里有两种下载方式:直接使用`git clone`命令下载,或者手动前往ESP-IDF仓库下载
+
+**使用`git clone`下载 (由于网络问题,容易下载失败)**
+
+在终端运行命令:
+
+```sh
+mkdir -p ~/esp
+cd ~/esp
+git clone -b v5.1.2 --recursive https://github.com/espressif/esp-idf.git
+```
+
+**手动下载**
+
+前往ESP-IDF仓库:https://github.com/espressif/esp-idf/releases/tag/v5.1.2 ,如下:
+
+
+
+找到: `Download an archive with submodules included `一项
+
+
+
+
+下载并解压到 ~/esp/esp-idf 即可
+
+> PS:这里也可以安装多个版本,在这个目录中,不会冲突
+
+### 2.3 安装依赖项
+
+编译 ESP-IDF 需要以下软件包。请根据使用的 Linux 发行版本,选择合适的安装命令。
+
+- Ubuntu 和 Debian:
+```sh
+sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
+```
+
+- CentOS 7 & 8:
+```sh
+sudo yum -y update && sudo yum install git wget flex bison gperf python3 python3-setuptools cmake ninja-build ccache dfu-util libusbx
+```
+
+- Arch:
+```sh
+sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
+```
+
+### 2.4 安装 ESP-IDF 使用的各种工具
+
+这里使用全部安装:
+
+```sh
+cd ~/esp/esp-idf
+./install.sh all
+```
+
+ESP-IDF 工具安装器会下载 Github 发布版本中附带的一些工具,如果访问 Github 较为缓慢,可以设置一个环境变量,从而优先选择 Espressif 的下载服务器进行 Github 资源下载。
+
+```sh
+cd ~/esp/esp-idf
+export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
+./install.sh
+```
+
+
+这一步可能会遇到python下载失败的问题:
+
+
+
+需要修改镜像源:
+
+Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
+内容如下:
+
+```ini
+[global]
+index-url = https://pypi.tuna.tsinghua.edu.cn/simple
+[install]
+trusted-host=mirrors.aliyun.com
+```
+
+> 如果还失败就去修改:~/.config/pip/pip.conf 这个配置文件
+
+### 2.4 配置快捷指令
+
+在终端执行`. $HOME/esp/esp-idf/export.sh` 这个脚本,就可以在当前终端使用esp-idf工具
+
+但是每次执行都要先使用这个脚本激活环境不太方便,可以为执行 `export.sh` 创建一个别名
+
+打开`.bashrc` 配置文件
+```
+nano ~/.bashrc
+```
+
+写入配置文件:
+
+
+我这里安装了两个版本,于是写两条命令
+
+
+
+要立即启用修改后的 .bashrc 文件,无需重启终端,只需要使用以下命令加载 .bashrc 文件:
+
+```sh
+source ~/.bashrc
+```
+### 2.6 测试编译
+
+打开历程目录下的hello_world程序:
+
+
+
+使用`idf.py build `命令编译代码,显示下面的内容则编译成功
+
+
+
+至此Linux下开发环境安装完成。
+
+```
+# get_idf_env
+alias idf53='. $HOME/esp/v532/esp-idf/export.sh'
+
+```
diff --git a/docs/01.认识ESP32/1.2-ESP32开发环境搭建/3.环境搭建-Windows与虚拟机组合使用.md b/docs/01.认识ESP32/1.2-ESP32开发环境搭建/3.环境搭建-Windows与虚拟机组合使用.md
new file mode 100644
index 0000000..8dd9937
--- /dev/null
+++ b/docs/01.认识ESP32/1.2-ESP32开发环境搭建/3.环境搭建-Windows与虚拟机组合使用.md
@@ -0,0 +1,120 @@
+# 三、ESP32开发环境搭建—Windows与虚拟机组合使用(进阶)
+
+
+> [!NOTE]
+> 本节主要介绍教程:[环境搭建-Windows](1.环境搭建-Windows.md)和 [环境搭建-Ubuntu虚拟机](2.环境搭建-Ubuntu虚拟机.md)组合使用的情况,属于一种进阶的用法,故文档会比较简略,推荐参考视频教程
+> 对应视频教程:https://www.bilibili.com/video/BV1s2rGYsE4V
+
+## 一、SSH介绍
+
+SSH (Secure Shell) 是一种网络协议,用于在不安全的网络上安全地访问远程设备和服务器。它提供了强大的加密功能,可以保护用户和服务器之间的通信免受窃听、篡改和中间人攻击。
+
+使用 ssh 命令可以登录远程服务器:
+
+``` sh
+ssh -p 22 user@host
+```
+
+其中 -p:指定端口号 、user:登录的用户名。host:登录的主机、默认的端口号为22,当端口号为22的时候,可以省略,直接使用如下方式:
+
+```sh
+ssh user@host
+```
+
+在Windows下使用VS Code通过SSH调用Linux系统的开发环境,可以在有效提升编译速度的同时,进一步提升开发体验,下面是详细的步骤:
+
+## 二、配置步骤
+### 2.1 配置SSH连接,确保可以连接
+
+1. 确保Linux服务器已启动,并记录其IP地址或主机名,在Linux使用`ifconfig`命令查询虚拟机IP(也可以使用`ip a`命令),找不到命令 `ifconfig`,但可以通过以下命令安装它:
+
+```sh
+sudo apt install net-tools
+```
+
+查看IP:
+
+
+
+
+2. 在 Ubuntu 上启用 SSH,打开终端,并且安装openssh-server软件包
+
+```sh
+sudo apt install openssh-server
+```
+
+一旦安装完成之后,SSH 服务将会被自动启动。可以s输入下面的命令验证 SSH 是否正在运行:
+
+```sh
+sudo systemctl status ssh
+```
+
+如果防火墙被启用,还需要下面的命令打开了 SSH 端口
+
+```sh
+sudo ufw allow ssh
+```
+
+在Windows的CMD进行测试连接,ssh 用户名@服务器IP地址
+
+
+
+ 这一步可能需要在Windows上安装OpenSSH客户端(默认Windows 10及以上版本自带)
+### 2.2 安装Remote - SSH插件
+
+打开VS Code,点击左侧的扩展市场图标,搜索`Remote - SSH`插件并安装。
+
+
+
+
+### 2.3 通过Remote - SSH连接到Linux服务器
+
+打开VS Code,按下`Ctrl+Shift+P`,输入`Remote-SSH: Add New SSH Host`并选择该项。
+
+输入SSH连接命令,例如: `ssh 用户名@服务器IP地址`,然后选择一个保存SSH配置的路径(默认路径是`~/.ssh/config`)。
+
+### 2.4 在VS Code中打开ESP-IDF工程
+
+2. 使用VS Code的`File -> Open Folder`功能,选择Linux服务器中的ESP-IDF项目目录:
+ 例如: `~/esp/esp-idf/examples/get-started/hello_world`
+3. 打开项目后,VS Code会加载远程的文件结构。
+
+### 2.5 配置密钥,实现免密连接
+
+4. 在Windows下使用`ssh-keygen`生成密钥,按提示操作:
+ 默认保存路径是 ~/.ssh/id_rsa(直接按回车即可)。可为密钥设置密码,如果不想设置,直接回车跳过。生成完成后,会在默认路径下生成:
+ - 公钥:~/.ssh/id_rsa.pub
+ - 私钥:~/.ssh/id_rsa
+5. 将公钥复制到远程服务器
+ 在本地机器上,找到你的公钥文件(通常在 ~/.ssh/id_rsa.pub)并查看内容,进行复制。
+ 使用 SSH 登录到远程服务器,创建 .ssh 目录并设置权限
+
+``` sh
+mkdir -p ~/.ssh
+chmod 700 ~/.ssh
+```
+
+ 添加公钥到 authorized_keys 文件,编辑 ~/.ssh/authorized_keys 文件,将复制的公钥粘贴到文件中并保存.
+
+``` sh
+nano ~/.ssh/authorized_keys
+```
+
+最后,设置 authorized_keys 文件的权限:
+
+``` sh
+chmod 600 ~/.ssh/authorized_keys
+```
+
+### 2.6 编译和调试项目
+
+6. 在终端窗口中,运行以下命令以编译项目:
+ ` idf.py build`
+
+7. 如果需要烧录代码到开发板,确保开发板通过USB连接到Linux服务器,然后运行以下命令:
+ `idf.py -p /dev/ttyUSB0 flash`
+ (根据实际情况替换正确的串口设备路径。)
+
+8. 编译和烧录完成后,可以通过以下命令监控串口输出:
+ ` idf.py -p /dev/ttyUSB0 monitor`
+
diff --git a/docs/01.认识ESP32/1.2-ESP32开发环境搭建/4.环境搭建-WSL2.md b/docs/01.认识ESP32/1.2-ESP32开发环境搭建/4.环境搭建-WSL2.md
new file mode 100644
index 0000000..900d96d
--- /dev/null
+++ b/docs/01.认识ESP32/1.2-ESP32开发环境搭建/4.环境搭建-WSL2.md
@@ -0,0 +1,6 @@
+# 三、ESP32开发环境搭建—WSL(进阶且推荐)
+
+
+> [!NOTE]
+> 本节主要介绍在WSL2环境下安装ESP-IDF开发环境,也是笔者比较推荐的开发环境。
+> 对应视频教程:
diff --git a/docs/01.认识ESP32/1.2-ESP32开发环境搭建/ESP32开发环境搭建.md b/docs/01.认识ESP32/1.2-ESP32开发环境搭建/ESP32开发环境搭建.md
deleted file mode 100644
index 2835643..0000000
--- a/docs/01.认识ESP32/1.2-ESP32开发环境搭建/ESP32开发环境搭建.md
+++ /dev/null
@@ -1,416 +0,0 @@
-# ESP32开发环境搭建
-
-> [!NOTE]
-> 对应视频教程-1:https://www.bilibili.com/video/BV14o62YQEBC
-> 对应视频教程-2:https://www.bilibili.com/video/BV1vLrKYHExy
-> 对应视频教程-3:https://www.bilibili.com/video/BV1s2rGYsE4V
-## 一、Windows系统
-
-### 1.1 使用VS Code插件直接安装
-
-在Windows系统下使用VS Code插件直接安装ESP-IDF可以参考官方文档:[Install ESP-IDF and Tools](https://docs.espressif.com/projects/vscode-esp-idf-extension/zh_CN/latest/installation.html),下面介绍安装过程:
-
-安装VS Code,并安装ESP-IDF插件
-
-
-
-按Ctrl+Shift+P打开命令行,输入`Configure ESP-IDF Extension`
-
-
-
-选择`ESP-IDF: Configure ESP-IDF Extension`这一项来配置插件,选择后页面如下图所示:
-
-
-
-这里我们选择Express快速安装。
-
-
-
-第一项为下载服务器选项,推荐使用 Espressif 下载服务器。
-第二项为ESP-IDF版本,建议选择V开头的正式发布板,本教程使用V5.2.3版本。
-第三项ESP-IDF源码位置,请选择不带空格的路径,且对应文件夹需要为空。
-第四项ESP-IDF 工具 位置,要求同上,**但不能与第三项相同**!
-这里我们选择在D盘根目录下新建`Espressif`文件夹。
-
-然后点击安装即可,如下图所示:
-
-
-
-等待十几分钟即可安装完成(网络差可能会久一点),安装完成后如下图所示:
-
-
-
-至此开发环境安装完成,我们可以打开一个示例工程编译,验证安装是否完成。
-
-
-点击shown examples 选择刚才下载的IDF版本
-
-
-
-
-随便选择一个示例工程,这里以blink工程为例:
-
-
-
-
-点击新建示例项目,选择一个存储位置:
-
-
-
-VS Code会自动打开项目目录,如下:
-
-
-
-点击扳手图标构建项目:
-
-
-
-编译停止后,命令行显示下列内容,则开发环境安装无误。至此ESP32的开发环境就准备完毕了。
-
-
-
-至于进一步烧录代码至开发板,将在下一节介绍。
-
-### 1.2 手动安装
-
-Windows系统下手动安装可以参考官方文档:[Windows 平台工具链的标准设置](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/windows-setup.html#),下面简单介绍安装过程:
-
-打开下面的链接,下载 ESP-IDF 工具安装器
-
->https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/windows-setup.html
-
-
-
-选择自己需要的版本,这里以V5.2.3版本为例(后续教程也使用该版本)
-
-
-
-下载完成后打开esp-idf-tools-setup-offline-x.x.x.exe程序即可开始安装
-
-
-
-选择安装路径:
-
-
-
-选择需要的组件和驱动程序(建议全选):
-
-
-
-等待安装完成即可,安装完成如下图:
-
-
-
-下面编译一个示例工程,以确保ESP-IDF可以正常工作,示例代码位于`安装目录\frameworks\esp-idf-v5.2.3\examples`,如下图:
-
-
-
-复制`examples/get-started`下的`blink`点灯工程到桌面(或其他位置),在安装完成后弹出的命令行中切换到`blink`目录,并运行`idf.py build`命令:
-
-
-
-运行后编译完成输出如下,则开发环境安装无误,至此ESP32的开发环境就准备完毕了。
-
-
-
-
-**但如果要使用VS Code插件功能,还需要继续下面的步骤(可选,不使用插件进行开发也完全没有问题):**
-
-依然是安装VS Code,并安装ESP-IDF插件
-
-
-
-按Ctrl+Shift+P打开命令行,输入`Configure ESP-IDF Extension`
-
-
-
-选择`ESP-IDF: Configure ESP-IDF Extension`这一项来配置插件,选择后页面如下图所示:
-
-
-
-这里我们选择第三个选项,使用现有设置,设置`Enter ESP-IDF directory (IDF_PATH)`为安装根目录下的`frameworks\esp-idf-v5.2.3`目录,设置`Enter ESP-IDF Tools directory (IDF_TOOLS_PATH)`为安装根目录,如下图(本教程中安装根目录为`c:\Espressif\V523`)
-
-
-
-点击安装,等待十几分钟安装完成即可,要注意的是虽然是离线安装,但这个步骤依赖网络下载python环境相关的工具,容易失败(失败很大可能是网络引起的,不妨换个网络环境重新尝试😂)
-
-
-
-
-安装成功显示如下:
-
-
-
-
-## 二、Linux系统
-
-### 2.1 使用VS Code插件直接安装
-
-这种安装方法和1.1介绍的Windows下使用VS Code插件直接安装没有太大区别,参考1.1部分和官方文档中针对Linux系统的提示即可,这里就不展开描述了。
-
-建议直接参考官方文档:[Install ESP-IDF and Tools](https://docs.espressif.com/projects/vscode-esp-idf-extension/zh_CN/latest/installation.html)进行安装,但相比于在Linux下使用VS code安装,笔者更建议直接手动安装。
-
-### 2.2 手动安装
-
-Linux系统下使用ESP-IDF更推荐手动安装,因为Linux系统下我们使用更多的是命令行,VS Code插件提供的可视化操作可有可无。
-
-这部分同样可以优先参考官方文档:[Linux 和 macOS 平台工具链的标准设置](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/get-started/linux-macos-setup.html),下面就安装过程进行简单说明:
-
-
-#### 2.2.1 准备linux的电脑或者虚拟机
-
-教程使用Ubuntu22.04的虚拟机环境,以安装v5.1.2为例,**注意本教程后续使用v5.2.3进行教学**,读者下载时建议下载新的`v5.2.3`版本。
-
-
-
-
-#### 2.2.2 下载ESP-IDF包环境
-
-下载ESP-IDF包环境,这里有两种下载方式:直接使用`git clone`命令下载,或者手动前往ESP-IDF仓库下载
-
-**使用`git clone`下载 (由于网络问题,容易下载失败)**
-
-在终端运行命令:
-
-```sh
-mkdir -p ~/esp
-cd ~/esp
-git clone -b v5.1.2 --recursive https://github.com/espressif/esp-idf.git
-```
-
-**手动下载**
-
-前往ESP-IDF仓库:https://github.com/espressif/esp-idf/releases/tag/v5.1.2 ,如下:
-
-
-
-找到: `Download an archive with submodules included `一项
-
-
-
-
-下载并解压到 ~/esp/esp-idf 即可
-
-> PS:这里也可以安装多个版本,在这个目录中,不会冲突
-
-#### 2.2.3 安装依赖项
-
-编译 ESP-IDF 需要以下软件包。请根据使用的 Linux 发行版本,选择合适的安装命令。
-
-- Ubuntu 和 Debian:
-```sh
-sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
-```
-
-- CentOS 7 & 8:
-```sh
-sudo yum -y update && sudo yum install git wget flex bison gperf python3 python3-setuptools cmake ninja-build ccache dfu-util libusbx
-```
-
-- Arch:
-```sh
-sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
-```
-
-#### 2.2.3 安装 ESP-IDF 使用的各种工具
-
-这里使用全部安装:
-
-```sh
-cd ~/esp/esp-idf
-./install.sh all
-```
-
-ESP-IDF 工具安装器会下载 Github 发布版本中附带的一些工具,如果访问 Github 较为缓慢,可以设置一个环境变量,从而优先选择 Espressif 的下载服务器进行 Github 资源下载。
-
-```sh
-cd ~/esp/esp-idf
-export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
-./install.sh
-```
-
-
-这一步可能会遇到python下载失败的问题:
-
-
-
-需要修改镜像源:
-
-Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
-内容如下:
-
-```ini
-[global]
-index-url = https://pypi.tuna.tsinghua.edu.cn/simple
-[install]
-trusted-host=mirrors.aliyun.com
-```
-
-> 如果还失败就去修改:~/.config/pip/pip.conf 这个配置文件
-
-#### 2.2.4 配置快捷指令
-
-在终端执行`. $HOME/esp/esp-idf/export.sh` 这个脚本,就可以在当前终端使用esp-idf工具
-
-但是每次执行都要先使用这个脚本激活环境不太方便,可以为执行 `export.sh` 创建一个别名
-
-打开`.bashrc` 配置文件
-```
-nano ~/.bashrc
-```
-
-写入配置文件:
-
-
-我这里安装了两个版本,于是写两条命令
-
-
-
-要立即启用修改后的 .bashrc 文件,无需重启终端,只需要使用以下命令加载 .bashrc 文件:
-
-```sh
-source ~/.bashrc
-```
-#### 2.2.5 测试编译
-
-打开历程目录下的hello_world程序:
-
-
-
-使用`idf.py build `命令编译代码,显示下面的内容则编译成功
-
-
-
-至此Linux下开发环境安装完成。
-
-```
-# get_idf_env
-alias idf53='. $HOME/esp/v532/esp-idf/export.sh'
-
-```
-
-最后在这里分享本节安装使用的相关软件和安装好IDF的Linux虚拟机:[软件资源](https://www.alipan.com/s/PRCdvqnzCWL)
-
-
-## 三、(进阶)Windows下使用ssh调用Linux系统下的开发环境
-
-
-SSH (Secure Shell) 是一种网络协议,用于在不安全的网络上安全地访问远程设备和服务器。它提供了强大的加密功能,可以保护用户和服务器之间的通信免受窃听、篡改和中间人攻击。
-
-使用 ssh 命令登录远程服务器:
-
-``` sh
-ssh -p 22 user@host
-```
-
-其中 -p:指定端口号 、user:登录的用户名。host:登录的主机、默认的端口号为22,当端口号为22的时候,可以省略,直接使用如下方式:
-
-```sh
-ssh user@host
-```
-
-在Windows下使用VS Code通过SSH调用Linux系统的开发环境,可以在有效提升编译速度的同时,进一步提升开发体验,下面是详细的步骤:
-
-### 3.1 配置SSH连接,确保可以连接
-
-1. 确保Linux服务器已启动,并记录其IP地址或主机名,在Linux使用`ifconfig`命令查询虚拟机IP(也可以使用`ip a`命令),找不到命令 `ifconfig`,但可以通过以下命令安装它:
-
-```sh
-sudo apt install net-tools
-```
-
-查看IP:
-
-
-
-
-2. 在 Ubuntu 上启用 SSH,打开终端,并且安装openssh-server软件包
-
-```sh
-sudo apt install openssh-server
-```
-
-一旦安装完成之后,SSH 服务将会被自动启动。可以s输入下面的命令验证 SSH 是否正在运行:
-
-```sh
-sudo systemctl status ssh
-```
-
-如果防火墙被启用,还需要下面的命令打开了 SSH 端口
-
-```sh
-sudo ufw allow ssh
-```
-
-3. 在Windows的CMD进行测试连接,ssh 用户名@服务器IP地址
-
-
-
- 这一步可能需要在Windows上安装OpenSSH客户端(默认Windows 10及以上版本自带)
-### 3.2 安装Remote - SSH插件
-
-打开VS Code,点击左侧的扩展市场图标,搜索`Remote - SSH`插件并安装。
-
-
-
-
-### 3.3 通过Remote - SSH连接到Linux服务器
-
-1. 打开VS Code,按下`Ctrl+Shift+P`,输入`Remote-SSH: Add New SSH Host`并选择该项。
-2. 输入SSH连接命令,例如:
- ssh 用户名@服务器IP地址
- 然后选择一个保存SSH配置的路径(默认路径是`~/.ssh/config`)。
-
-### 3.4 在VS Code中打开ESP-IDF工程
-
-1. 使用VS Code的`File -> Open Folder`功能,选择Linux服务器中的ESP-IDF项目目录:
- 例如: `~/esp/esp-idf/examples/get-started/hello_world`
-2. 打开项目后,VS Code会加载远程的文件结构。
-
-### 3.5 配置密钥,实现免密连接
-
-1. 在Windows下使用`ssh-keygen`生成密钥,按提示操作:
- 默认保存路径是 ~/.ssh/id_rsa(直接按回车即可)。可为密钥设置密码,如果不想设置,直接回车跳过。生成完成后,会在默认路径下生成:
- - 公钥:~/.ssh/id_rsa.pub
- - 私钥:~/.ssh/id_rsa
-2. 将公钥复制到远程服务器
- 在本地机器上,找到你的公钥文件(通常在 ~/.ssh/id_rsa.pub)并查看内容,进行复制。
- 使用 SSH 登录到远程服务器,创建 .ssh 目录并设置权限
-
-``` sh
-mkdir -p ~/.ssh
-chmod 700 ~/.ssh
-```
-
- 添加公钥到 authorized_keys 文件,编辑 ~/.ssh/authorized_keys 文件,将复制的公钥粘贴到文件中并保存.
-
-``` sh
-nano ~/.ssh/authorized_keys
-```
-
-最后,设置 authorized_keys 文件的权限:
-
-``` sh
-chmod 600 ~/.ssh/authorized_keys
-```
-
-### 3.6 编译和调试项目
-
-1. 在终端窗口中,运行以下命令以编译项目:
- ` idf.py build`
-
-2. 如果需要烧录代码到开发板,确保开发板通过USB连接到Linux服务器,然后运行以下命令:
- `idf.py -p /dev/ttyUSB0 flash`
- (根据实际情况替换正确的串口设备路径。)
-
-3. 编译和烧录完成后,可以通过以下命令监控串口输出:
- ` idf.py -p /dev/ttyUSB0 monitor`
-
-
-## 参考链接
-
-1. https://www.bilibili.com/video/BV1J14y1n7Ve/?spm_id_from=333.337.search-card.all.click&vd_source=ef5a0ab0106372751602034cdd9ab98e
-2. https://blog.csdn.net/ZRongZH/article/details/129237476
-3. https://www.bilibili.com/video/BV1Mv4y1U7x9/?spm_id_from=333.999.0.0&vd_source=ef5a0ab0106372751602034cdd9ab98e
-
-
diff --git a/docs/02.ESP-IDF基础/2.1-ESP32工程结构/ESP-IDF的工程结构.md b/docs/02.ESP-IDF基础/2.1-ESP32工程结构/ESP-IDF的工程结构.md
index f8ee3c4..1cf1c94 100644
--- a/docs/02.ESP-IDF基础/2.1-ESP32工程结构/ESP-IDF的工程结构.md
+++ b/docs/02.ESP-IDF基础/2.1-ESP32工程结构/ESP-IDF的工程结构.md
@@ -2,7 +2,7 @@
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV1CfrzYcEkK
-> 对应示例代码:[sample_project](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/01/sample_project)
+> 对应示例代码:[sample_project](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/01/sample_project)
## 介绍
ESP-IDF 的项目工程与 Keil 的传统工程模式有显著不同。Keil 工程通常依赖于特定的项目文件格式(如 .uvprojx 或 .uvoptx),这些文件记录了项目的结构、配置和依赖,且需要通过 Keil 软件进行管理和编译。而 ESP-IDF 则采用更灵活的构建方式,ESP-IDF 的项目只是一个特定的文件夹,其中包含了构建可执行应用程序所需的全部文件和配置,以及其他支持型文件,例如分区表、数据/文件系统分区和引导程序。这些文件描述了项目的源码路径、依赖关系和编译选项,而不是依赖于 IDE 专属的配置格式。这样可以方便地在不同的开发环境中切换。
diff --git a/docs/02.ESP-IDF基础/2.2-ESP-IDF项目配置/ESP-IDF项目配置.md b/docs/02.ESP-IDF基础/2.2-ESP-IDF项目配置/ESP-IDF项目配置.md
index cd00ba3..cb866fe 100644
--- a/docs/02.ESP-IDF基础/2.2-ESP-IDF项目配置/ESP-IDF项目配置.md
+++ b/docs/02.ESP-IDF基础/2.2-ESP-IDF项目配置/ESP-IDF项目配置.md
@@ -2,7 +2,7 @@
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV15xwbeiEnD
-> 对应示例代码:[blink_menuconfig](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/02)
+> 对应示例代码:[blink_menuconfig](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/02)
关于项目配置部分的文档,可以参考:[ API 参考 » 项目配置](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.2/esp32/api-reference/kconfig.html)
diff --git a/docs/02.ESP-IDF基础/2.3-ESP-IDF自定义组件/ESP-IDF自定义组件.md b/docs/02.ESP-IDF基础/2.3-ESP-IDF自定义组件/ESP-IDF自定义组件.md
index 716e7e3..0270562 100644
--- a/docs/02.ESP-IDF基础/2.3-ESP-IDF自定义组件/ESP-IDF自定义组件.md
+++ b/docs/02.ESP-IDF基础/2.3-ESP-IDF自定义组件/ESP-IDF自定义组件.md
@@ -2,7 +2,7 @@
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV182ftYHEox
-> 对应示例代码:[blink_component](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/03/blink_component)
+> 对应示例代码:[blink_component](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/03/blink_component)
关于ESP-IDF自定义组件部分的文档,可以参考:[API 指南 » 构建系统](https://docs.espressif.com/projects/esp-idf/zh_CN/v5.3.2/esp32/api-guides/build-system.html?highlight=kconfig%20projbuild#component-configuration)
## 一 、自定义组件介绍:
@@ -35,7 +35,7 @@
## 二 、自定义组件示例:
-下面我们基于[ESP-IDF项目配置](../2.2-ESP-IDF项目配置/ESP-IDF项目配置.md)中编写的[blink_menuconfig](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/02/blink_menuconfig)工程来实现一个自定义的控制闪烁的组件。
+下面我们基于[ESP-IDF项目配置](../2.2-ESP-IDF项目配置/ESP-IDF项目配置.md)中编写的[blink_menuconfig](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/02/blink_menuconfig)工程来实现一个自定义的控制闪烁的组件。
复制工程,重命名为`blink_component`
diff --git a/docs/02.ESP-IDF基础/2.4-ESP-IDF组件管理器/ESP-IDF组件管理器.md b/docs/02.ESP-IDF基础/2.4-ESP-IDF组件管理器/ESP-IDF组件管理器.md
index 75db9fe..9464ef3 100644
--- a/docs/02.ESP-IDF基础/2.4-ESP-IDF组件管理器/ESP-IDF组件管理器.md
+++ b/docs/02.ESP-IDF基础/2.4-ESP-IDF组件管理器/ESP-IDF组件管理器.md
@@ -2,7 +2,7 @@
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV1etfHYgE6M
-> 对应示例代码:[button_blink](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/04/button_blink)
+> 对应示例代码:[button_blink](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/04/button_blink)
关于ESP-IDF组件管理器的文档,可以参考:[ API 指南 » 工具 » IDF 组件管理器](https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32/api-guides/tools/idf-component-manager.html)
## 一、啥是组件管理器
@@ -26,7 +26,7 @@ ESP-IDF官方对组件管理器的描述是这样的:
## 二、组件管理器使用示例:
-下面我们基于[ESP-IDF自定义组件](../2.3-ESP-IDF自定义组件/ESP-IDF自定义组件.md)教程中编写的[blink_component](https://github.com/DuRuofu/ESP32-Guide-Code/tree/master/02.idf_basic/03/blink_component)工程来实现使用一下官方的组件管理器,复制工程,重命名为`button_blink`
+下面我们基于[ESP-IDF自定义组件](../2.3-ESP-IDF自定义组件/ESP-IDF自定义组件.md)教程中编写的[blink_component](https://github.com/DuRuofu/ESP32-Guide/tree/main/code/02.idf_basic/03/blink_component)工程来实现使用一下官方的组件管理器,复制工程,重命名为`button_blink`
### 2.1 组件介绍
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/WEB服务程序.md b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/WEB服务程序.md
new file mode 100644
index 0000000..4fb3814
--- /dev/null
+++ b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/WEB服务程序.md
@@ -0,0 +1,376 @@
+# ESP32实现WEB服务程序(Vue3+element-plus)
+
+>[!INFO]
+>本文档基于官方[restful_server](https://github.com/espressif/esp-idf/tree/master/examples/protocols/http_server/restful_server)历程,官方历程基于老旧的 Vue2和vuetify2,本文我们进一步优化前端开发体验,将其替换为Vue3+element-plus,并记录配置过程中会遇到的一些问题。
+
+## 一、测试原始官方历程
+
+### 1.1 示例程序介绍
+
+首先我们尝试使用一下官方原有的示例程序[restful_server](https://github.com/espressif/esp-idf/tree/master/examples/protocols/http_server/restful_server),简单了解一下项目功能和文件结构:
+
+首先请自行下载官方示例程序,拷贝到自己存放项目的位置,项目目录如下:
+
+```
+.
+├── CMakeLists.txt
+├── front
+│ └── web-demo // 前端项目
+├── main
+│ ├── CMakeLists.txt
+│ ├── esp_rest_main.c
+│ ├── idf_component.yml
+│ ├── Kconfig.projbuild
+│ └── rest_server.c
+├── partitions_example.csv
+├── README.md
+├── sdkconfig.defaults
+└── sdkconfig.defaults.esp32p4
+```
+
+我们本节的目标就是将`web-demo` 部分的技术栈更新为Vue3+element-plus,接下来我们开始尝试编译官方项目:
+
+### 1.2 编译并烧录示例项目
+
+使用命令设备目标芯片,我这里使用ESP32S3:
+
+```sh
+idf.py set-target esp32s3
+```
+
+然后使用`idf.py menuconfig`命令对项目进行基本的配置:
+
+首先修改要连接的WIFI名和密码:
+
+
+
+然后修改文件系统挂载到flash里:
+
+
+
+修改完成后使用`idf.py build`编译项目,会有如下报错信息:
+
+
+
+提示我们找不到`···/front/web-demo/dist`这个目录,这个目录是构建完成的网页文件,在main组件的CMakeLists.txt文件里可以看到:
+
+
+
+后面这个`if`块里的代码是用于在构建ESP32项目时,将Web前端资源(构建后的静态文件)部署到ESP32的SPIFFS文件系统中。确保Web前端资源已经构建好(即存在dist目录),并将它们正确打包到设备上。如果Web资源没有构建,脚本会停止构建并给出错误提示。
+
+下面我们先去构建(编译)Web资源,构建Web需要使用Node.js环境,我们先安装一下:
+
+安装Node.js推荐使用[NVM],NVM 是 node.js 的版本管理器,方便我们使用多个版本的Node。使用下面的命令安装NVM:
+
+```bash
+curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
+```
+
+输入`nvm`验证,可以看到NVM已经安装好了(需要新打开一个终端):
+
+
+
+使用`nvm install 14.7.0`命令安装`V14.7.0`版本的Ndoe.js(示例工程的前端项目较为老旧,这里使用低版本的Node):
+
+
+
+进入前端项目文件夹,使用`npm i`命令下载依赖:
+
+
+
+可以看到,示例里的前端项目实在是太老旧了,所依赖的大部分库的对应版本已经停止支持了。下载完成后使用`npm run build`构建项目:
+
+
+
+运行完成后,前端目录下就会多出我们需要的dist文件夹。
+
+回到项目根目录,使用命令`$ idf.py -p PORT build flash monitor` 编译烧录代码,这里的`PORT`是开发板对应的端口,烧录成功,ESP32连接到WiFi之后,会打印出自己的IP地址:
+
+
+
+
+访问即可看到前端页面:
+
+
+### 1.3 示例项目代码分析
+
+暂无
+
+## 二、使用Vue3构建新前端
+
+### 2.1 新建Vue3项目并测试
+
+>[!WARING] 注意:
+>Vue3需要使用 18.3 或更高版本的 Node.js,可以直接使用`nvm install node `安装最新版
+
+在`front`目录下新建一个Vue3项目,可以参考Vue3官方文档:[创建一个 Vue 应用](https://cn.vuejs.org/guide/quick-start.html)
+
+创建项目:`pnpm create vue@latest`,对应的选项可以按照个人习惯进行选择:
+
+
+
+进入到新建的Vue3项目文件夹里,使用`pnpm install`下载依赖,然后使用`pnpm dev`预览项目
+
+
+
+预览效果如下:
+
+
+
+然后还是先编译工程,烧录到开发板进行测试,使用`pnpm run build`构建前端项目:
+
+
+
+然后修改main组件下的CMakeLists.txt文件,替换前端目录为新的`vue3-demo`:
+
+
+
+编译烧录代码,再在浏览器输入ESP32的IP地址(注意要在同一局域网),可以看到新网页已经成功被ESP32托管:
+
+
+
+
+### 2.2 Vue3项目添加必要功能
+
+
+#### 1. 引入Element Plus UI库
+
+Element Plus是一款非常优秀的基于Vue3的UI库,在Vue项目开发中使用非常广泛。
+
+安装Element Plus,执行:
+
+```c
+pnpm add element-plus
+```
+
+##### 全局引入:
+
+引入Element Plus,修改`·······vue3-demo/src/renderer/main.ts`:
+
+``` ts
+// import './assets/main.css'
+
+import { createApp } from 'vue'
+import App from './App.vue'
+import router from './router'
+
+// 引入element-plus
+import ElementPlus from 'element-plus'
+import 'element-plus/dist/index.css'
+
+const app = createApp(App)
+
+app.use(router)
+app.use(ElementPlus)
+app.mount('#app')
+
+```
+
+然后修改src/renderer/App.vue来验证下Element Plus:
+
+```c
+
+
+ Electron-Vite-Vue-App
+ Primary
+
+
+
+
+
+
+
+```
+
+效果:
+
+
+
+可以看到Element Plus的el-button组件正常显示出来了,之后我们就可以正常使用Element Plus来编写页面了
+##### 按需引入:
+
+全局引入Element Plus,进行项目构建时,会默认把所有的组件打包进去,导致文件体积比较大,如下:
+
+
+
+这对于嵌入式项目是不能容忍的,所以我们要考虑使用按需引入组件的方式:
+
+需要安装按需引入插件:
+
+```sh
+npm install -D unplugin-vue-components unplugin-auto-import
+```
+
+然后`vite.config.ts`文件中配置:
+
+```ts
+// vite.config.ts
+import { defineConfig } from 'vite'
+import AutoImport from 'unplugin-auto-import/vite'
+import Components from 'unplugin-vue-components/vite'
+import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
+
+export default defineConfig({
+ // ...
+ plugins: [
+ // ...
+ AutoImport({
+ resolvers: [ElementPlusResolver()],
+ }),
+ Components({
+ resolvers: [ElementPlusResolver()],
+ }),
+ ],
+})
+```
+
+然后去除App.vue里的全局引入,接着预览工程:
+
+
+
+
+会发现`ElMessageBox`组件的样式丢失了,针对这样的情况,我们需要手动在main.ts里引入一下样式:
+
+```ts
+// 手动引入element-plus的css文件
+import "element-plus/theme-chalk/el-message-box.css";
+```
+
+缺失什么样式就补什么样式文件,效果:
+
+
+
+在次构建代码:
+
+
+
+可以看到编译产物小了很多。
+#### 2.引入Axios与ESP32通信
+
+Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js。Axios 使用简单,包尺寸小且提供了易于扩展的接口。
+
+安装:`pnpm i axios `
+
+使用:我们在App.vue里简单调用一下Axios来与ESP32通信
+
+ESP32的程序里提供了三个可供访问的路径,这里我们简单测试访问一下`/api/v1/system/info`:
+
+```vue
+// App.veu
+
+
+
version
+
{{ version }}
+
Primary
+
+
+
+
+
+
+
+```
+
+还需要 `vite.config.ts`在里添加服务代理配置:
+
+```ts
+export default defineConfig({
+ ·········
+ server: {
+ cors: true,
+ proxy: {
+ '/api': {
+ target: 'http://192.168.167.206:80',
+ //target: 'http://esp-home.local:80',
+ changeOrigin: true,
+ ws: true
+ }
+ }
+ },
+})
+```
+
+这里的IP地址需要替换为ESP32实际的IP地址,然后测试:
+
+
+
+可以成功获取ESP-IDF版本,实现前后端通信。
+
+这里需要注意,实际使用时,随着ESP32连接网络的变化,IP也会产生变化。如果在`vite.config.ts`里写死IP,当ESP32的IP产生变化时,网页通讯就失效了。
+
+这里可以参考官方方案:
+
+>The IP address of an IoT device may vary from time to time, so it’s impracticable to hard code the IP address in the webpage. In this example, we use the to parse the domain name , so that we can always get access to the web server by this URL no matter what the real IP address behind it. See [here](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/protocols/mdns.html) for more information about mDNS.mDNSesp-home.local
+
+
+我们在最终网页完工时,可以将 `vite.config.ts`里的服务代理配置修改为
+
+```ts
+export default defineConfig({
+ ·········
+ server: {
+ cors: true,
+ proxy: {
+ '/api': {
+ target: 'http://esp-home.local:80',
+ changeOrigin: true,
+ ws: true
+ }
+ }
+ },
+})
+```
+
+这里的`esp-home`这个名称是我们在ESP32程序里配置的:
+
+
+
+支持我们就基本完成了一个新的前端项目的构建。
+
+下面的链接是本文对应提供的参考项目:
+
+## 参考:
+
+1. [Ubuntu使用nvm安装node提示Permission denied的解决办法](https://blog.csdn.net/weixin_43510308/article/details/145033467)
+2. [Element Plus组件与图标按需导入方法](https://juejin.cn/post/7429623021113442330?searchId=20250131180554D8A47B9289CBC0F9321E)
+
+
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217122534.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217122534.png
new file mode 100644
index 0000000..e0918d0
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217122534.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217122716.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217122716.png
new file mode 100644
index 0000000..9491153
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217122716.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217122938.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217122938.png
new file mode 100644
index 0000000..b091970
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217122938.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217123107.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217123107.png
new file mode 100644
index 0000000..6601529
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217123107.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217141810.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217141810.png
new file mode 100644
index 0000000..2d4eb7e
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217141810.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217143229.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217143229.png
new file mode 100644
index 0000000..1b57b7b
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217143229.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217143457.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217143457.png
new file mode 100644
index 0000000..ffa0cb4
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217143457.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217144019.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217144019.png
new file mode 100644
index 0000000..323c051
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217144019.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217144932.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217144932.png
new file mode 100644
index 0000000..e6de0e3
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217144932.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217145056.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217145056.png
new file mode 100644
index 0000000..f9847c7
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217145056.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217150925.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217150925.png
new file mode 100644
index 0000000..1a40fff
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217150925.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151221.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151221.png
new file mode 100644
index 0000000..aa99bf6
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151221.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151308.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151308.png
new file mode 100644
index 0000000..8101693
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151308.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151541.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151541.png
new file mode 100644
index 0000000..4fb2d77
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151541.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151713.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151713.png
new file mode 100644
index 0000000..a0a87f9
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151713.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151927.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151927.png
new file mode 100644
index 0000000..b35a2bf
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217151927.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217160729.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217160729.png
new file mode 100644
index 0000000..693924c
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217160729.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217161323.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217161323.png
new file mode 100644
index 0000000..3c3738f
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217161323.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217162118.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217162118.png
new file mode 100644
index 0000000..e371599
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217162118.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217162602.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217162602.png
new file mode 100644
index 0000000..4c4a32d
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217162602.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217162724.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217162724.png
new file mode 100644
index 0000000..ad67fa2
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217162724.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217163420.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217163420.png
new file mode 100644
index 0000000..04bc365
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217163420.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217164840.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217164840.png
new file mode 100644
index 0000000..f77b1cb
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217164840.png differ
diff --git a/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217165632.png b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217165632.png
new file mode 100644
index 0000000..d24ffd6
Binary files /dev/null and b/docs/09.其他实用内容/WEB服务程序(Vue3+element-plus)/attachments/Pasted image 20250217165632.png differ