2025-02-25 23:37:16 +08:00
2025-02-16 09:22:48 +08:00
2025-02-25 23:37:16 +08:00
2025-02-23 11:12:52 +08:00
2025-01-24 16:17:08 +08:00
2025-02-23 11:12:52 +08:00

ESP32从初见到入门ESP32-Guide

许可协议:

本仓库中的文本、代码、图片和视频均采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议— CC BY-NC-SA 4.0

前言:

本教程基于ESP-IDF-V5.3.2旨在记录并分享个人学习ESP32过程中的经验和心得以帮助其他初学者快速上手ESP32开发。这是一份从初学者视角出发整理了学习ESP32的一条较为合理的路径和方法的笔记汇编。

文档内容基于对大量优质ESP32教程、官方文档以及实际项目实践的总结和理解力求做到内容清晰、条理分明既注重基础知识的巩固也兼顾实战技能的提升。希望通过本教程读者能少走弯路从初学到实战开发逐步掌握ESP32的开发技能。

文档内容从基础到进阶,适合循序渐进地学习。如果您是初学者,可以按照章节顺序逐步学习;如果您已有一定的开发经验,可以直接跳转到感兴趣的部分阅读。同时,鼓励读者在学习过程中动手实践,以便更好地理解相关知识点。

此外,文档配有对应的视频教程,可前往B站点击跳转浏览。

初衷:

  1. 一方面本人在从零开始学习ESP32的过程中曾经走过很多弯路踩过很多坑现在回过头来觉得有更适合初学者学习的路径故推荐给大家希望后来人不要走了弯路。
  2. 另一方面我始终认为学习嵌入式学习ESP32的秘诀是以实践促学习也就是我们常说的费曼学习法—以输出倒逼输入。不要想着等我学会ESP32我就可以做什么不妨换个思路想想我现在需要做什么做的这个东西需要用到ESP32的什么功能然后点对点的去学习某个部分这样学习完后可以立马投入使用加深记忆。这份教程本身也算是我个人践行费曼学习法的实践过程。

目录:

本教程共八个章节三个阶段基础1-3实践4进阶5-10

其中基础章节一定要确保自己掌握,实践和进阶部分推荐按照个人需求进行选学。

修订历史:

文档名称 版本 作者 时间 备注
ESP32学习计划 v1.0.0 DuRuofu 2023-08-28 首次建立
ESP32学习计划 v1.0.1 DuRuofu 2023-09-2 补充
ESP32学习计划 v1.1.0 DuRuofu 2023-09-13 补充
ESP32学习计划 v1.2.0 DuRuofu 2024-01 补充环境搭建
ESP32学习计划 v1.3.0 DuRuofu 2024-02 补充IDF基础
ESP32学习计划 v1.4.0 DuRuofu 2024-03 补充外设学习
ESP32学习计划 v1.4.0 DuRuofu 2024-04 补充WIFI部分
ESP32从初见到入门一稿 v1.5.0 DuRuofu 2024-12-26 整理汇总,重新编排

当前进度:

章节 小节内容 📄文字教程 📺视频教程 💾配套代码 完成日期
一、认识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软件定时器教程

相关硬件及开发板:

学习ESP32离不开一块趁手的开发板笔者认为初学者学习ESP32的重点不在于一块全能的开发板重点在于立刻开始学习很多复杂的外设在初学时是用不到的。所以上手阶段推荐使用市面上常见的ESP32最小系统板价格一般在20元左右足够学习本教程除LVGL特殊外设实战演练以外的部分。

此外由于WiFi蓝牙章节涉及到板间通信需要使用两块开发板所以推荐读者准备两块ESP32最小系统板。

遵循以上原则本教程大部分章节均使用下图所示的开发板主控型号为ESP32-WROOM-32

如果想进一步节省学习成本还可以使用这种9.9元的ESP32-C3开发板淘宝搜下面的图

至于LVGL特殊外设实战演练部分会在教程章节单独推荐开发板或外设模块。

〇、常见问题及解决方案:

本部分记录搭建环境和开发过程中常见的问题和解决方案,都是本人在开发过程中遇到的,作为经验积累,分享给大家。

常见问题及解决方案:常见问题及解决方案.md

一、认识ESP32 【完结】

目标学会安装ESP-IDF开发环境并使用其烧录代码掌握ESP32的基本特点及工具使用。

1.1 什么是ESP32

本节主要介绍ESP32的基本概念包括其硬件特点、应用场景及功能优势。通过本节内容初学者可以快速了解ESP32的核心能力以及在物联网开发中的广泛应用。

1.2 ESP32开发环境搭建

