【花雕】嵌入式AI Agent 机器人:硬件小车、部署和主架构

2026-04-262237
AI 快速预览详细 收起
本文探讨了基于ESP32-S3微控制器的嵌入式AI Agent机器人的设计与应用。这种单芯片解决方案打破了传统机器人系统的高成本和复杂性,实现了感知-决策-执行的智能体闭环。MimiClaw项目展示了如何在一颗成本不足5美元的微控制器上实现完整的机器人功能,适用于教育机器人、桌面级服务机器人及低成本科研平台。


## 引言:机器人需要怎样的“大脑”?

传统机器人系统,似乎早已固化了“上位机 + 下位机”的分布式架构范式:一台运行 Linux 系统的高性能单板计算机(如树莓派、Jetson),承担着视觉处理、SLAM 建模、路径规划与 AI 交互的“脑力工作”;另一块单片机(STM32、Arduino 等),则专职负责电机控制、传感器采集等实时性要求极高的“体力活”。

这种架构固然能实现复杂功能,但也不可避免地带来了三大痛点:硬件成本居高不下、系统功耗难以控制、多设备协同的复杂度大幅提升,让机器人技术难以走进低成本场景。

而 ESP32‑S3 这类高性能微控制器的出现,彻底打破了这一困局。这款集成双核 Xtensa LX7 @ 240MHz 处理器、向量扩展指令、WiFi/蓝牙双模通信,以及最高 16MB Octal PSRAM 的芯片,让“单芯片机器人”的构想从理论走向现实。MimiClaw 正是这一趋势下的标志性实践——它在一颗成本不足 5 美元的微控制器上,完整实现了“感知(多通道交互)→ 决策(LLM 推理 + 上下文记忆)→ 执行(电机/灯光控制)”的智能体闭环,用极简硬件撬动了机器人 AI Agent 的全面落地。

本文将跳出单纯的代码解读,从机器人学经典范式(感知-规划-行动)的视角,重新审视 MimiClaw 的架构设计,探讨其在教育机器人、桌面级服务机器人、低成本科研平台等领域的应用潜力与工程启示,为嵌入式 AI 机器人的开发提供可借鉴的实战思路。

栏目开篇:
【花雕学编程】从代码到运动:MimiClaw 如何用 ESP32‑S3 微控制器撬动机器人 AI Agent 的全面落地
https://blog.csdn.net/weixin_416 ... 1001.2014.3001.5502

【花雕】嵌入式AI Agent 机器人:硬件小车、部署和主架构图1

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(17)
驴友花雕
驴友花雕
作者
## 四、从调试经验回看架构
之前遇到的 TLS 错误,恰好印证了架构设计的合理性,也让我们更深刻地理解了各模块的关联:
[code]E (1291766) esp-tls-mbedtls: Failed to set client configurations
Guru Meditation Error: Core 1 panic'ed (IllegalInstruction)[/code]
该错误证实了架构图中 LLM Proxy 模块直接依赖 mbedTLS 组件,而错误的根源是 menuconfig 中未开启 TLS server verification。当我们理解了 llm_proxy_init() 与 SSL 库的关联后,修复这类问题就不再是盲目搜索,而是有明确方向的配置检查。
同样,飞书消息“Message from ou_... : 你好[握手]”能被成功处理,正是 outbound_dispatch_task 从消息总线取到回复后,根据 channel 字段正确路由回飞书的结果,这也体现了消息总线和出站派发任务的协同作用。
## 五、给你的动手路线图
在拥有可正常运行的设备、看懂系统架构后,可通过以下实践内化理解,二次开发亲手改造 MimiClaw:
1. 离线模式实验
故意留空 Wi-Fi 密码,刷入固件后观察:红灯是否正常亮起?屏幕是否有显示?串口 CLI 可输入哪些命令?通过该实验,能真切体会 MimiClaw“不联网也能正常工作”的架构优势。
2. “摇一摇”触发配置切换
拿起开发板快速晃动(需连接 IMU 和屏幕),观察配置页面是否会切换。config_screen_toggle 回调函数,正是架构图中“IMU → User Interface”这条交互链路的具体实现。
3. 写一个自定义技能
在 skills/ 目录下模仿已有 .c 文件,编写一个“情绪灯”技能,实现 skill_init(初始化)、skill_execute(执行)、skill_deinit(销毁)三个核心函数,再将其注册到 skill_loader 中。无需修改框架其他代码,即可为机器人新增一种行为。
4. 调校机器人的灵魂
通过串口 CLI 或直接编辑 SPIFFS 中的 SOUL.md 文件,定义机器人的人格。例如设置“用喵星人口吻回答,句尾必须加上‘咔嚓咔嚓’”,几分钟后,一个符合你预期人设的机器人就会诞生。
5. 纯本地闭环
假如编写一个 FreeRTOS 任务,每秒检查一次温度传感器数值。若温度超过 28°C 且 Agent 当前未处于移动状态,则直接驱动风扇。这是真正端侧智能的雏形,响应延迟可控制在毫秒级。
## 结语
MimiClaw 的真正价值,不在于它能让 ESP32 发出一条消息,而在于它提供了一个轻量、模块化、可离线的 AI Agent 开发底座。理解它的四层架构和启动流程,就相当于拿到了这个底座的“说明书”,从此可以尝试地添加传感器、执行器与大模型,而不会破坏系统原有的智能结构。
“迷你小龙虾”已经活了,它有了心跳、眼睛和手脚。接下来要做的,就是按照设想,逐步进行二次开发,一点一点教会它如何感知世界、如何自主行动。

附录 MimiClaw 的架构与主程序概览相关参考资料
1、《【花雕动手做】全球首款 MCU 级 AI 智能体开盒:MimiClaw 架构全解析,把 “智能龙虾” 跑在 ESP32 上》
https://blog.csdn.net/weixin_41659040/article/details/159711424
2、《【花雕动手做】 AI 迷你小龙虾(MimiClaw)主程序:综合分析 + 深度解读 + 总体功能》
https://blog.csdn.net/weixin_41659040/article/details/159758142
3、《【花雕动手做】打破AI轻量化极限!MimiClaw:国产EP32S3 芯片上跑的纯C轻量AI Agent》
https://blog.csdn.net/weixin_41659040/article/details/152157480
4、《【花雕动手做】MimiClaw 嵌入式AI Agent系统架构剖析——基于FreeRTOS的多线程通信与外设协同机制》
https://blog.csdn.net/weixin_41659040/article/details/160352124
驴友花雕
驴友花雕
作者
完整的 mimi.c 本质上是上述架构图的线性实现,这里将其拆分为 5 个有明确意图的启动阶段,清晰看懂机器人的“启动逻辑”。
阶段一:硬件感官就绪 —— Wi-Fi 未连,感官先活
[code]display_init(); display_show_banner(); // 屏幕亮起,打出 Logo
rgb_init(); rgb_set(255, 0, 0); // 红灯:系统启动中
button_Init(); // 物理按钮就绪
imu_manager_init(); // 运动传感器开始工作
imu_manager_set_shake_callback(config_screen_toggle); // 摇一摇切配置页[/code]
这 5 行代码蕴含着重要的设计理念:机器人应像生物一样,即使“大脑”(联网功能)尚未上线,感官和基础反射也要先正常工作。在烧录固件后等待 Wi-Fi 连接的几十秒内,设备会通过红灯和屏幕向用户传递“正在启动、正常运行”的信号,提升用户体验。
阶段二:基础地基 —— 搭建系统骨架
[code]init_nvs(); // 1. 键值库:记住你的 ApiKey
esp_event_loop_create_default(); // 2. 事件循环:组件间的邮局
init_spiffs(); // 3. 文件系统:灵魂和记忆的硬盘[/code]
这三步是整个系统的“骨架”,缺一不可:没有 NVS,Wi-Fi 密码每次重启都需重新输入;没有事件循环,飞书 WebSocket 无法实现异步通信;没有 SPIFFS,SOUL.md 等核心文件无处存放,机器人也就没有了“灵魂”和“记忆”。
阶段三:大脑初始化 —— 服务全部“插上电”
[code]message_bus_init(); // 神经:消息总线
memory_store_init(); // 记忆:加载 MEMORY.md 等
skill_loader_init(); // 技能:加载可热插拔的扩展
session_mgr_init(); // 会话:管理多轮对话上下文
// ...
llm_proxy_init(); // LLM 代理:包装 API 调用
tool_registry_init(); // 工具:注册 25 个执行函数
cron_service_init(); // 定时:计划任务
heartbeat_init(); // 心跳:存活报告
agent_loop_init(); // 主循环:Agent 决策任务[/code]
注意此处仅执行“初始化(init)”,未执行“启动(start)”。这种“初始化与启动分离”的设计,使得系统可在离线状态下完成所有核心组件的初始化,待 Wi-Fi 就绪后,再一键启动所有依赖网络的功能,提升系统灵活性。
阶段四:离线先行,在线随后 —— 鲁棒性的核心
[code]serial_cli_init(); // 串口 CLI 立刻开启,你随时可以插 USB 调试
if (wifi_manager_wait_connected(30000) == ESP_OK) {
// 联网成功后,才启动这些需要网络的服务
telegram_bot_start();
agent_loop_start();
cron_service_start();
heartbeat_start();
ws_server_start();
// 创建出站派发任务,把回复正确地送回给你
xTaskCreatePinnedToCore(outbound_dispatch_task, ...);
}[/code]
这是 MimiClaw 鲁棒性设计的核心:即使联网失败(如之前遇到的 TLS 崩溃),串口 CLI 依然可用,Wi-Fi AP 热点也能正常工作,不会出现“彻底死机”的情况。这种“离线底座”设计,为系统设置了不可突破的底线,确保调试和基础操作始终可用。
阶段五:双核任务分配 —— 高效协同,避免卡顿
ESP32-S3 拥有两个 CPU 核,MimiClaw 对双核进行了合理分工,保障核心功能的流畅性:
- Core 0:运行 Wi-Fi 协议栈、LWIP、飞书 WebSocket 客户端的网络 I/O 以及串口 CLI,负责“对外通信”和“基础调试”。
- Core 1:运行 Agent 决策循环和消息派发任务,负责“核心思考”和“动作执行”。
这种分工确保了对话响应和电机控制不会被网络波动卡住,因为最核心的智能体决策的运行环境是独立的,不受网络组件的干扰。
驴友花雕
驴友花雕
作者
## 三、mimi() 源码全解:一场精心编排的启动舞步
MimiClaw 主程序 mimi.c 源代码如下:
[code]#include
#include
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "esp_event.h"
#include "esp_system.h"
#include "esp_heap_caps.h"
#include "esp_spiffs.h"
#include "nvs_flash.h"
#include "mimi_config.h"
#include "bus/message_bus.h"
#include "wifi/wifi_manager.h"
#include "telegram/telegram_bot.h"
#include "llm/llm_proxy.h"
#include "agent/agent_loop.h"
#include "memory/memory_store.h"
#include "memory/session_mgr.h"
#include "gateway/ws_server.h"
#include "cli/serial_cli.h"
#include "proxy/http_proxy.h"
#include "tools/tool_registry.h"
#include "display/display.h"
#include "buttons/button_driver.h"
#include "ui/config_screen.h"
#include "imu/imu_manager.h"
#include "rgb/rgb.h"
#include "skills/skill_loader.h"
static const char *TAG = "mimi";
static esp_err_t init_nvs(void)
{
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_LOGW(TAG, "NVS partition truncated, erasing...");
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
return ret;
}
static esp_err_t init_spiffs(void)
{
esp_vfs_spiffs_conf_t conf = {
.base_path = MIMI_SPIFFS_BASE,
.partition_label = NULL,
.max_files = 10,
.format_if_mount_failed = true,
};
esp_err_t ret = esp_vfs_spiffs_register(&conf);
if (ret != ESP_OK) {
ESP_LOGE(TAG, "SPIFFS mount failed: %s", esp_err_to_name(ret));
return ret;
}
size_t total = 0, used = 0;
esp_spiffs_info(NULL, &total, &used);
ESP_LOGI(TAG, "SPIFFS: total=%d, used=%d", (int)total, (int)used);
return ESP_OK;
}
/* Outbound dispatch task: reads from outbound queue and routes to channels */
static void outbound_dispatch_task(void *arg)
{
ESP_LOGI(TAG, "Outbound dispatch started");
while (1) {
mimi_msg_t msg;
if (message_bus_pop_outbound(&msg, UINT32_MAX) != ESP_OK) continue;
ESP_LOGI(TAG, "Dispatching response to %s:%s", msg.channel, msg.chat_id);
if (strcmp(msg.channel, MIMI_CHAN_TELEGRAM) == 0) {
telegram_send_message(msg.chat_id, msg.content);
} else if (strcmp(msg.channel, MIMI_CHAN_WEBSOCKET) == 0) {
ws_server_send(msg.chat_id, msg.content);
} else if (strcmp(msg.channel, MIMI_CHAN_SYSTEM) == 0) {
ESP_LOGI(TAG, "System message [%s]: %.128s", msg.chat_id, msg.content);
} else {
ESP_LOGW(TAG, "Unknown channel: %s", msg.channel);
}
free(msg.content);
}
}
void app_main(void)
{
/* Silence noisy components */
esp_log_level_set("esp-x509-crt-bundle", ESP_LOG_WARN);
ESP_LOGI(TAG, "========================================");
ESP_LOGI(TAG, " MimiClaw - ESP32-S3 AI Agent");
ESP_LOGI(TAG, "========================================");
/* Print memory info */
ESP_LOGI(TAG, "Internal free: %d bytes",
(int)heap_caps_get_free_size(MALLOC_CAP_INTERNAL));
ESP_LOGI(TAG, "PSRAM free: %d bytes",
(int)heap_caps_get_free_size(MALLOC_CAP_SPIRAM));
/* Display + input */
ESP_ERROR_CHECK(display_init());
display_show_banner();
ESP_ERROR_CHECK(rgb_init());
rgb_set(255, 0, 0);
button_Init();
config_screen_init();
imu_manager_init();
imu_manager_set_shake_callback(config_screen_toggle);
/* Phase 1: Core infrastructure */
ESP_ERROR_CHECK(init_nvs());
ESP_ERROR_CHECK(esp_event_loop_create_default());
ESP_ERROR_CHECK(init_spiffs());
/* Initialize subsystems */
ESP_ERROR_CHECK(message_bus_init());
ESP_ERROR_CHECK(memory_store_init());
ESP_ERROR_CHECK(skill_loader_init());
ESP_ERROR_CHECK(session_mgr_init());
ESP_ERROR_CHECK(wifi_manager_init());
ESP_ERROR_CHECK(http_proxy_init());
ESP_ERROR_CHECK(telegram_bot_init());
ESP_ERROR_CHECK(llm_proxy_init());
ESP_ERROR_CHECK(tool_registry_init());
ESP_ERROR_CHECK(cron_service_init());
ESP_ERROR_CHECK(heartbeat_init());
ESP_ERROR_CHECK(agent_loop_init());
/* Start Serial CLI first (works without WiFi) */
ESP_ERROR_CHECK(serial_cli_init());
/* Start WiFi */
esp_err_t wifi_err = wifi_manager_start();
if (wifi_err == ESP_OK) {
ESP_LOGI(TAG, "Scanning nearby APs on boot...");
wifi_manager_scan_and_print();
ESP_LOGI(TAG, "Waiting for WiFi connection...");
if (wifi_manager_wait_connected(30000) == ESP_OK) {
ESP_LOGI(TAG, "WiFi connected: %s", wifi_manager_get_ip());
/* Start network-dependent services */
ESP_ERROR_CHECK(telegram_bot_start());
ESP_ERROR_CHECK(agent_loop_start());
cron_service_start();
heartbeat_start();
ESP_ERROR_CHECK(ws_server_start());
/* Outbound dispatch task */
xTaskCreatePinnedToCore(
outbound_dispatch_task, "outbound",
MIMI_OUTBOUND_STACK, NULL,
MIMI_OUTBOUND_PRIO, NULL, MIMI_OUTBOUND_CORE);
ESP_LOGI(TAG, "All services started!");
} else {
ESP_LOGW(TAG, "WiFi connection timeout. Check MIMI_SECRET_WIFI_SSID in mimi_secrets.h");
}
} else {
ESP_LOGW(TAG, "No WiFi credentials. Set MIMI_SECRET_WIFI_SSID in mimi_secrets.h");
}
ESP_LOGI(TAG, "MimiClaw ready. Type 'help' for CLI commands.");
}
[/code]
驴友花雕
驴友花雕
作者
## 二、整体架构:四个层次,一个大脑
MimiClaw 的系统可划分为清晰的四层,各层职责明确、协同工作,共同构成机器人的完整“生命体”:
1. 通道层 — 耳朵与嘴巴
Telegram、WebSocket(含飞书)是消息的核心入口。所有用户发送的指令(如“你好[握手]”)都将通过这里进入系统,并送入消息队列排队,等待后续处理,是机器人与外界交互的“桥梁”。
2. 智能体核心 — 大脑的思考与决策
这是 MimiClaw 最核心、最精彩的部分。Agent Loop 作为系统的“心跳”,持续从消息总线拉取消息,结合记忆(SOUL.md、MEMORY.md 等)和可用的技能/工具,判断是直接回答用户指令,还是调用云端 LLM 生成响应,最终将回复推回消息总线。
Tool Registry(工具注册表)中注册了 25 个实用工具,涵盖 LED 控制、电机驱动、文件读写、定时任务等,这些工具相当于机器人的“手和脚”,让思考决策能够转化为实际动作。
3. 增强模块 — 让感官更丰富
该模块为机器人赋予了物理感知能力,使其不再只是对话框中的文字,而是一个有“感知”的物理存在:IMU(惯性测量单元)用于感知设备的摇动、倾角;RGB LED 用于展示系统状态和“情绪”;物理按钮可实现紧急打断或模式切换,提升交互的便捷性和安全性。
4. 存储层 — 记忆的根
存储层是机器人“记忆”的载体,保障数据不丢失:SPIFFS 文件系统存放在 16MB Flash 中,用于存储人格定义、对话历史、技能脚本等核心数据;NVS(非易失性存储)用于保存 Wi-Fi 密码和运行时修改的配置(如通过 set_model deepseek-chat 写入的模型配置)。即使设备意外断电,记忆和配置也能完整保留。
驴友花雕
驴友花雕
作者
## 一、为什么你需要懂它的结构?
如果你的目标是让机器人真正理解你、记住你、自主行动,那你迟早要面对代码,进行符合实际使用场景的二次开发。好在 MimiClaw 并没有把复杂性隐藏在黑盒里,它的 mimi 像是精细编排的交响乐,每个函数都承载着一个明确的设计意图。
从之前系列测试与实验中,遇到的飞书连接成功、电机控制正常,再到调用 deepseek-chat 模型时因证书验证失败引发的系统重启,这些经验都指向同一个事实:架构决定了调试的方向。现在我们就结合架构图与 mimi.c 的源码,对 MimiClaw 进行一次彻底的解剖。

驴友花雕
驴友花雕
作者
## 第三部分,MimiClaw 的架构与主程序概览
这是官方给出的一张手绘架构图

驴友花雕
驴友花雕
作者
2、config_show – 查看当前配置

配置项解读
WiFi 就绪:设备记住了你的 Wi-Fi zhz3,密码也存好了。[build] 意味着它是编译时写进去的,而不是运行中修改的。
模型已切换:这一行 Model: deepseek-chat [NVS] 非常关键。
它证实了你刚才的 set_model 命令不仅生效了,而且已经被保存到了设备内部的 NVS 永久存储区。
即使今天拔电重启,它依然会默认尝试使用 DeepSeek 模型,而非你代码里原本默认的那个。
提供者关系:Provider: openai [build] 说明虽然模型名是 deepseek-chat,但你的 MimiClaw 会把它当成一个兼容 OpenAI 接口的模型来处理。这恰好是调用 DeepSeek 的正确姿势,无需额外改动。
其他空项:Telegram Bot Token 和搜索服务暂时空着,这完全没问题。因为你正在使用飞书通道,所以不需要 TG。搜索也是可选的增强功能,不影响核心对话和机器人控制。
3、实验场景图

驴友花雕
驴友花雕
作者
## 第五步:启动验证与运行
通过超级终端直接交互
在 mimi> 提示符下可以输入命令:
1、help – 查看所有命令


驴友花雕
驴友花雕
作者
## 第四步:编译与烧录
1、编译项目
[code]idf.py build[/code]
首次编译时间较长,请耐心等待。如果不想每次都从头编译,可跳过 fullclean。
2、将开发板连接到电脑
使用准备好的数据线将ESP32-S3开发板连接至电脑。
3、烧录固件
[code]# 将 /dev/ttyUSB0 替换为你的开发板实际串口号(可通过 ls /dev/tty* 查看,macOS为/dev/cu.*,Windows为COMx等)
idf.py -p /dev/ttyUSB0 flash[/code]
4、烧录完成后,开发板可能会自动重启。
5、成功部署MimiClaw的串口返回情况

驴友花雕
驴友花雕
作者
## 第三步:获取并配置 Mimiclaw
1、克隆项目代码
[code]git clone https://github.com/memovai/mimiclaw.git
cd mimiclaw[/code]
2、如果克隆失败,可以尝试使用Gitee镜像:
[code]git clone https://gitee.com/vt-developer/mimiclaw.git[/code]
3、设置目标芯片
[code]idf.py set-target esp32s3[/code]
4、配置项目密钥
这是核心步骤,需要将你的各种Token和密码填入配置文件。
首先复制模板文件:
[code]cp main/mimi_secrets.h.example main/mimi_secrets.h[/code]
然后用你习惯的文本编辑器(如 nano, vim, code)打开 main/mimi_secrets.h 文件,填入你的信息。
下面是一个参考配置示例,其中粗体部分是你需要替换的内容:
[code]// main/mimi_secrets.h - 配置示例
// --- 网络 ---
#define MIMI_SECRET_WIFI_SSID "你的WiFi名称"
#define MIMI_SECRET_WIFI_PASS "你的WiFi密码"
// --- 模型 (根据你要使用哪个模型,去掉对应的注释即可) ---
// 如果使用 DeepSeek
#define MIMI_SECRET_API_KEY "sk-你的DeepSeek密钥"
#define MIMI_SECRET_MODEL "deepseek-chat"
#define MIMI_SECRET_MODEL_PROVIDER "openai" // DeepSeek兼容OpenAI接口
// ... 以及在 mimi_config.h 中设置 MIMI_OPENAI_API_URL 为 "https://api.deepseek.com/v1/chat/completions"
// 如果使用 Claude (Anthropic)
// #define MIMI_SECRET_API_KEY "sk-ant-api03-你的Anthropic密钥"
// #define MIMI_SECRET_MODEL_PROVIDER "anthropic"
// --- 通信渠道 (至少选一个) ---
// Telegram
#define MIMI_SECRET_TG_TOKEN "你的Telegram Bot Token"
// 飞书
#define MIMI_SECRET_FEISHU_APP_ID "你的飞书应用App ID"
#define MIMI_SECRET_FEISHU_APP_SECRET "你的飞书应用App Secret"
// --- 可选功能 ---
// 搜索功能
#define MIMI_SECRET_SEARCH_KEY "你的Tavily搜索密钥"
// 代理设置 (国内用户访问Telegram等服务时可能需要)
#define MIMI_SECRET_PROXY_HOST "你的代理服务器地址"
#define MIMI_SECRET_PROXY_PORT "你的代理端口"[/code]
驴友花雕
驴友花雕
作者
## 第二步:搭建开发环境 (ESP-IDF)
Mimiclaw 基于乐鑫官方开发框架 ESP-IDF v5.5+,推荐使用 v5.5.3 版本。
1、下载安装脚本 (国内用户推荐)
为了获得更快的下载速度,推荐使用乐鑫官方的Gitee镜像安装工具。
[code]git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
cd esp-gitee-tools
# 运行安装脚本,按提示选择版本 (推荐v5.5.3) 和目标芯片 (esp32s3)
./install.sh [/code]
2、激活环境
安装成功后,你需要为每一个新打开的终端窗口激活ESP-IDF环境,才能使用相关命令。
[code]# 将以下命令中的路径替换为你的实际安装路径
. $HOME/esp/esp-idf/export.sh[/code]
提示:可以将此行添加到你的shell配置文件(如 ~/.bashrc)中,以避免每次手动激活。
3、打开CMD

