15浏览
查看: 15|回复: 15

[项目] 【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

[复制链接]
原标题
【花雕动手做】ESP32-S3 部署 MimiClaw 全记录:从零到飞书控制小车,100% 跑通(附克隆仓库失败终极解法)


核心说明:本文专门针对 ESP32-S3 N16R8 开发板,聚焦部署全流程(硬件选型→环境搭建→源码配置→编译烧录→启动验证),并扩展二次开发中的电机驱动与飞书关键词控制(绕过 LLM 网络调用难题)。所有步骤均经实战验证,严格照做即可 100% 跑通,兼顾新手入门与实操落地,彻底规避常见部署坑;同时结合实测报错信息,补充所有网页解析失败相关问题的细节,精准解决克隆仓库时的核心障碍(包括 GitHub 连接重置、gitee 镜像 SSL 证书错误、gitcode 访问超时等),提供三种可靠方案(gitcode 镜像、代理配置、ZIP 直下),确保源码获取环节畅通无阻。无论你是网络受限还是初涉嵌入式AI,照着本文操作,都能让 MimiClaw 在你的开发板上跑起来,并通过飞书一句话控制小车。






驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

## 一、硬件选型(必严格匹配,否则直接导致部署失败,无挽回空间)

1. 核心开发板(唯一适配型号)
唯一推荐:ESP32-S3 N16R8 开发板(标配 16MB Flash + 8MB PSRAM)。这是 MimiClaw 程序稳定运行的核心前提——Flash 容量不足会直接导致固件烧录失败,提示“固件过大”;PSRAM 容量不足则会引发运行时内存溢出、设备频繁重启,甚至核心功能无法启动。
禁止选型:坚决避开 4MB/8MB Flash、4MB PSRAM 的 ESP32-S3 型号(如 ESP32-S3-DevKitC-1 低配版),此类型号无论如何调整配置、修改源码,均无法正常运行 MimiClaw,无需尝试适配,避免浪费时间。

2. 辅助硬件(按需准备,避开廉价劣质坑)
- USB 数据线:必须选用带数据传输功能(含 D+/D- 数据引脚)的线材,仅充电线无法实现电脑与开发板的通讯,会直接导致烧录失败、串口无响应,建议使用开发板原装线或品牌高速数据线(如绿联、品胜)。
- 电机驱动模块:MX1508 或 L9110S(双路,支持两路电机独立控制,适配 N20 减速电机/TT 马达)。
- 动力部件:N20 减速电机 ×2(或 TT 马达 ×2),用于实现小车差速控制。
- 可选部件:WS2812 灯带(9 颗,推荐连接 GPIO48,用于状态指示)。
- 外部电源:5V/2A 及以上规格,必须与 ESP32-S3 开发板共地(共地不良会导致电机不转、信号干扰,严重时烧毁硬件)。

3. 引脚分配(避开 GPIO19/20 冲突,关键必看)
注意:GPIO19/20 被 USB-Serial-JTAG 占用,切勿用于电机、灯带等外设,否则会导致通讯冲突、功能异常。具体引脚分配如下:



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

## 二、开发环境搭建(唯一稳定版本,规避版本兼容与网络坑)

1. 安装 ESP-IDF v5.5.3(唯一兼容版本)
ESP-IDF 是 ESP32-S3 官方开发框架,版本兼容性直接决定部署成败,仅推荐 v5.5.3 版本(适配 MimiClaw 所有功能,已修复 PSRAM 适配、WiFi 驱动等 bug)。国内用户优先使用 Gitee 镜像,规避 GitHub 下载慢、网页解析失败等问题。经实测,访问 https://gitee.com/espressif/esp-idf.githttps://gitee.com/mirrors/esp-idf.git 均会出现“网页解析失败,可能是不支持的网页类型,请检查网页或稍后重试”报错;同时,访问带“cd ”后缀的该类链接(如 https://gitee.com/espressif/esp-idf.git 后加“cd ”),也会触发相同报错,解决方案见下文常见问题;克隆 MimiClaw 仓库相关链接时,同类报错也会出现,同步补充对应解决办法。

  1. # 国内用户优先使用 Gitee 镜像克隆仓库
  2. git clone -b v5.5.3 https://gitee.com/espressif/esp-idf.git
  3. cd esp-idf
  4. # Windows 系统(必须以管理员身份运行终端,否则权限不足)
  5. install.bat                # 自动安装所有依赖工具链
  6. export.bat                 # 导入环境变量(每次新开终端必须执行)
  7. # Linux/macOS 系统
  8. ./install.sh               # 安装工具链
  9. . ./export.sh              # 导入环境变量(注意开头的点和空格,不可省略)
  10. # 验证安装是否成功(成功提示版本为 v5.5.3)
  11. idf.py --version
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

本帖最后由 驴友花雕 于 2026-4-17 06:34 编辑

2. 克隆 MimiClaw 源码(优先选用稳定仓库)
官方开源 https://github.com/memovai/mimiclaw,核心目录包含 main、docs、scripts 等,支持 ESP32-S3 专属配置,可直接用于部署。也可使用镜像仓库 https://gitcode.com/RealGao/mimiclaw

3. 配置 mimi_secrets.h(必填项,否则编译/运行失败)
该文件是 MimiClaw 核心配置文件,包含 WiFi、飞书、大模型 API 等关键信息,必须从模板复制生成,不可手动新建(手动新建会导致格式错误)。参考相关仓库配置规范,该文件支持 Tavily 搜索、代理等功能的灵活配置。

  1. # 从模板文件复制生成配置文件(必须执行)
  2. cp main/mimi_secrets.h.example main/mimi_secrets.h
  3. 编辑 main/mimi_secrets.h 时,需重点填写 LLM、DeepSeek、博查(Tavily)搜索相关配置,三者均为启用对应功能的核心,属于必填项;其余可选项可保留默认或注释,具体配置如下:
  4. #pragma once
  5. // WiFi 配置(必须为 2.4GHz,ESP32-S3 不支持 5GHz,所有网络相关功能的基础)
  6. #define MIMI_SECRET_WIFI_SSID     "你的2.4G WiFi名称"  // 无特殊字符、无空格,避免识别失败
  7. #define MIMI_SECRET_WIFI_PASS     "你的WiFi密码"        // 严格区分大小写,输入无多余空格
  8. // 飞书机器人配置(实现飞书控制核心,与LLM、博查功能联动)
  9. #define MIMI_SECRET_FEISHU_APP_ID   "你的飞书AppID"
  10. #define MIMI_SECRET_FEISHU_APP_SECRET "你的飞书AppSecret"
  11. // LLM(大语言模型)核心配置(基于DeepSeek实现,启用LLM对话功能必选)
  12. #define MIMI_SECRET_API_KEY         "你的DeepSeek API Key"  // 从DeepSeek开放平台注册免费获取,核心凭证;若Key失效,需重新注册获取
  13. #define MIMI_SECRET_MODEL           "deepseek-chat"        // 固定填写,不可修改,DeepSeek默认对话模型,适配LLM核心逻辑
  14. #define MIMI_SECRET_MODEL_PROVIDER  "openai"              // 固定填写,不可修改,MimiClaw通过OpenAI兼容路径调用DeepSeek LLM,修改会导致调用失败
  15. // 博查(Tavily)搜索 API 配置(LLM拓展功能,启用网页搜索必选,与LLM联动提升响应能力)
  16. // 说明:Tavily是轻量高速的AI搜索工具,适配ESP32-S3轻量化运行,新用户每月1000次免费调用,无需绑定信用卡
  17. #define MIMI_SECRET_TAVILY_KEY      "tvly-xxxxxxxxxxxx"    // 替换为自己的Tavily API Key,格式固定为tvly-开头,不可错写、漏写,否则初始化失败
  18. #define MIMI_SECRET_SEARCH_KEY      ""                    // 可选:Brave Search API Key,与Tavily二选一,优先使用Tavily,无需重复填写
  19. // 代理配置(可选,国内用户若出现LLM、博查调用失败,可补充填写,解决网络受限问题)
  20. #define MIMI_SECRET_PROXY_HOST      ""                    // 代理主机地址,如"10.0.0.1"
  21. #define MIMI_SECRET_PROXY_PORT      ""                    // 代理端口,如"7897"
复制代码

关键提示:
(1)飞书机器人需在飞书开放平台开启「im.message.receive_v1」事件订阅,否则无法接收用户消息,导致 LLM 对话、博查搜索及小车控制功能全部失效;
(2)LLM、DeepSeek、博查三者需同时配置正确,才能实现“飞书发消息→LLM解析→博查搜索(如需)→响应反馈”的完整流程;
(3)若仅需小车关键词控制,可跳过 LLM 和博查配置,不影响核心控制功能(后续再补上)。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

## 三、编译与烧录(步骤不可逆,重点规避烧录坑)

1. 设置目标芯片与配置

  1. # 设置目标芯片为 ESP32-S3(必须执行,否则固件不兼容)
  2. idf.py set-target esp32s3
  3. # 配置 PSRAM 和 Flash 大小(关键步骤)
  4. idf.py menuconfig
  5. # 操作步骤:进入 Memory 选项 → 勾选 Enable PSRAM(启用 8MB PSRAM)
  6. # 进入 Serial Flasher Config 选项 → 设置 Flash 大小为 16MB
  7. # 保存配置并退出(按 S 保存,Q 退出)
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

2. 编译固件

首次编译需下载 WiFi 驱动、SPIFFS 驱动等依赖包,耗时约 10 分钟,耐心等待即可;后续修改配置或源码后编译,会复用缓存,耗时可缩短至 1-2 分钟。https://github.com/memovai/mimiclaw 仓库已优化编译脚本,可减少编译报错概率。

  1. # 清除旧缓存和配置(修改配置/源码后必须执行)
  2. idf.py fullclean
  3. # 编译固件(成功提示 Project build complete)
  4. idf.py build
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

3. 烧录固件(关键操作,避免卡壳)

  1. # 烧录并打开串口监视器(替换 COMx 为实际串口,如 COM20、/dev/ttyACM0)
  2. idf.py -p COMx flash monitor
复制代码


烧录需严格执行以下关键步骤,否则无法进入下载模式,导致烧录卡壳:
1. 按住开发板 BOOT 键(不要松开);
2. 按下开发板 RST(EN)键,随即松开 RST 键;
3. 保持按住 BOOT 键,等待终端提示“Writing flash”(烧录开始);
4. 烧录完成后(提示“Hash of data verified”),松开 BOOT 键,开发板自动重启。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

## 四、启动验证(快速判断部署是否成功)

烧录完成后,开发板自动重启,打开串口监视器(波特率 115200),若出现以下日志,即说明基础部署成功:

  1. I (xxx) wifi: Connected! IP: 192.168.x.x  # WiFi 联网成功
  2. I (xxx) feishu: Feishu WS connected        # 飞书机器人连接成功
  3. I (xxx) motor: Motor driver initialized (2 motors)  # 电机驱动初始化成功
复制代码

测试验证:在飞书中给机器人发送“你好”,若 LLM 网络正常,机器人会回复消息;若出现 LLM 调用失败(如 TLS 证书错误),可直接跳过,进入二次开发的关键词控制环节,不影响小车核心控制功能。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

## 五、二次开发:电机差速控制(绕过 LLM 网络难题,稳定可控)

由于 DeepSeek API 可能存在 TLS 证书、网络限制等问题,容易导致 LLM 调用失败,因此我们直接在飞书消息处理逻辑中添加关键词匹配,绕开 LLM 网络调用(后续直接调用),实现小车即时控制,稳定可靠且响应迅速。

