DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。

如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LAUNCHPAD,按照说明在 Mac 上也可以使用。

而我想着后期做一些定制,所以还是需要在 Mac 上搭建 ESP-IDF 开发环境,自己编译和烧录固件。而这个在 小智 AI 聊天机器人百科全书 中没有详细提及,所以我就记录一下搭建过程,供有需要的朋友参考。

先上一个跑起来后的效果:
在这里插入图片描述

配置 macOS 平台工具链

这一步参考乐鑫官方的 Linux 和 macOS 平台工具链的标准设置 完成,我这里指定了使用 ESP-IDF v5.4.1 版本,编译目标是 ESP32-S3。

第一步:安装前置依赖

brew install cmake ninja dfu-util ccache python3

第二步:获取 ESP-IDF

mkdir ~/github
cd ~/github
git clone -b v5.4.1 --recursive https://github.com/espressif/esp-idf.git

ESP-IDF 将下载至 ~/github/esp-idf 目录。

第三步:设置工具

cd ~/github/esp-idf
./install.sh esp32s3

第四步:设置环境变量

在 ~/.zshrc 中添加以下内容:

aliasget_idf='. $HOME/github/esp-idf/export.sh'

然后 source ~/.zshrc 使其生效。

这样在需要用到 ESP-IDF 环境的时候,只需要在终端中执行 get_idf 即可。

在执行以上步骤时,如果遇到问题,可以到 乐鑫官方文档 里看看有没有解决方案。

下载和编译小智 AI 固件

cd ~/github
git clone -b v1.6.2 git@github.com:78/xiaozhi-esp32.git
cd xiaozhi-esp32

然后接入 ESP32-S3 开发板,执行以下命令:

get_idf
idf.py set-target esp32s3
idf.py build
idf.py flash monitor

一切顺利的话,会向 ESP32-S3 开发板烧录小智 AI 固件,并且进入监控模式。

至此,就初步能跑起来了。按照提示进行 WiFi 配置和小智 AI 平台的设备绑定,即可开始使用。

如果后续需要定制固件,可以基于 ~/github/xiaozhi-esp32 目录进行修改和编译。若习惯使用 VSCode 进行开发,可以安装 适用于 VSCode 的 ESP-IDF 扩展,这样可以更方便地进行开发和调试。

参考链接

  • https://www.espressif.com.cn/zh-hans/support/download/other-tools

  • https://espressif.github.io/esp-launchpad/

  • https://ccnphfhqs21z.feishu.cn/wiki/F5krwD16viZoF0kKkvDcrZNYnhb

  • https://docs.espressif.com/projects/esp-idf/zh_CN/v5.4.1/esp32s3/get-started/linux-macos-setup.html

  • https://github.com/espressif/vscode-esp-idf-extension

### 关于ESP32固件编译缺少头文件的解决方案 在开发基于ESP32的小智AI项目时,如果遇到固件编译过程中无法找到特定头文件的情况,通常是因为以下几个原因造成的: #### 1. 头文件路径未正确配置 确保项目的`CMakeLists.txt`或`platformio.ini`文件中已正确定义了头文件所在的目录。例如,在PlatformIO环境中,可以通过以下方式指定额外的头文件路径[^1]。 ```ini build_flags = -Isrc/include -I../common/include ``` 上述代码片段表示将`src/include`和`../common/include`作为额外的头文件搜索路径加入到编译选项中。 #### 2. 使用错误的SDK版本 不同版本的ESP-IDF可能不兼容某些功能模块或API定义。确认当前使用的ESP-IDF版本是否支持所需的头文件以及其内部函数声明。可以尝试切换至推荐的稳定版ESP-IDF来解决问题。 下载并安装对应版本的方法如下: - 访问官方文档页面获取具体指导链接。 - 或者通过命令行工具执行更新操作。 ```bash git clone --recursive https://github.com/espressif/esp-idf.git cd esp-idf ./install.sh source export.sh ``` 以上脚本会自动拉取依赖库并将环境变量设置好以便后续调用。 #### 3. 需要手动复制缺失文件 有时第三方插件或者自定义组件并未随源码一同发布出来,则需从网上查找相应资源然后放置到工程合适位置下再重新构建整个项目结构树形图从而完成加载过程。 比如对于一些特殊外设驱动程序而言,它们往往独立存在于其他仓库里而不是集成进标准框架里面去;此时就需要开发者自行前往相关网站寻找最新发行包之后解压提取必要部分粘贴回去即可正常使用这些特性而无需担心报错现象发生。 --- ### 提供一段简单的测试代码用于验证问题修复情况 下面给出了一段基础示例用来检测基本功能是否正常运作: ```c #include "driver/gpio.h" void app_main(void){ gpio_pad_select_gpio(2); gpio_set_direction(2, GPIO_MODE_OUTPUT); while(true){ gpio_set_level(2,1); vTaskDelay(pdMS_TO_TICKS(500)); gpio_set_level(2,0); vTaskDelay(pdMS_TO_TICKS(500)); } } ``` 此段落展示了如何利用GPIO接口控制LED灯闪烁效果,其中包含了必要的包含语句以表明该方法适用于解决因缺乏适当导入而导致的编译失败状况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值