本节将详细讲解如何在不同操作系统Windows/Linux/Mac上搭建ESP-IDF开发环境涵盖工具链安装、环境变量配置及调试工具的准备等内容。通过本节读者可以完成开发环境的搭建为后续开发做好准备。

1.3 初试ESP32-IDF.py的基本使用

本节通过“Hello World”示例代码指导读者创建第一个ESP32工程并完成编译、烧录及运行调试流程。通过本节内容初学者可以初步体验ESP-IDF的开发流程快速进入ESP32开发的世界。


二、IDF基础与工具使用 【完结】

目标熟悉ESP-IDF的架构与开发流程掌握常用开发工具及调试方法建立高效开发基础。

2.1 ESP32工程结构

本节详细介绍ESP-IDF项目的基本目录结构包括CMake工具的基础知识帮助读者掌握ESP32工程的整体组织方式为日后开发复杂项目奠定基础。

2.2 ESP-IDF项目配置

本节将重点讲解如何使用menuconfig工具配置项目包含常见的配置选项及其实际用途。通过本节学习读者可以根据项目需求快速定制和优化ESP32项目配置。

2.3 ESP-IDF自定义组件

本节讲解如何创建和管理ESP-IDF的自定义组件包括组件的目录结构、声明与调用方法以及组件的复用和共享技巧帮助读者构建模块化项目。

2.4 ESP-IDF组件管理器

本节重点介绍ESP-IDF组件管理器的功能与使用方法涵盖如何通过组件管理器导入外部库、配置组件依赖使用官方提供的外部组件。


三、FreeRTOS基础更新中

目标学习FreeRTOS的核心概念与基本功能掌握任务管理与调度机制为实时系统开发打下基础。

3.1 FreeRTOS介绍与引入

本节将介绍FreeRTOS的核心概念包括实时操作系统的特点、FreeRTOS的基本架构和设计思想以及其在嵌入式开发中的应用场景帮助读者快速了解FreeRTOS的基础知识。

3.2 FreeRTOS多任务与任务管理

本节讲解FreeRTOS中的多任务机制及任务管理方法包括任务创建、任务删除、任务优先级和任务状态的管理。通过本节学习读者可以初步掌握在FreeRTOS中实现并发任务的基本技巧。

3.3 FreeRTOS任务看门狗

本节讲解 FreeRTOS 中任务看门狗机制的原理包括如何监控任务执行状态、检测任务卡死以及触发系统恢复等功能。通过学习任务看门狗,读者可以掌握提高系统可靠性的重要技巧,确保任务能够在异常情况下得到及时处理。

3.4 FreeRTOS软件定时器 (Software Timer)

通过软件定时器实现定时触发任务逻辑,学习其管理及高级用法。


四、外设学习 (更新中)

目标掌握ESP32常用外设的基本操作方法学会与硬件交互并控制外设设备。

4.1 基础外设

4.1.1 GPIO

本节介绍GPIO通用输入输出的基本功能包括输入、输出及中断操作。通过实际案例学习如何控制外部设备并响应硬件信号。

4.1.2 UART

本节讲解UART串口通信的原理及在ESP32中的实现内容涵盖UART初始化、数据收发及常见调试方法。

4.1.3 定时器

本节内容包括ESP32硬件定时器的初始化、配置及应用通过案例学习如何实现精确的时间控制与定时任务。

4.1.4 ADC模数转换

本节讲解ESP32的ADC模块包括采样的基本配置与信号转换并通过示例学习如何读取模拟信号。

4.1.5 DAC数模转换

本节讲解DAC模块的基本操作学习如何将数字信号转换为模拟信号输出。

4.1.6 LED PWM

本节介绍LED PWM脉宽调制的原理及操作方法通过实际案例学习如何控制LED亮度。

4.1.7 I2C

本节讲解I2C通信协议及在ESP32中的实现内容涵盖设备寻址、数据收发及实际应用。

4.1.8 SPI

本节介绍SPI通信协议及其在ESP32中的使用学习如何通过SPI与外部设备通信。

4.1.9 I2S

本节介绍I2S通信协议及其在ESP32中的使用学习如何通过I2S与外部设备通信。

4.2 存储外设

4.2.1 分区表设计

本节讲解ESP32的分区表结构及设计方法学习如何规划存储空间以满足不同开发需求。

4.2.2 非易失性存储NVS

本节介绍NVS的使用方法学习如何在ESP32中存储和读取持久化数据。

4.2.3 FAT文件系统

本节讲解FAT文件系统的基本操作学习如何在ESP32中管理文件及目录。

4.2.4 SPIFFS文件系统

本节介绍SPIFFS文件系统的基本操作学习如何在ESP32中使用轻量级文件系统进行数据存储与读取。

4.2.5 ESP32存储-SD、SDIO、MMC 驱动

本节介绍ESP32存储-SD、SDIO、MMC 驱动的基本操作.

4.3 其他外设


五、FreeRTOS进阶 (更新中)

目标学习FreeRTOS任务间通信与系统优化技术为后续高级外设的使用打下基础。

5.1 队列 (Queue)

学习FreeRTOS中队列的基本概念及用法掌握如何在任务之间传递数据并理解阻塞与优先级特性。

5.2 信号量 (Semaphore) 和互斥量 (Mutex)

理解信号量的分类(计数信号量与二值信号量),学习如何通过信号量实现任务同步及资源管理。

5.3 互斥量 (Mutex)

掌握互斥量的作用及优先级反转问题,学习如何保护共享资源以避免竞争条件。

5.4 事件组 (Event Group)

学习如何通过事件组实现复杂的任务同步逻辑及事件管理。

5.5 任务通知 (Task Notifications)

了解任务通知的特点,掌握其在任务间高效通信中的实际应用。


六、Wi-Fi功能与相关协议 (更新中)

目标学会使用ESP32的Wi-Fi功能实现无线网络连接及常见通信协议的应用开发。

6.1 Wi-Fi功能基础

6.1.1 Wi-Fi模式与介绍

本节介绍ESP32的Wi-Fi模式包括STA模式和AP模式以及如何进行基本的Wi-Fi操作如连接网络和设置路由器等。

6.1.2 Wi-Fi STA与AP配置

本节介绍如何在ESP32中配置Wi-Fi STAStation和APAccess Point模式帮助用户快速实现设备与路由器或其他设备的连接。

6.2 网络协议应用

6.2.1 TCP协议

本节讲解TCP协议的原理及在ESP32中的实现包含连接、数据传输及断开连接的操作步骤。

6.2.2 UDP协议

本节介绍UDP协议的工作原理及在ESP32上的应用包含数据发送与接收的实现方法。

6.2.3 HTTP协议

本节介绍ESP32如何实现HTTP协议包括创建HTTP客户端和服务器的步骤以及常见的应用场景。

6.2.4 WebSocket协议

本节讲解WebSocket协议在ESP32中的应用如何通过WebSocket实现实时双向通信。

6.2.5 MQTT协议

本节介绍ESP32如何实现MQTT协议包括客户端连接、订阅和发布消息的基本操作。

6.2.6 ESP-NOW协议

本节介绍ESP32的ESP-NOW协议讲解其在无需Wi-Fi路由器的情况下实现设备间直接通信的应用场景。

6.2.7 SNTP校时

本节介绍使用SNTP从网络获取准确时间。


七、蓝牙功能与相关协议 (更新中)

目标掌握ESP32蓝牙功能的配置与使用实现蓝牙低功耗和经典蓝牙的通信功能。

7.1 蓝牙功能基础

  • BLE与经典蓝牙的区别
  • 蓝牙开发环境配置

7.2 BLE开发

  • BLE广播与扫描
  • BLE连接与数据传输

7.3 经典蓝牙开发

  • SPP协议基础
  • 经典蓝牙数据传输

八、图形界面开发 (更新中)

目标学习LVGL图形库的基础知识掌握图形界面开发的核心方法设计简单的GUI界面。

8.1 LVGL基础

  • LVGL环境搭建
  • LVGL的基本架构

8.2 常用组件与布局

  • 常用控件的使用(按钮、标签等)
  • 布局系统与屏幕适配

8.3 图形界面项目开发

  • 动态界面更新
  • 图形界面优化技巧

九、其他实用内容

补充一些综合性性案例,与实用功能,为前八章做补充。

9.1 Wi-Fi配网技术

9.1.1 Blufi配网

9.1.2 Smartconfig配网

9.1.3 SoftAP配网

  • 📄在线文字教程:SoftAP配网.md
  • 📺在线视频教程:🚧 开发中
  • 💾教程配套代码:🚧 开发中

9.2 Web服务程序(Vue3+element-plus)

9.3 OTA功能

  • 📄在线文字教程:ESP32-OTA初探.md
  • 📺在线视频教程:🚧 开发中
  • 💾教程配套代码:🚧 开发中

十、项目实战

目标通过综合项目实践整合所学知识独立开发基于ESP32的完整应用提升实战能力。

参考链接

Description
ESP32入门教程,ESP32从初见到入门
Readme CC-BY-SA-4.0 37 MiB
Languages
C 90.2%
CMake 5.3%
Vue 2.7%
Python 0.4%
CSS 0.4%
Other 1%