驴友花雕
驴友花雕
作者
## 第一步:部署前准备:硬件与账号
在开始之前,请确保你已准备好以下“物料”:
1、核心开发板:ESP32-S3 N16R8。这是部署成功最关键的一步,必须选用 16MB Flash 和 8MB PSRAM 的版本(如 ESP32-S3-DevKitC-1-N16R8)。容量不足会导致固件烧录失败或设备反复重启。
推荐型号:
乐鑫官方 ESP32-S3-DevKitC-1-N16R8:兼容性最佳,推荐所有开发者使用。
小智AI开发板 (N16R8版本):集成基础外设,新手友好,开箱即用。
行空板K10:DFRobot推出的集成ESP32-S3 N16R8与多种传感器、屏幕、麦克风的学习板。
2、USB数据线:必须支持数据传输。仅充电用的线无法用于烧录,请使用开发板原装线或品牌高速数据线。
3、API密钥 (模型调用):Mimiclaw 调用云端大模型需要API Key。
(1)Anthropic API Key:从 console.anthropic.com 获取。
(2)DeepSeek API Key:从 platform.deepseek.com 获取,价格便宜,非常适合国内用户。
(3)Bot Token (通信渠道):MimiClaw 通过聊天机器人交互。
(4)Telegram Bot Token:在 Telegram 找 @BotFather 创建一个Bot即可获取。
(5)飞书应用凭证:在飞书开放平台创建一个“企业自建应用”,开启机器人能力。需要获取应用的 App ID 和 App Secret。
(6)(可选) 搜索API Key:如需网页搜索功能,可从 app.tavily.com 获取免费的 Tavily API Key。

驴友花雕
驴友花雕
作者
## 第二部分,实际部署迷你小龙虾 mimiclaw
MimiClaw官网与代码仓库
官方网站:https://mimiclaw.io
代码仓库:https://github.com/memovai/mimiclaw
国内镜像:https://gitcode.com/RealGao/mimiclaw



关于部署 MimiClaw 的参考资料:
1、《【花雕动手做】ESP32-S3 成功部署 MimiClaw(迷你小龙虾):本地调用 DeepSeek API 的部分实操记录》
https://blog.csdn.net/weixin_41659040/article/details/159633206
2、《【花雕动手做】ESP32-S3 开发板部署迷你小龙虾 MimiClaw 完整流程+避坑指南》
https://blog.csdn.net/weixin_41659040/article/details/160185171
3、《【花雕动手做】从“能听会算”到“自主行动”:MimiClaw 开启嵌入式 AI 的新篇章》
https://blog.csdn.net/weixin_41659040/article/details/160351859
4、《【花雕动手做】打破AI轻量化极限!MimiClaw:国产EP32S3 芯片上跑的纯C轻量AI Agent》
https://blog.csdn.net/weixin_41659040/article/details/152157480
驴友花雕
驴友花雕
作者
8、最后选用的是这款,6.5V---9V电压输入,板载稳压电路,输出3.3V和5V