1. 添加电机驱动文件
在项目 main/tools 目录下新建 tool_motor.c 和 tool_motor.h 文件,实现电机驱动核心函数(标准 MX1508/L9110S 驱动实现,关键函数为 car_diff_control(action),用于小车差速控制),核心逻辑如下:

  1. #include "driver/gpio.h"
  2. #include "tool_motor.h"
  3. // 初始化电机驱动 GPIO
  4. void motor_init(void) {
  5.     gpio_config_t io_conf = {
  6.         .pin_bit_mask = (1ULL<<18) | (1ULL<<17) | (1ULL<<4) | (1ULL<<5),
  7.         .mode = GPIO_MODE_OUTPUT,
  8.         .pull_up_en = GPIO_PULLUP_DISABLE,
  9.         .pull_down_en = GPIO_PULLDOWN_DISABLE,
  10.         .intr_type = GPIO_INTR_DISABLE
  11.     };
  12.     gpio_config(&io_conf);
  13. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

本帖最后由 驴友花雕 于 2026-4-17 06:47 编辑

2. 修改 feishu_bot.c,实现关键词控制

找到 main/channels/feishu/feishu_bot.c 文件,在 handle_message_event 函数中,解析出用户消息(cleaned 变量)后,添加以下关键词匹配逻辑,实现小车前进、后退、左转、右转、停止的精准控制:

  1. #include "driver/gpio.h"
  2. #include "tool_motor.h"
  3. // 在解析出 cleaned 文本(用户消息)后,添加以下代码
  4. if (strstr(cleaned, "前进") != NULL) {
  5.     // 左电机正转,右电机正转
  6.     gpio_set_level(18, 1); gpio_set_level(17, 0);
  7.     gpio_set_level(4, 1);  gpio_set_level(5, 0);
  8.     feishu_send_message(chat_id, "小车前进");  // 飞书回复反馈
  9.     cJSON_Delete(content_obj);
  10.     return;
  11. }
  12. if (strstr(cleaned, "后退") != NULL) {
  13.     // 左电机反转,右电机反转
  14.     gpio_set_level(18, 0); gpio_set_level(17, 1);
  15.     gpio_set_level(4, 0);  gpio_set_level(5, 1);
  16.     feishu_send_message(chat_id, "小车后退");
  17.     cJSON_Delete(content_obj);
  18.     return;
  19. }
  20. if (strstr(cleaned, "左转") != NULL) {
  21.     // 左电机反转,右电机正转(差速左转)
  22.     gpio_set_level(18, 0); gpio_set_level(17, 1);
  23.     gpio_set_level(4, 1);  gpio_set_level(5, 0);
  24.     feishu_send_message(chat_id, "小车左转");
  25.     cJSON_Delete(content_obj);
  26.     return;
  27. }
  28. if (strstr(cleaned, "右转") != NULL) {
  29.     // 左电机正转,右电机反转(差速右转)
  30.     gpio_set_level(18, 1); gpio_set_level(17, 0);
  31.     gpio_set_level(4, 0);  gpio_set_level(5, 1);
  32.     feishu_send_message(chat_id, "小车右转");
  33.     cJSON_Delete(content_obj);
  34.     return;
  35. }
  36. if (strstr(cleaned, "停止") != NULL || strstr(cleaned, "停") != NULL) {
  37.     // 所有电机停止
  38.     gpio_set_level(18, 0); gpio_set_level(17, 0);
  39.     gpio_set_level(4, 0);  gpio_set_level(5, 0);
  40.     feishu_send_message(chat_id, "小车停止");
  41.     cJSON_Delete(content_obj);
  42.     return;
  43. }
复制代码

3. 重新编译烧录

# 重新编译并烧录,应用修改
  1. idf.py build flash monitor
复制代码


4. 测试验证

在飞书中给机器人发送关键词:“前进”“后退”“左转”“右转”“停止”,小车会立即执行对应动作,同时飞书会收到“小车XX”的反馈消息,全程无需依赖 LLM 网络调用,响应迅速、稳定可靠。
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

本帖最后由 驴友花雕 于 2026-4-17 06:53 编辑

## 六、常见问题与解决方案(实战避坑,快速排错)

1、烧录卡在“waiting for download”:核心原因是未手动进入下载模式。解决方案:严格按照“按住 BOOT → 按 RST → 松 RST → 松 BOOT”步骤操作,重新执行烧录命令即可。

2、飞书无响应,无法接收消息:核心原因是飞书凭证错误或未订阅对应事件。解决方案:检查飞书 AppID/Secret 填写正确,在飞书开放平台开启「im.message.receive_v1」事件订阅,重启设备后重试。

3、电机不转:核心原因是电源不足或 GPIO 冲突。解决方案:使用 5V/2A 外部电源,确保与开发板共地;避开 GPIO19/20 引脚,核对引脚分配是否与本文一致,重新检查电机接线。

4、LLM 调用出现 TLS 错误:核心原因是系统时间不准或证书问题。解决方案:添加 SNTP 时间同步,或直接使用本文二次开发中的关键词控制方法,绕开 LLM 调用,不影响小车控制功能。

5、运行时堆栈溢出:核心原因是 outbound 任务栈不足。解决方案:在 mimi_config.h 中增大 MIMI_OUTBOUND_STACK 至 16KB,具体修改为 #define MIMI_OUTBOUND_STACK 16384。

6、克隆 ESP-IDF 仓库提示“网页解析失败”:核心原因是 Gitee 镜像访问异常,实测https://gitee.com/espressif/esp-idf.githttps://gitee.com/mirrors/esp-idf.git 两个链接,以及带“cd ”后缀的该类链接,均会触发此报错。解决方案:一是更换 Gitee 镜像地址,执行命令 git clone -b v5.5.3 https://gitee.com/mirrors/esp-idf.git;二是直接下载 ESP-IDF v5.5.3 压缩包解压,无需克隆;三是更换网络(如手机热点),避开网络限制后重试。

7、克隆 MimiClaw 仓库提示“网页解析失败”:核心原因是仓库链接访问异常,实测有时报错。解决方案:一是确保克隆命令为 git clone https://github.com/memovai/mimiclaw.git ;二是更换网络重试,或直接下载仓库压缩包解压;三是国内用户可搜索 MimiClaw 国内镜像仓库克隆。

8、LLM/DeepSeek调用失败:核心原因是 API Key 错误、过期,模型配置错误或网络受限。解决方案:重新获取 DeepSeek API Key,核对填写无遗漏、无多余空格;确认 MODEL 和 MODEL_PROVIDER 为本文指定的固定值;检查 WiFi 联网正常,必要时填写代理配置。

9、博查(Tavily)API调用失败:核心原因是 API Key 错误、格式不符、额度不足或网络异常。解决方案:确认 Key 以 tvly-开头、无字符遗漏、无多余空格;检查 WiFi 联网正常,核对额度(免费 1000 次/月);额度不足可等待下月重置,或按需升级密钥。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 7 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

## 七、总结

本文详细记录了 ESP32-S3 N16R8 开发板部署 MimiClaw 的完整流程,从硬件选型、环境搭建、源码配置,到编译烧录、启动验证,再到二次开发实现飞书关键词控制小车,全程贴合实战,规避了所有常见部署坑;同时结合实测报错文档,精准补充了所有网页解析失败相关的报错场景、原因及解决方案,彻底解决克隆仓库时的核心障碍。通过关键词控制绕开 LLM 网络难题(这个以后再逐一解决),实现了小车稳定可控,无需复杂的网络配置,新手也能轻松上手。

后续可根据需求扩展功能,如实现四电机的麦克纳姆轮小车、添加 PWM 电机调速、超声波避障、WS2812 灯带状态指示、舵机转向控制等。多参考 https://github.com/memovai/mimiclaw 核心源代码,该仓库包含完整的部署脚本、配置模板及功能拓展代码,若该仓库链接解析失败,可参考本文常见问题解决方案处理,欢迎 fork 和 star,如有部署问题,可在评论区留言交流。

## 附录:二次开发项目结构(关键文件说明)

  1. main/                  # 核心代码目录
  2. ├── mimi.c             # 程序入口文件
  3. ├── mimi_config.h      # 系统配置文件(修改文件系统、堆栈大小等)
  4. ├── mimi_secrets.h     # 密钥配置文件(WiFi、飞书、LLM、博查搜索API等核心凭证)
  5. ├── agent/agent_loop.c # LLM 代理循环逻辑(联动博查搜索工具,处理搜索请求)
  6. ├── channels/feishu/feishu_bot.c # 飞书机器人消息处理(接收指令,触发LLM与博查搜索)
  7. ├── tools/tool_motor.c # 电机驱动核心代码
  8. ├── tools/tool_ws2812.c # WS2812 灯带驱动代码(可选)
  9. ├── tools/tool_servo.c # 舵机驱动核心代码(可选,如SG90舵机,适配小车转向等功能)
  10. └── tools/tool_search.c # 博查(Tavily)搜索工具核心代码(可选,实现网页搜索功能,联动LLM)
复制代码



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 6 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

附录二:实验场景图与记录视频

1、烧录固件后串口反馈截图







回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 6 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

2、手机飞书自然语言对话截图






回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 6 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

3、实验场景图




回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 4 小时前

【花雕】部署 MimiClaw:从零到飞书控制小车,100% 跑通

【【花雕动手做】ESP32-S3 部署 MimiClaw 全记录:从零到飞书控制小车,100% 跑通       #迷你小龙虾 #嵌入式MimiClaw #单片机 #双驱小车】

https://www.bilibili.com/video/BV1pjdBBHEzX/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail