docs: 添加文档

This commit is contained in:
DuRuofu
2025-02-17 17:44:04 +08:00
parent 9e552ea395
commit b1ff060c68
36 changed files with 885 additions and 472 deletions
+64 -50
View File
@@ -1,9 +1,12 @@
# ESP32从初见到入门(ESP32-Guide)
![](attachments/20250202192226.png)
## 许可协议:
本仓库中的文本、代码、图片和视频均采用知识共享署名-非商业性使用-相同方式共享 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软件定时器教程 | ✔ | | | |
<div STYLE="page-break-after: always;"></div>
@@ -89,8 +89,12 @@
![](attachments/最小系统开发板.png)
至于LVGL,特殊外设,实战演练部分,会在教程章节单独推荐开发板。
如果想进一步节省学习成本,还可以使用这种9.9元的ESP32-C3开发板(淘宝搜下面的图):
![](attachments/esp-c3开发板.png)
至于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/).
@@ -1,5 +1,8 @@
# 常见问题与解决
>[!INFO]
>这里也推荐大家参考:[ESP-FAQ](https://docs.espressif.com/projects/esp-faq/zh_CN/latest/index.html) 是由乐鑫官方推出的针对常见问题的总结。在线帮助我们的用户快速检索经常问到的问题,通过简单的解释获得解答。目前常见问题的种类涵盖:开发环境、应用方案、软件平台、硬件相关和测试测试。
## 索引
[[toc]]
@@ -0,0 +1,160 @@
# ESP32开发环境搭建—Windows系统
> [!NOTE]
> 本文介绍在Windows系统下安装ESP-IDF开发环境,并且推荐使用VS Code插件直接安装<br/>
> 对应视频教程-1:https://www.bilibili.com/video/BV14o62YQEBC <br/>
## 一、使用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插件
![](attachments/20241230173816.png)
### 1.2 配置插件:安装ESP-IDF
按Ctrl+Shift+P打开命令行,输入`Configure ESP-IDF Extension`
![](attachments/20241230174252.png)
选择`ESP-IDF: Configure ESP-IDF Extension`这一项来配置插件,选择后页面如下图所示:
![](attachments/20241230174358.png)
这里我们选择Express快速安装。
![](attachments/20241230180528.png)
第一项为下载服务器选项,推荐使用 Espressif 下载服务器。
第二项为ESP-IDF版本,建议选择V开头的正式发布板,本教程使用V5.2.3版本。
第三项ESP-IDF源码位置,请选择不带空格的路径,且对应文件夹需要为空。
第四项ESP-IDF 工具 位置,要求同上,**但不能与第三项相同**!
这里我们选择在D盘根目录下新建`Espressif`文件夹。
然后点击安装即可,如下图所示:
![](attachments/20241230175629.png)
等待十几分钟即可安装完成(网络差可能会久一点),安装完成后如下图所示:
![](attachments/20241230184622.png)
至此开发环境安装完成,我们可以打开一个示例工程编译,验证安装是否完成。
### 1.3 测试开发环境可用
点击shown examples 选择刚才下载的IDF版本
![](attachments/20241230185003.png)
随便选择一个示例工程,这里以blink工程为例:
![](attachments/20241230184954.png)
点击新建示例项目,选择一个存储位置:
![](attachments/20241230185234.png)
VS Code会自动打开项目目录,如下:
![](attachments/20241230185528.png)
点击扳手图标构建项目:
![](attachments/20241230185634.png)
编译停止后,命令行显示下列内容,则开发环境安装无误。至此ESP32的开发环境就准备完毕了。
![](attachments/20241230190036.png)
至于进一步烧录代码至开发板,将在下一节介绍。
## 二、 手动安装
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
![](attachments/20241230181401.png)
选择自己需要的版本,这里以V5.2.3版本为例(后续教程也使用该版本)
![](attachments/20241230181701.png)
### 2.2 安装ESP-IDF
下载完成后打开esp-idf-tools-setup-offline-x.x.x.exe程序即可开始安装
![](attachments/20241230195856.png)
选择安装路径:
![](attachments/20241230195935.png)
选择需要的组件和驱动程序(建议全选):
![](attachments/20241230200003.png)
等待安装完成即可,安装完成如下图:
![](attachments/20241230200620.png)
### 2.3 测试开发环境可用
下面编译一个示例工程,以确保ESP-IDF可以正常工作,示例代码位于`安装目录\frameworks\esp-idf-v5.2.3\examples`,如下图:
![](attachments/20241230201034.png)
复制`examples/get-started`下的`blink`点灯工程到桌面(或其他位置),在安装完成后弹出的命令行中切换到`blink`目录,并运行`idf.py build`命令:
![](attachments/20241230201518.png)
运行后编译完成输出如下,则开发环境安装无误,至此ESP32的开发环境就准备完毕了。
![](attachments/20241230202342.png)
### 2.4 配置VS Code插件
**但如果要使用VS Code插件功能,还需要继续下面的步骤(可选,不使用插件进行开发也完全没有问题):**
依然是安装VS Code,并安装ESP-IDF插件
![](attachments/20241230173816.png)
按Ctrl+Shift+P打开命令行,输入`Configure ESP-IDF Extension`
![](attachments/20241230174252.png)
选择`ESP-IDF: Configure ESP-IDF Extension`这一项来配置插件,选择后页面如下图所示:
![](attachments/20241230174358.png)
这里我们选择第三个选项,使用现有设置,设置`Enter ESP-IDF directory (IDF_PATH)`为安装根目录下的`frameworks\esp-idf-v5.2.3`目录,设置`Enter ESP-IDF Tools directory (IDF_TOOLS_PATH)`为安装根目录,如下图(本教程中安装根目录为`c:\Espressif\V523`)
![](attachments/20241230203618.png)
点击安装,等待十几分钟安装完成即可,要注意的是虽然是离线安装,但这个步骤依赖网络下载python环境相关的工具,容易失败(失败很大可能是网络引起的,不妨换个网络环境重新尝试😂)
![](attachments/20241230203707.png)
安装成功显示如下:
![](attachments/20241230204358.png)
## 参考链接
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
@@ -0,0 +1,150 @@
# 二、ESP32开发环境搭建—Linux系统
> [!NOTE]
> 本节介绍在Linux系统下搭建ESP-IDF开发环境,以获得更高的编译速度。<br/>
> 对应视频教程: https://www.bilibili.com/video/BV1vLrKYHExy <br/>
## 一、使用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`版本。
![](attachments/20240125114613.png)
### 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 ,如下:
![](attachments/20240125120321.png)
找到: `Download an archive with submodules included `一项
![](attachments/20240125120428.png)
下载并解压到 ~/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下载失败的问题:
![](attachments/20240125161324.png)
需要修改镜像源:
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
```
写入配置文件:
![](attachments/20240125164001.png)
我这里安装了两个版本,于是写两条命令
![](attachments/20240125164248.png)
要立即启用修改后的 .bashrc 文件,无需重启终端,只需要使用以下命令加载 .bashrc 文件:
```sh
source ~/.bashrc
```
### 2.6 测试编译
打开历程目录下的hello_world程序:
![](attachments/20240125165114.png)
使用`idf.py build `命令编译代码,显示下面的内容则编译成功
![](attachments/20240125165709.png)
至此Linux下开发环境安装完成。
```
# get_idf_env
alias idf53='. $HOME/esp/v532/esp-idf/export.sh'
```
@@ -0,0 +1,120 @@
# 三、ESP32开发环境搭建—Windows与虚拟机组合使用(进阶)
> [!NOTE]
> 本节主要介绍教程:[环境搭建-Windows](1.环境搭建-Windows.md)和 [环境搭建-Ubuntu虚拟机](2.环境搭建-Ubuntu虚拟机.md)组合使用的情况,属于一种进阶的用法,故文档会比较简略,推荐参考视频教程<br/>
> 对应视频教程:https://www.bilibili.com/video/BV1s2rGYsE4V <br/>
## 一、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:
![](attachments/20250105213409.png)
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地址
![](attachments/20250105213305.png)
这一步可能需要在Windows上安装OpenSSH客户端(默认Windows 10及以上版本自带)
### 2.2 安装Remote - SSH插件
打开VS Code,点击左侧的扩展市场图标,搜索`Remote - SSH`插件并安装。
![](attachments/20250104234434.png)
### 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`
@@ -0,0 +1,6 @@
# 三、ESP32开发环境搭建—WSL(进阶且推荐)
> [!NOTE]
> 本节主要介绍在WSL2环境下安装ESP-IDF开发环境,也是笔者比较推荐的开发环境。<br/>
> 对应视频教程:
File diff suppressed because it is too large Load Diff
@@ -2,7 +2,7 @@
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV1CfrzYcEkK <br/>
> 对应示例代码:[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 专属的配置格式。这样可以方便地在不同的开发环境中切换。
@@ -2,7 +2,7 @@
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV15xwbeiEnD <br>
> 对应示例代码:[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)
@@ -2,7 +2,7 @@
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV182ftYHEox <br>
> 对应示例代码:[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`
@@ -2,7 +2,7 @@
> [!NOTE]
> 对应视频教程:https://www.bilibili.com/video/BV1etfHYgE6M <br>
> 对应示例代码:[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 组件介绍
Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB