ESP32学习路线
说明:
- 本文档由DuRuofu撰写,由DuRuofu负责解释及执行。
- 本文档记录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
基于官方提供的示例程序,我们可以了解到最基本的工程结构:
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
参考链接
- 孤独的二进制: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
常用指令
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