ESP32学习路线

本文最后更新于:3 分钟前

说明:

  1. 本文档由DuRuofu撰写,由DuRuofu负责解释及执行。
  2. 本文档记录ESP32学习过程中的相关笔记。

修订历史:

文档名称 版本 作者 时间 备注
ESP32学习计划 v1.0.0 DuRuofu 2023-08-28 首次建立
ESP32学习计划 v1.0.1 DuRuofu 2023-09-2 补充
ESP32学习计划 v1.1.0 DuRuofu 2023-09-13 补充

一、认知阶段📌

目标:学会安装esp-idf开发环境,并使用其烧录代码,学会工具使用。

1. 1 准备开发环境

安装 esp-idf 开发环境,并进行设置。

参考:

基础搭建:ESP-IDF环境搭建+官方安装教程
进阶搭建: linux下ESP32开发环境搭建 +vscdoe配合虚拟机远程连接开发

这里提供一个搭建好4.4.6以及5.1.2 版本的虚拟机:虚拟机-网盘分享 ,提取码:3j9a
虚拟机密码:3.1415926

基于官方提供的示例程序,我们可以了解到最基本的工程结构:

代码参考:01.example/sample_project

1.2 点灯程序:

创建一个最简单的程序,点亮板载的LED灯。(使用官方历程)

视频参考:ESP-IDF点灯
代码参考:01.example/blink

1.3 Hello World 程序

创建一个最简单的程序,如打印 “Hello world!” 到串口。(使用官方历程)

视频参考:Hello World 程序
代码参考:01.example/hello_world

二、IDF学习📌

目标:学会安装esp-idf开发环境的项目配置,包括配置菜单,可变参数宏,组件机制。

2.1 ESP32工程结构及构建

文字教程参考:ESP32工程结构及构建
官方参考:ESP-IDF编程指南/API指南/构建系统

2.2 ESP-IDF项目配置(Menuconfig)

教程参考:ESP-IDF项目配置
官方参考:ESP-IDF编程指南/API参考/项目配置
视频参考: ESP-IDF自定义菜单
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/02.idf_basis/blink_menuconfig

2.3 ESP-IDF自定义组件(components)

教程参考:ESP-IDF自定义组件
官方参考:API指南->构建系统
视频参考: ESP32-IDF中cmake文件管理
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/02.idf_basis/blink_component

2.4 ESP-IDF组件管理器

教程参考:ESP-IDF组件管理器
官方参考:API指南->构建系统
视频参考: ESP32-IDF中cmake文件管理
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/02.idf_basis/button_component

三、基础外设学习📌

3.1 GPIO

3.1.1 GPIO输出/输出

教程参考:ESP32外设-GPIO入门
官方参考:GPIO & RTC GPIO
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/gpio

3.1.2 GPIO中断

教程参考:ESP32外设-GPIO入门
官方参考:GPIO & RTC GPIO
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/gpio_exit

3.2 UART

教程参考:ESP32外设-UART入门
官方参考:外设API->通用异步接收器/发送器 (UART)
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/uart

3.3 硬件定时器

教程参考:ESP32外设-硬件定时器入门
官方参考:通用定时器
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/gptimer

3.4 ADC

3.4.1 ADC单次转换

教程参考:ESP32外设-ADC入门
官方参考:模数转换器 (ADC-单次)
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/adc_oneshot

3.4.2 ADC连续转换

教程参考:ESP32外设-ADC入门
官方参考:模数转换器 (ADC-连续)
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/adc_continuous

3.5 DAC

教程参考:ESP32外设-DAC入门
官方参考:模数转换器 (ADC-连续)
代码参考1: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/dac_oneshot
代码参考2: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/dac_cosine

3.6 LED PWM

教程参考:ESP32外设-LEDPWM入门
官方参考:LED PWM 控制器
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/led_pwm

3.7 I2C

教程参考:ESP32外设-I2C入门
官方参考:I2C 驱动程序
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/03.peripheral/i2c_bh1750

3.8 I2S

教程参考:
官方参考:
代码参考:

四、ESP32存储器学习📌

4.1 分区表

教程参考:ESP32存储-分区表入门
官方参考:分区表
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/04.storage/partition

4.2 非易失性存储 (NVS)

教程参考:ESP32存储-非易失性存储 (NVS)入门
官方参考:分区表
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/04.storage/nvs

4.3 FAT文件系统