9、相关引脚定义说明

10、实际组装



驴友花雕
驴友花雕
作者
7、44脚的专用ESP32S3 IO扩展板市面上不多,总共找到三种



驴友花雕
驴友花雕
作者
4、主控开发板使用标准的N16R8 ESP32-S3-DevKitC-1,P44脚(最好是选带有WiFi天线接口的,有时信号不理想)



5、小车动力电源选择了7.4伏的2S锂电

6、WS2812灯带,9颗灯珠

驴友花雕
驴友花雕
作者
## 第一部分,搭建一个简单有效硬件小车的实验测试平台
1、小车底盘,选择了一款1.5mm厚的铝合金4WD四轮底盘,比较专业,便于后续二次开发的相关硬件拓展。

2、二只差速电机,使用了最普通的小减速比48:1的快速TT马达,后续升级再另行更换电动机。

3、电机驱动模块,使用了手头有的L9110
主要参数
双L9110S芯片的电机驱动
模块供电电压:2.5-12V
适合的电机范围:电机工作电压2.5v-12V之间,最大工作电流0.8A,目前市面上的智能小车电压和电流都在此范围内
可以同时驱动2个直流电机,或者1个4线2相式步进电机。
PCB板尺寸:2.8cm*2.1cm 超小体积,适合组装
设有固定安装孔,直径:3mm

- 没有更多了 -