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







https://www.bilibili.com/video/BV1pjdBBHEzX/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987
[media=x,500,375]https://www.bilibili.com/video/BV1pjdBBHEzX/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987[/media]
1、烧录固件后串口反馈截图
本文详细记录了 ESP32-S3 N16R8 开发板部署 MimiClaw 的完整流程,从硬件选型、环境搭建、源码配置,到编译烧录、启动验证,再到二次开发实现飞书关键词控制小车,全程贴合实战,规避了所有常见部署坑;同时结合实测报错文档,精准补充了所有网页解析失败相关的报错场景、原因及解决方案,彻底解决克隆仓库时的核心障碍。通过关键词控制绕开 LLM 网络难题(这个以后再逐一解决),实现了小车稳定可控,无需复杂的网络配置,新手也能轻松上手。
后续可根据需求扩展功能,如实现四电机的麦克纳姆轮小车、添加 PWM 电机调速、超声波避障、WS2812 灯带状态指示、舵机转向控制等。多参考 https://github.com/memovai/mimiclaw 核心源代码,该仓库包含完整的部署脚本、配置模板及功能拓展代码,若该仓库链接解析失败,可参考本文常见问题解决方案处理,欢迎 fork 和 star,如有部署问题,可在评论区留言交流。
## 附录:二次开发项目结构(关键文件说明)
[code]main/ # 核心代码目录
├── mimi.c # 程序入口文件
├── mimi_config.h # 系统配置文件(修改文件系统、堆栈大小等)
├── mimi_secrets.h # 密钥配置文件(WiFi、飞书、LLM、博查搜索API等核心凭证)
├── agent/agent_loop.c # LLM 代理循环逻辑(联动博查搜索工具,处理搜索请求)
├── channels/feishu/feishu_bot.c # 飞书机器人消息处理(接收指令,触发LLM与博查搜索)
├── tools/tool_motor.c # 电机驱动核心代码
├── tools/tool_ws2812.c # WS2812 灯带驱动代码(可选)
├── tools/tool_servo.c # 舵机驱动核心代码(可选,如SG90舵机,适配小车转向等功能)
└── tools/tool_search.c # 博查(Tavily)搜索工具核心代码(可选,实现网页搜索功能,联动LLM)[/code]
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.git、https://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 次/月);额度不足可等待下月重置,或按需升级密钥。
找到 main/channels/feishu/feishu_bot.c 文件,在 handle_message_event 函数中,解析出用户消息(cleaned 变量)后,添加以下关键词匹配逻辑,实现小车前进、后退、左转、右转、停止的精准控制:
[code]#include "driver/gpio.h"
#include "tool_motor.h"
// 在解析出 cleaned 文本(用户消息)后,添加以下代码
if (strstr(cleaned, "前进") != NULL) {
// 左电机正转,右电机正转
gpio_set_level(18, 1); gpio_set_level(17, 0);
gpio_set_level(4, 1); gpio_set_level(5, 0);
feishu_send_message(chat_id, "小车前进"); // 飞书回复反馈
cJSON_Delete(content_obj);
return;
}
if (strstr(cleaned, "后退") != NULL) {
// 左电机反转,右电机反转
gpio_set_level(18, 0); gpio_set_level(17, 1);
gpio_set_level(4, 0); gpio_set_level(5, 1);
feishu_send_message(chat_id, "小车后退");
cJSON_Delete(content_obj);
return;
}
if (strstr(cleaned, "左转") != NULL) {
// 左电机反转,右电机正转(差速左转)
gpio_set_level(18, 0); gpio_set_level(17, 1);
gpio_set_level(4, 1); gpio_set_level(5, 0);
feishu_send_message(chat_id, "小车左转");
cJSON_Delete(content_obj);
return;
}
if (strstr(cleaned, "右转") != NULL) {
// 左电机正转,右电机反转(差速右转)
gpio_set_level(18, 1); gpio_set_level(17, 0);
gpio_set_level(4, 0); gpio_set_level(5, 1);
feishu_send_message(chat_id, "小车右转");
cJSON_Delete(content_obj);
return;
}
if (strstr(cleaned, "停止") != NULL || strstr(cleaned, "停") != NULL) {
// 所有电机停止
gpio_set_level(18, 0); gpio_set_level(17, 0);
gpio_set_level(4, 0); gpio_set_level(5, 0);
feishu_send_message(chat_id, "小车停止");
cJSON_Delete(content_obj);
return;
}[/code]
3. 重新编译烧录
# 重新编译并烧录,应用修改
[code]idf.py build flash monitor[/code]
4. 测试验证
在飞书中给机器人发送关键词:“前进”“后退”“左转”“右转”“停止”,小车会立即执行对应动作,同时飞书会收到“小车XX”的反馈消息,全程无需依赖 LLM 网络调用,响应迅速、稳定可靠。
由于 DeepSeek API 可能存在 TLS 证书、网络限制等问题,容易导致 LLM 调用失败,因此我们直接在飞书消息处理逻辑中添加关键词匹配,绕开 LLM 网络调用(后续直接调用),实现小车即时控制,稳定可靠且响应迅速。
1. 添加电机驱动文件
在项目 main/tools 目录下新建 tool_motor.c 和 tool_motor.h 文件,实现电机驱动核心函数(标准 MX1508/L9110S 驱动实现,关键函数为 car_diff_control(action),用于小车差速控制),核心逻辑如下:
[code]#include "driver/gpio.h"
#include "tool_motor.h"
// 初始化电机驱动 GPIO
void motor_init(void) {
gpio_config_t io_conf = {
.pin_bit_mask = (1ULL<<18) | (1ULL<<17) | (1ULL<<4) | (1ULL<<5),
.mode = GPIO_MODE_OUTPUT,
.pull_up_en = GPIO_PULLUP_DISABLE,
.pull_down_en = GPIO_PULLDOWN_DISABLE,
.intr_type = GPIO_INTR_DISABLE
};
gpio_config(&io_conf);
}
[/code]
烧录完成后,开发板自动重启,打开串口监视器(波特率 115200),若出现以下日志,即说明基础部署成功:
[code]I (xxx) wifi: Connected! IP: 192.168.x.x # WiFi 联网成功
I (xxx) feishu: Feishu WS connected # 飞书机器人连接成功
I (xxx) motor: Motor driver initialized (2 motors) # 电机驱动初始化成功[/code]
测试验证:在飞书中给机器人发送“你好”,若 LLM 网络正常,机器人会回复消息;若出现 LLM 调用失败(如 TLS 证书错误),可直接跳过,进入二次开发的关键词控制环节,不影响小车核心控制功能。
[code]# 烧录并打开串口监视器(替换 COMx 为实际串口,如 COM20、/dev/ttyACM0)
idf.py -p COMx flash monitor[/code]
烧录需严格执行以下关键步骤,否则无法进入下载模式,导致烧录卡壳:
1. 按住开发板 BOOT 键(不要松开);
2. 按下开发板 RST(EN)键,随即松开 RST 键;
3. 保持按住 BOOT 键,等待终端提示“Writing flash”(烧录开始);
4. 烧录完成后(提示“Hash of data verified”),松开 BOOT 键,开发板自动重启。
首次编译需下载 WiFi 驱动、SPIFFS 驱动等依赖包,耗时约 10 分钟,耐心等待即可;后续修改配置或源码后编译,会复用缓存,耗时可缩短至 1-2 分钟。https://github.com/memovai/mimiclaw 仓库已优化编译脚本,可减少编译报错概率。
[code]# 清除旧缓存和配置(修改配置/源码后必须执行)
idf.py fullclean
# 编译固件(成功提示 Project build complete)
idf.py build
[/code]
1. 设置目标芯片与配置
[code]# 设置目标芯片为 ESP32-S3(必须执行,否则固件不兼容)
idf.py set-target esp32s3
# 配置 PSRAM 和 Flash 大小(关键步骤)
idf.py menuconfig
# 操作步骤:进入 Memory 选项 → 勾选 Enable PSRAM(启用 8MB PSRAM)
# 进入 Serial Flasher Config 选项 → 设置 Flash 大小为 16MB
# 保存配置并退出(按 S 保存,Q 退出)[/code]
官方开源 https://github.com/memovai/mimiclaw,核心目录包含 main、docs、scripts 等,支持 ESP32-S3 专属配置,可直接用于部署。也可使用镜像仓库 https://gitcode.com/RealGao/mimiclaw 。
3. 配置 mimi_secrets.h(必填项,否则编译/运行失败)
该文件是 MimiClaw 核心配置文件,包含 WiFi、飞书、大模型 API 等关键信息,必须从模板复制生成,不可手动新建(手动新建会导致格式错误)。参考相关仓库配置规范,该文件支持 Tavily 搜索、代理等功能的灵活配置。
[code]# 从模板文件复制生成配置文件(必须执行)
cp main/mimi_secrets.h.example main/mimi_secrets.h
编辑 main/mimi_secrets.h 时,需重点填写 LLM、DeepSeek、博查(Tavily)搜索相关配置,三者均为启用对应功能的核心,属于必填项;其余可选项可保留默认或注释,具体配置如下:
#pragma once
// WiFi 配置(必须为 2.4GHz,ESP32-S3 不支持 5GHz,所有网络相关功能的基础)
#define MIMI_SECRET_WIFI_SSID "你的2.4G WiFi名称" // 无特殊字符、无空格,避免识别失败
#define MIMI_SECRET_WIFI_PASS "你的WiFi密码" // 严格区分大小写,输入无多余空格
// 飞书机器人配置(实现飞书控制核心,与LLM、博查功能联动)
#define MIMI_SECRET_FEISHU_APP_ID "你的飞书AppID"
#define MIMI_SECRET_FEISHU_APP_SECRET "你的飞书AppSecret"
// LLM(大语言模型)核心配置(基于DeepSeek实现,启用LLM对话功能必选)
#define MIMI_SECRET_API_KEY "你的DeepSeek API Key" // 从DeepSeek开放平台注册免费获取,核心凭证;若Key失效,需重新注册获取
#define MIMI_SECRET_MODEL "deepseek-chat" // 固定填写,不可修改,DeepSeek默认对话模型,适配LLM核心逻辑
#define MIMI_SECRET_MODEL_PROVIDER "openai" // 固定填写,不可修改,MimiClaw通过OpenAI兼容路径调用DeepSeek LLM,修改会导致调用失败
// 博查(Tavily)搜索 API 配置(LLM拓展功能,启用网页搜索必选,与LLM联动提升响应能力)
// 说明:Tavily是轻量高速的AI搜索工具,适配ESP32-S3轻量化运行,新用户每月1000次免费调用,无需绑定信用卡
#define MIMI_SECRET_TAVILY_KEY "tvly-xxxxxxxxxxxx" // 替换为自己的Tavily API Key,格式固定为tvly-开头,不可错写、漏写,否则初始化失败
#define MIMI_SECRET_SEARCH_KEY "" // 可选:Brave Search API Key,与Tavily二选一,优先使用Tavily,无需重复填写
// 代理配置(可选,国内用户若出现LLM、博查调用失败,可补充填写,解决网络受限问题)
#define MIMI_SECRET_PROXY_HOST "" // 代理主机地址,如"10.0.0.1"
#define MIMI_SECRET_PROXY_PORT "" // 代理端口,如"7897"[/code]
关键提示:
(1)飞书机器人需在飞书开放平台开启「im.message.receive_v1」事件订阅,否则无法接收用户消息,导致 LLM 对话、博查搜索及小车控制功能全部失效;
(2)LLM、DeepSeek、博查三者需同时配置正确,才能实现“飞书发消息→LLM解析→博查搜索(如需)→响应反馈”的完整流程;
(3)若仅需小车关键词控制,可跳过 LLM 和博查配置,不影响核心控制功能(后续再补上)。
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.git、https://gitee.com/mirrors/esp-idf.git 均会出现“网页解析失败,可能是不支持的网页类型,请检查网页或稍后重试”报错;同时,访问带“cd ”后缀的该类链接(如 https://gitee.com/espressif/esp-idf.git 后加“cd ”),也会触发相同报错,解决方案见下文常见问题;克隆 MimiClaw 仓库相关链接时,同类报错也会出现,同步补充对应解决办法。
[code]# 国内用户优先使用 Gitee 镜像克隆仓库
git clone -b v5.5.3 https://gitee.com/espressif/esp-idf.git
cd esp-idf
# Windows 系统(必须以管理员身份运行终端,否则权限不足)
install.bat # 自动安装所有依赖工具链
export.bat # 导入环境变量(每次新开终端必须执行)
# Linux/macOS 系统
./install.sh # 安装工具链
. ./export.sh # 导入环境变量(注意开头的点和空格,不可省略)
# 验证安装是否成功(成功提示版本为 v5.5.3)
idf.py --version[/code]
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 占用,切勿用于电机、灯带等外设,否则会导致通讯冲突、功能异常。具体引脚分配如下: