ESP-HI:xiaozhi-esp32低成本机器狗
2026-02-04 05:00:24作者:毕习沙Eudora
痛点:传统机器狗开发门槛高,成本难以承受
还在为机器狗项目动辄上千元的成本而头疼吗?还在为复杂的运动控制算法和硬件设计而烦恼?ESP-HI 超低成本机器狗项目为你提供了一个革命性的解决方案——仅需百元级成本,即可打造具备AI对话能力的智能机器狗!
读完本文,你将获得:
- ✅ ESP-HI机器狗的完整硬件搭建指南
- ✅ 软件配置与固件烧录详细步骤
- ✅ 数十种动作控制与AI语音交互实现
- ✅ Web远程控制与MCP协议扩展能力
- ✅ 低成本优化方案与技术细节解析
项目概述:百元级AI机器狗的诞生
ESP-HI是ESP Friends开源的一款基于ESP32C3的超低成本AI对话机器人。该项目通过对ESP32-C3外设的充分挖掘,仅需最少的板级硬件即可实现拾音和发声,同步优化了软件,降低内存与Flash占用,在资源受限的情况下同时实现了唤醒词检测与多种外设驱动。
核心技术特性
| 特性 | 说明 | 优势 |
|---|---|---|
| 主控芯片 | ESP32-C3 RISC-V处理器 | 低成本、低功耗、高性能 |
| 显示系统 | 0.96寸彩屏表情显示 | 丰富的情绪表达 |
| 音频系统 | ADC拾音 + PDM发声 | 硬件成本极低 |
| 运动控制 | 4路舵机控制 | 实现数十种动作 |
| 通信协议 | Wi-Fi + MCP控制 | 远程Web控制 |
| AI能力 | 语音唤醒 + 对话 | 智能交互体验 |
硬件架构:极简设计的艺术
核心硬件组件
flowchart TD
A[ESP32-C3主控] --> B[0.96寸SPI彩屏]
A --> C[ADC麦克风]
A --> D[PDM扬声器]
A --> E[4路舵机控制]
A --> F[WS2812 RGB灯]
A --> G[功能按键x3]
E --> H[前左舵机 GPIO21]
E --> I[前右舵机 GPIO19]
E --> J[后左舵机 GPIO20]
E --> K[后右舵机 GPIO18]
引脚分配详解
// 音频系统配置
#define AUDIO_ADC_MIC_CHANNEL 2
#define AUDIO_PDM_SPEAK_P_GPIO GPIO_NUM_6
#define AUDIO_PDM_SPEAK_N_GPIO GPIO_NUM_7
#define AUDIO_PA_CTL_GPIO GPIO_NUM_3
// 舵机控制引脚
#define FL_GPIO_NUM GPIO_NUM_21 // 前左舵机
#define FR_GPIO_NUM GPIO_NUM_19 // 前右舵机
#define BL_GPIO_NUM GPIO_NUM_20 // 后左舵机
#define BR_GPIO_NUM GPIO_NUM_18 // 后右舵机
// 显示系统配置
#define DISPLAY_MOSI_PIN GPIO_NUM_4
#define DISPLAY_CLK_PIN GPIO_NUM_5
#define DISPLAY_DC_PIN GPIO_NUM_10
// 按键控制
#define BOOT_BUTTON_GPIO GPIO_NUM_9
#define MOVE_WAKE_BUTTON_GPIO GPIO_NUM_0
#define AUDIO_WAKE_BUTTON_GPIO GPIO_NUM_1
软件实现:资源受限环境的优化艺术
系统架构设计
graph TB
subgraph "应用层"
A[语音交互应用]
B[表情显示系统]
C[动作控制系统]
D[Web控制服务]
end
subgraph "服务层"
E[音频服务]
F[Wi-Fi服务]
G[MCP服务器]
H[设备状态管理]
end
subgraph "驱动层"
I[音频编解码]
J[显示驱动]
K[舵机控制]
L[外设驱动]
end
A --> E
B --> J
C --> K
D --> G
E --> I
F --> L
G --> H
MCP控制协议实现
ESP-HI通过MCP(Model Context Protocol)协议实现了丰富的控制功能:
// 基础动作控制工具
mcp_server.AddTool("self.dog.basic_control", "机器人的基础动作控制",
PropertyList({Property("action", kPropertyTypeString)}),
[this](const PropertyList& properties) -> ReturnValue {
const std::string& action = properties["action"].value<std::string>();
if (action == "forward") {
servo_dog_ctrl_send(DOG_STATE_FORWARD, NULL); // 前进
} else if (action == "backward") {
servo_dog_ctrl_send(DOG_STATE_BACKWARD, NULL); // 后退
} else if (action == "turn_left") {
servo_dog_ctrl_send(DOG_STATE_TURN_LEFT, NULL); // 左转
} else if (action == "turn_right") {
servo_dog_ctrl_send(DOG_STATE_TURN_RIGHT, NULL); // 右转
} else if (action == "stop") {
servo_dog_ctrl_send(DOG_STATE_IDLE, NULL); // 停止
}
return true;
});
// 扩展动作控制工具
mcp_server.AddTool("self.dog.advanced_control", "机器人的扩展动作控制",
PropertyList({Property("action", kPropertyTypeString)}),
[this](const PropertyList& properties) -> ReturnValue {
const std::string& action = properties["action"].value<std::string>();
if (action == "sway_back_forth") {
servo_dog_ctrl_send(DOG_STATE_SWAY_BACK_FORTH, NULL); // 前后摇摆
} else if (action == "lay_down") {
servo_dog_ctrl_send(DOG_STATE_LAY_DOWN, NULL); // 趴下
} else if (action == "shake_hand") {
servo_dog_ctrl_send(DOG_STATE_SHAKE_HAND, NULL); // 握手
} else if (action == "jump_forward") {
servo_dog_ctrl_send(DOG_STATE_JUMP_FORWARD, NULL); // 向前跳跃
}
return true;
});
支持的动作类型汇总
| 动作类别 | 动作名称 | 功能描述 | 控制指令 |
|---|---|---|---|
| 基础移动 | 前进(Forward) | 向前移动 | DOG_STATE_FORWARD |
| 后退(Backward) | 向后移动 | DOG_STATE_BACKWARD |
|
| 左转(Turn Left) | 向左旋转 | DOG_STATE_TURN_LEFT |
|
| 右转(Turn Right) | 向右旋转 | DOG_STATE_TURN_RIGHT |
|
| 停止(Stop) | 停止运动 | DOG_STATE_IDLE |
|
| 情感表达 | 前后摇摆(Sway) | 表达兴奋 | DOG_STATE_SWAY_BACK_FORTH |
| 趴下(Lay Down) | 休息姿态 | DOG_STATE_LAY_DOWN |
|
| 收回腿部(Retract) | 收缩姿态 | DOG_STATE_RETRACT_LEGS |
|
| 交互动作 | 握手(Shake Hand) | 友好互动 | DOG_STATE_SHAKE_HAND |
| 伸懒腰(Stretch) | 舒展身体 | DOG_STATE_SHAKE_BACK_LEGS |
|
| 跳跃(Jump) | 向前跳跃 | DOG_STATE_JUMP_FORWARD |
开发环境搭建与编译
一键编译脚本
# 使用项目提供的编译脚本
python ./scripts/release.py esp-hi
# 手动编译步骤
idf.py set-target esp32c3
idf.py menuconfig # 根据config.json配置参数
idf.py build
关键配置参数
{
"target": "esp32c3",
"sdkconfig_append": [
"CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y",
"CONFIG_PARTITION_TABLE_CUSTOM_FILENAME=\"partitions/v1/4m_esp-hi.csv\"",
"CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y",
"CONFIG_ESP_CONSOLE_NONE=y",
"CONFIG_USE_ESP_WAKE_WORD=y",
"CONFIG_COMPILER_OPTIMIZATION_SIZE=y"
]
}
Web控制界面:远程操控的便捷之道
ESP-HI内置了一个控制身体运动的WebUI,只需将手机与ESP-HI连接到同一个Wi-Fi下,访问 http://esp-hi.local/ 即可使用。
Web控制功能特性
pie title Web控制功能分布
"动作控制" : 45
"状态监控" : 25
"灯光控制" : 15
"系统设置" : 10
"语音配置" : 5
灯光控制实现
// RGB灯光控制工具
mcp_server.AddTool("self.light.set_rgb", "设置RGB颜色",
PropertyList({
Property("r", kPropertyTypeInteger, 0, 255),
Property("g", kPropertyTypeInteger, 0, 255),
Property("b", kPropertyTypeInteger, 0, 255)
}), [this](const PropertyList& properties) -> ReturnValue {
int r = properties["r"].value<int>();
int g = properties["g"].value<int>();
int b = properties["b"].value<int>();
led_on_ = true;
SetLedColor(r, g, b);
return true;
});
烧录与调试技巧
烧录注意事项
由于舵机控制会占用ESP-HI的USB Type-C接口,导致无法连接电脑,需要特殊操作:
-
烧录模式进入:
- 断开ESP-HI的电源,只留头部,不要连接身体
- 按住ESP-HI的按钮并连接电脑
- ESP32C3进入烧录模式,可使用电脑烧录程序
-
日志查看配置:
# 设置控制台输出到USB Serial/JTAG CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG=y
资源优化策略
| 优化方面 | 具体措施 | 效果 |
|---|---|---|
| 内存优化 | 静态音频编解码器实例 | 减少堆内存分配 |
| Flash优化 | 尺寸优化编译选项 | 减少固件体积 |
| 网络优化 | 减少Socket数量 | 降低内存占用 |
| 任务优化 | 调整任务栈大小 | 平衡性能与资源 |
应用场景与扩展可能
典型应用场景
- 教育实验:机器人编程入门理想平台
- 智能家居:移动式家庭助理机器人
- 研究开发:低成本机器人算法验证
- 娱乐互动:智能宠物机器人陪伴
扩展开发方向
- 传感器扩展:添加距离传感器、IMU等
- 视觉能力:集成摄像头进行视觉识别
- 集群控制:多机器狗协同工作
- 云端集成:与云服务深度整合
总结与展望
ESP-HI项目成功证明了在百元级成本下实现智能机器狗的可行性,其技术特点包括:
- 极致的成本控制:通过硬件选型和软件优化实现低成本
- 丰富的功能体验:支持语音交互、表情显示、多种动作
- 灵活的扩展能力:基于MCP协议的强大控制扩展
- 便捷的开发体验:完善的工具链和文档支持
随着ESP32系列芯片性能的不断提升和价格的持续下降,类似ESP-HI这样的低成本智能机器人项目将为更多人打开机器人开发的大门,推动整个行业向更加普及化和开放化的方向发展。
未来,我们可以期待更多基于类似理念的创新项目,让智能机器人技术真正走进寻常百姓家。
点赞/收藏/关注三连,获取更多ESP32和机器人开发干货!下期我们将深入解析ESP-HI的舵机控制算法与运动规划实现。
登录后查看全文
热门项目推荐
相关项目推荐
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
528
3.73 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
336
172
Ascend Extension for PyTorch
Python
338
401
React Native鸿蒙化仓库
JavaScript
302
353
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
883
590
暂无简介
Dart
768
191
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
114
139
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
openJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力
TSX
986
246