教程参考:ESP32存储-VFS虚拟文件系统入门
官方参考:FAT 文件系统
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/04.storage/flash_fatfs

4.4 SPIFFS 文件系统

教程参考:ESP32存储-SPIFFS文件系统
官方参考:SPIFFS 文件系统
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/04.storage/flash_spiffs

4.5 SD、SDIO、MMC 驱动

教程参考:ESP32存储-SD、SDIO、MMC 驱动
官方参考:
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/04.storage/sdmmc

五、ESP32 WFI学习📌

5.1 WIFI入门

教程参考:ESP32网络入门-WIFI连接
官方参考:
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/05.wifi

5.2 TCP协议

教程参考:ESP32网络入门-TCP协议
官方参考:
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/05.wifi/tcp

5.3 UDP协议

教程参考:ESP32网络入门-UDP协议
官方参考:
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/05.wifi/udp

5.4 HTTP协议

5.4.1 客户端协议

教程参考:ESP32网络入门-HTTP协议(客户端)
官方参考:HTTP 客户端
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/05.wifi/http/http_client

5.4.1 服务端协议

教程参考:ESP32网络入门-HTTP协议(服务端)
官方参考:HTTP 服务器
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/05.wifi/http/http_server

5.5 webSocket协议

教程参考:ESP32网络入门-WebSocket协议
官方参考:ESP WebSocket
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/05.wifi/websocket

5.6 MQTT协议

教程参考:ESP32网络入门-MQTT协议
官方参考:
代码参考:

5.7 ESP-NOW协议

教程参考:ESP32网络入门-ESP-NOW协议
官方参考:
代码参考:

5.8 SNTP校时

教程参考:ESP32网络入门-SNTP校时
官方参考:
代码参考:

六、ESP32 蓝牙学习📌

七、ESP32其他系统API学习📌

7.1 软件定时器

教程参考:ESP32系统API-软件定时器
官方参考:ESP 定时器
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/07.system/esp_timer

7.2 控制台终端

教程参考:
官方参考:控制台终端
代码参考:

八、ESP32FreeRTOS📌

8.1 FreeRTOS基础
8.2 ESP32中FreeRTOS启动过程
8.3 任务(task)
8.4 队列传递数据
8.5 定时器&信号量
8.6 事件组
8.7 任务通知
8.8 流数据/消息

九、GUI学习📌

9.1 LVGL的移植

9.1.1 以GC9A01为例(SPI)

教程参考:基于ESP-IDF官方组件移植LVGL(GC9A01无触摸)
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/08.gui/lvgl_component

9.1.2 以SPD2010(带触摸)为例(QSPI +I2C)

教程参考:基于ESP-IDF官方组件移植LVGL(SPD2010带触摸)
代码参考: https://github.com/DuRuofu/ESP32_Learning/tree/master/08.gui/lvgl_component

9.2 GUI绘制

9.2.1 使用SquareLine_Studio设计LVGL页面

教程参考:ESP32GUI入门-使用SquareLine_Studio设计LVGL页面_
代码参考:

十、其他外部硬件demo

参考链接

常用指令

ESP-IDF:

  • 创建工程:idf.py create-project main

  • 新建组件idf.py -C components create-component {componentName}

  • 清除之前的编译: idf.py fullclean

  • 编译: idf.py build

  • 向串口烧录固件: idf.py -p /dev/ttyUSB0 flash/dev/ttyUSB0 为目标串口参数,根据实际填写)

  • 打开串口监视器:idf.py -p /dev/ttyUSB0 monitor/dev/ttyUSB0 为目标串口参数,根据实际填写)

  • 配置菜单 :idf.py menuconfig

  • 选择芯片型号:idf.py set-target esp32 不输入参数的话,会列出所有可用型号

  • 一次性执行构建、烧录和监视过程:idf.py -p /dev/ttyUSB0 flash monitor/dev/ttyUSB0 为目标串口参数,根据实际填写)

  • 获取ADC基准值:espefuse.py -p /dev/ttyUSB0 adc_info
    其他:

  • 查询可用串口:ls /dev/ttyUSB*

  • 添加串口权限(需重启):sudo usermod -aG dialout username


ESP32学习路线
https://www.duruofu.xyz/2024/01/30/4.硬件相关/MCU/ESP32/00.目录/ESP32学习计划/
作者
DuRuofu
发布于
2024年1月30日
更新于
2024年6月24日
许可协议