前言
不说废话,直面“干货”。最近公司项目涉及基于 ESP32 系列芯片开发,那我们新手小白如何准备相关工作及快速入门,本篇文章旨在:介绍ESP32,指导用户搭建 ESP32 硬件开发的软件环境( ESP-IDF V5.2.1 和 ESP-ADF master )和运行简单的例程DEMO确认开发环境正确安装。
考虑到编译效率问题,我选择“离线下载”
概述
ESP32 是一款功能丰富的 SoC,集成 Wi-Fi 4 和 蓝牙,适用于多样的物联网应用,具有 高性能、高集成、低功耗和多种接口的特点,可作为独立系统或从设备提供 Wi-Fi 和 …
-
2.4 GHz Wi-Fi
-
蓝牙
-
高性能 Xtensa® 32 位 LX6 双核处理器
-
超低功耗协处理器
-
多种外设
ESP32 采用 40 nm 工艺制成,具有最佳的功耗性能、射频性能、稳定性、通用性和可靠性,适用于各种应用场景和不同功耗需求。
乐鑫信息科技(上海)股份有限公司
英文全称:ESPRESSIF SYSTEMS (SHANGHAI) CO., LTD.
官网地址:https://www.espressif.com.cn/zh-hanshttps://www.espressif.com.cn/zh-hans
总部位于上海张江高科技园区,是一家先进、专业的、全球化的无晶圆半导体公司,致力于研发设计 Wi-Fi 和蓝牙技术的无线系统级芯片,提供移动通讯和物联网解决方案。
乐鑫科技(股票代码:688018)成立于 2008 年,在中国、捷克、印度、新加坡和巴西均设有办公地,团队来自约 30 个国家和地区。乐鑫多年来深耕 AIoT 领域软硬件产品的研发与设计,专注于研发高集成、低功耗、性能卓越、安全稳定、高性价比的无线通信 SoC,现已发布 ESP8266、ESP32、ESP32-S、ESP32-C 和 ESP32-H 系列芯片、模组和开发板,成为物联网应用的理想选择。我们致力于提供安全、稳定、节能的 AIoT 解决方案。同时,我们坚持技术开源,助力开发者们用乐鑫的方案开发智能产品,打造万物互联的智能世界。2019 年 7 月,乐鑫科技在上海证券交易所科创板挂牌上市。
乐鑫以开源的方式建立了开放、活跃的技术生态系统。自主研发了一系列开源的软件开发框架,如操作系统ESP-IDF、音频开发框架 ESP-ADF、Mesh 开发框架 ESP-MDF、设备连接平台 ESP RainMaker、人脸识别开发框架 ESP-WHO 和 智能语音助手 ESP-Skainet 等,以此构建了一个完整、创新的 AIoT 应用开发平台。同时,乐鑫也支持许多创客社区的开源项目,让开发者们自由开发项目应用、交流技术心得。随后乐鑫的芯片和模组受到越来越多客户的青睐,被广泛应用于智能家居、电工、照明、智能音箱、消费电子、移动支付等领域。
ESP-ADF
ESP-ADF 以最全面的方式支持乐鑫 SoC 的音频应用程序开发。使用 ESP-ADF,您可以轻松添加功能,从简单到复杂开发音视频应用程序:
- 音乐播放器或录音机支持MP3,AAC,FLAC,WAV,OGG,OPUS,AMR,TS,EQ,Downmixer,Sonic,ALC,G.711等音频格式。
- 播放来自以下来源的音乐:HTTP、HLS(HTTP Live Streaming)、SPIFFS、SDCARD、A2DP-Source、A2DP-Sink、HFP 等。
- 集成媒体协议,如:DLNA、VoIP、RMTP、ESP-RTC(SIP、RTSP 和 RTCP)等。
- 视频通话、视频录制和视频直播
- 网络电台
- 语音识别和与Alexa、DuerOS等在线服务的集成。
一般情况下,ESP-ADF 功能将支持如下所示:
一、准备工作
-
一款 ESP32 开发板
-
USB 数据线 (A 转 Micro-B)
-
电脑(Windows、Linux 或 macOS)
目前一些开发板使用的是 USB Type C 接口。请确保使用合适的数据线来连接开发板!
二、ESP-IDF安装,配置及编译DEMO
注意:我这里使用的是:ESP-IDF最新稳定版本 V5.2.1 有其他版本的文档如下,仅供参考ESP-IDF 版本简介https://docs.espressif.com/projects/esp-idf/zh_CN/v5.2.1/esp32/versions.html
(一)使用什么版本?
如果你是用在工作的项目量产,当然首选还是使用稳定版本( 最新稳定版本 V5.2.1 ),ESP-IDF 的 GitHub 仓库时常更新,特别是用于开发新特性的 master 分支。下表总结了乐鑫芯片在 ESP-IDF 各版本中的支持状态,预览支持状态通常有时间限制,而且仅适用于测试版芯片。请确保使用与芯片相匹配的 ESP-IDF 版本。
芯片 | V4.3 | V4.4 | V5.0 | V5.1 | V5.2 | - |
---|---|---|---|---|---|---|
ESP32 | 支持 | 支持 | 支持 | 支持 | 支持 | |
ESP32-S2 | 支持 | 支持 | 支持 | 支持 | 支持 | |
ESP32-C3 | 支持 | 支持 | 支持 | 支持 | 支持 | |
ESP32-S3 | 支持 | 支持 | 支持 | 支持 | 芯片发布公告 | |
ESP32-C2 | 支持 | 支持 | 支持 | 芯片发布公告 | ||
ESP32-C6 | 支持 | 支持 | 芯片发布公告 | |||
ESP32-H6 | 支持 | 支持 | 芯片发布公告 | |||
ESP32-P4 | 预览 | 芯片发布公告 |
上述的 V5.2.1 是 V5.2 下继续开发的Bugfix 版本,仅修复 bug,并不增加任何新特性;V5.2 是是 V5.0 继续开发的次要版本,代表有新增特性和 bug 修复,但现有特性不受影响,公开 API 的使用也不受影响。(升级至一个新的次要版本意味着你可能不需要更新工程代码,但需重新测试工程,特别是 发布说明页面中 专门提到的部分。)
当然,用于嵌入式的开发学习,我们可以基于最新版的框架去开发,通过以下链接,可以访问各个版本的配套文档:
- 最新稳定版 ESP-IDF:ESP-IDF 编程指南 - ESP32 - — ESP-IDF 编程指南 v5.2.1 文档 (espressif.com)
- 最新版 ESP-IDF(即 master 分支):ESP-IDF 编程指南 - ESP32 - — ESP-IDF 编程指南 latest 文档 (espressif.com)
每款乐鑫芯片都可能有不同版本。建议参考 ESP-IDF 版本与乐鑫芯片版本兼容性,了解 ESP-IDF 版本与各芯片版本之间的兼容性。对于 2016 年之前发布的乐鑫芯片(包括 ESP8266 和 ESP8285),请参考 RTOS SDK。
ESP-IDF 在 GitHub 平台上的完整发布历史请见 发布说明页面。该页面支持查看各个版本的发布说明、配套文档及相应获取方式。
此外,也可以直接前往文档页面,查看不同 ESP-IDF 版本的配套文档,具体可点击页面左上角中版本的下拉菜单(在目标下拉菜单和搜索栏之间),实现在不同版本间切换。
旧版本的文档也仍然可用:
v5.2 - Release Notes | v5.1.2 - Release Notes | v5.1.1 - Release Notes |
v5.1 - Release Notes | v5.0.5 - Release Notes | v5.0.4 - Release Notes |
v5.0.3 - Release Notes | v5.0.2 - Release Notes | v5.0.1 - Release Notes |
v5.0 - Release Notes | v4.4.6 - Release Notes | v4.4.5 - Release Notes |
v4.4.4 - Release Notes | v4.4.3 - Release Notes | v4.4.2 - Release Notes |
v4.4.1 - Release Notes | v4.4 - Release Notes | v4.3.6 - Release Notes |
v4.3.5 - Release Notes | v4.3.4 - Release Notes | v4.3.3 - Release Notes |
v4.3.2 - Release Notes | v4.3.1 - Release Notes | v4.3 - Release Notes |
v4.2.5 - Release Notes | v4.2.4 - Release Notes | v4.2.3 - Release Notes |
v4.2.2 - Release Notes | v4.2.1 - Release Notes | v4.2 - Release Notes |
v4.1.4 - Release Notes | v4.1.3 - Release Notes | v4.1.2 - Release Notes |
v4.1.1 - Release Notes | v4.1 - Release Notes | v4.0.4 - Release Notes |
v4.0.3 - Release Notes | v4.0.2 - Release Notes | v4.0.1 - Release Notes |
v4.0 - Release Notes | v3.3.6 - Release Notes | v3.3.5 - Release Notes |
v3.3.4 - Release Notes | v3.3.3 - Release Notes | v3.3.2 - Release Notes |
v3.3.1 - Release Notes | v3.3 - Release Notes | v3.2.5 - Release Notes |
v3.1.7 - Release Notes | release-v4.2 | release-v4.1 |
release-v4.0 | release-v3.3 |
(二)软件下载与安装
设置 工具链,用于编译 ESP32 代码;
编译构建工具 —— CMake 和 Ninja 编译构建工具,用于编译 ESP32 应用程序;
获取 ESP-IDF 软件开发框架。该框架已经基本包含 ESP32 使用的 API(软件库和源代码)和运行 工具链 的脚本;
1. 离线安装程序下载(离线安装)
Windows Installer Downloadhttps://dl.espressif.cn/dl/esp-idf/?idf=4.4
点击下载
ESP-IDF v5.2.1 - Offline Installer(Windows 10, 11;Size: 1.5 GB)https://dl.espressif.com/dl/idf-installer/esp-idf-tools-setup-offline-5.2.1.exe
2. 安装“入门指南”中提到的构建所依赖的工具,无脑“下一步”
本次项目,我用到的是“ 通用型 Wi-Fi + 低功耗蓝牙 MCU 模组 ESP32-S3-WROOM-1U”
安装目录:我的选择是F:\盘的根目录
离线安装程序不需要任何网络连接。安装程序中包含了所有需要的依赖文件,包括 Git For Windows 安装器。
安装程序会安装以下组件:
-
内置的 Python
-
交叉编译器
-
OpenOCD
-
CMake 和 Ninja 编译工具
-
ESP-IDF
3. 设置构建环境
(1)运行安装脚本,设置构建环境。可为 Windows shell 选择 install.bat
或 install.ps1
(2)在使用 ESP-IDF 之前,需要在 shell 中运行导出脚本。Windows 下可运行 export.bat
4. 开始使用ESP-IDF
从 ESP-IDF 中 examples 目录下的 get-started/hello_world 工程开始。
(三)官方ESP-IDF编程指南 -> 快速入门
https://docs.espressif.com/projects/esp-idf/zh_CN/v5.2.1/esp32/get-started/index.html
三、ESP-ADF安装,配置及编译DEMO
ESP-ADF的安装是在ESP-IDF已安装的基础上进行的。
(一)使用什么版本?
ESP-ADF 目前支持的 ESP-IDF 版本如下表所示。
ESP-IDF 主分支被标记为不受支持,因为它引入的主要功能更改可能会导致与 ESP-ADF 发生冲突。但是,不受这些功能更改影响的 ADF 示例仍然可以在 IDF 主分支上正确运行。
已删除生命周期终止的 IDF 分支。有关详细信息,请参阅 IDF支持的期限。
ESP-IDF Release/v4.4 | ESP-IDF 版本/v5.0Release/v5.0版本/v5.0 | ESP-IDF 版本/v5.1Release/v5.1版本/v5.1 | ESP-IDF 版本/v5.2Release/v5.2版本/v5.2 | ESP-IDF 主控Master主控 | |
---|---|---|---|---|---|
ESP-ADF Master | |||||
ESP-ADF Release/v2.6 | 1 | ||||
ESP-ADF Release/v2.5 | 1 | ||||
ESP-ADF Release/v2.4 | 1 |
注1:ESP-ADF v2.4 内置的 IDF 分支目前为 IDF Release/v4.4。
最终决定,我使用的是 master 分支下的工程代码。
(二)调用git命令克隆仓库:
https://github.com/espressif/esp-adf/tree/master
克隆路径为:预安装的ESP-IDF安装目录下的 frameworks/
安装成功后,我们进入 目录esp-adf
安装过后,会出现几个文件的克隆失败,分别是
esp-idf
、esp-idf-libs
(adf音频库)、esp-sr
(adf语音识别库),因为这些库在esp-adf-master仓库下都是以分支branch链接形式存储的。需要单独安装。
(三)删除文件夹,克隆仓库,下载 ESP-IDF V5.2.1 版本
删除空文件夹 esp-idf,克隆仓库:GitHub - espressif/esp-idf: Espressif IoT Development Framework. Official development framework for Espressif SoCs.Espressif IoT Development Framework. Official development framework for Espressif SoCs. - espressif/esp-idfhttps://github.com/espressif/esp-idf.git
(四) 删除文件夹,克隆仓库,下载 esp-adf-libs 版本
进入到 esp-adf\components 目录,删除空文件夹 esp-adf-libs ,克隆仓库https://gitclone.com/github.com/espressif/esp-adf-libshttps://gitclone.com/github.com/espressif/esp-adf-libs
(五) 删除文件夹,克隆仓库,下载 esp-adf-libs 版本
进入到 esp-adf\components 目录,删除空文件夹 esp-adf-sr ,克隆仓库
https://gitclone.com/github.com/espressif/esp-sr.git
(七)设置环境变量
打开系统环境变量设置,添加ESP-ADF安装路径
设置成功后,在命令行中输入命令echo %ADF_PATH%
,
应该返回ESP-ADF 目录的路径。