|
19| 0
|
[项目] 给小智AI装身体:FireBeetle ESP32-S3驱动四足机器人+2.8寸屏 |
|
本帖最后由 云天 于 2026-3-6 20:09 编辑 用语音唤醒AI,让它不仅能聊天,还能站起来、招手、动耳朵——这才是真正的智能伙伴! 【项目背景】 小智AI开源项目相信很多人都玩过,它把大模型装进了小小的ESP32开发板,让我们可以和AI面对面聊天。但你是否想过,让小智AI拥有一个“身体”?我利用FireBeetle ESP32-S3、2.8寸TFT触摸屏、六个舵机等硬件,给小智AI安装了一套四足机器人外壳,现在它不仅能听会说,还能通过语音指令做出各种动作——前进、后退、左转、右转、坐下、趴下、招手、动耳朵……甚至回答问题时还会配合点头、动耳朵卖萌! 【项目亮点】 1. 首次在FireBeetle ESP32-S3上成功驱动2.8寸320x240 TFT触摸屏,显示AI的表情、对话内容和设备状态,交互感直接拉满。 2. 完美集成六路舵机控制,让四足机器人能完成复杂的步态动作,且不干扰音频和屏幕显示。 3. 深度定制小智AI开源固件,通过MCP工具让AI直接调用舵机动作,你可以用自然语言指挥它:“向前走三步”、“开心地招招手”。 【硬件清单】
【软件准备】 1. 小智AI开源项目代码 克隆仓库:`git clone https://github.com/78/xiaozhi-esp32.git` 本项目基于小智AI v2.0.5版本开发。 2. 开发环境 安装ESP-IDF v5.1+ 配置FireBeetle ESP32-S3为目标芯片 【硬件连接】 根据我的配置文件 `config.h`,各模块引脚定义如下:
注意:由于ESP32-S3的PWM通道有限,我复用了LEDC定时器,将所有舵机挂载到同一个定时器(TIMER2)上,使用不同通道(2~7),避免了与屏幕背光(可能占用通道0/1)的冲突。 【硬件组装】 ![]() ![]() ![]() ![]() ![]() ![]() 【软件修改与代码解析】 1. 添加舵机控制类 为了使AI能控制舵机,我编写了 `ServoController` 类,封装了PWM输出、角度转换、平滑运动、扫描等功能。核心代码位于 `servo_controller.cpp` 和 `servo_controller.h`。 关键方法: `SetAngle(int angle)`:直接设置舵机角度(0~180) `RotateClockwise(int degrees)`:顺时针旋转指定角度 `SweepBetween(int min, int max, int speed)`:在区间内往复扫描 使用FreeRTOS任务处理命令队列,保证运动不阻塞主循环 2. 自定义板级文件 小智AI支持多款开发板,我需要为FireBeetle ESP32-S3 + 屏幕 + 舵机创建新的板级配置。在 `boards/` 目录下 `bread-compact-wifi-lcd` 文件夹,包含 `compact_wifi_board_lcd.cc` 和 `config.h`。 在 `compact_wifi_board_lcd.cc` 中: 继承 `WifiBoard` 类,重写 `InitializeSpi()`、`InitializeLcdDisplay()` 等函数以适配ILI9341屏幕。 在 `InitializeServoController()` 中创建六个舵机控制器实例,分配不同的LEDC通道。 在 `InitializeTools()` 中通过MCP Server注册一系列舵机动作工具,让AI可以调用。例如: 这样,AI在对话中理解到“向前走三步”时,就会调用该工具,执行定义好的步态函数。 3. 步态设计 参考四足机器人的常见步态,我实现了对角线交替步态,确保机器人在运动中的稳定性。以 `WalkForward` 为例: 由于机械安装差异,你可能需要微调角度正负和基准值(如85/95/100),确保四条腿能平稳交替。 【屏幕显示】 通过 `esp_lcd` 驱动ILI9341,小智AI原生的UI会自动显示在屏幕上,包括表情、对话文字、WiFi状态等。我在 `config.h` 中正确配置了分辨率、镜像、颜色顺序等参数。 【PCB设计】![]() ![]() 【编译过程】 1. **焊接/连接硬件**:按照引脚表连接所有模块。建议先用面包板测试,确认每个舵机、屏幕、音频都能正常工作。 2. **编写配置文件**:将上述 `config.h` 和 `compact_wifi_board_lcd.cc`修改后 放入 `boards/bread-compact-wifi-lcd/` 目录。 3. **编译固件**: 在menuconfig中,选择“Board Type”为“Bread Compact WiFI + LCD”,LCD Type选择“ILI9341 240*320”。保存退出。 4. 测试:首次烧录后,手机连接小智AI的WiFi热点进行配网(xiaozhi.me教程)。然后对着麦克风说“你好”,机器人应该会动耳朵回应,屏幕显示表情。尝试说“站起来”、“向前走两步”、“招招手”等,观察动作是否符合预期。如有偏差,调整步态函数中的角度和延迟。 【使用效果】 (面包板测试) (PCB电路板、亚克力外壳) 经过调试,我的四足机器人已经能稳定完成以下动作: 基本姿态:站立、坐下、趴下 移动:前进、后退、左转、右转(可指定步数和幅度) 交互动作:招手(右前腿)、动耳朵(左右耳独立摆动)、点头(身体前倾) 复合动作:开心招手(先动耳朵再招手)、回答问题时轻微动耳朵 AI还能根据对话内容主动调用动作,比如当它被夸奖时,会开心地摇耳朵;当它需要思考时,会微微点头。屏幕上的表情也随之变化,整个互动过程非常生动。 【总结与展望】 本项目成功为小智AI开源项目增加了物理实体,让它从单纯的语音助手变成了一个有表情、能行动的机器人伙伴。通过自定义板级文件和舵机控制类,我们不仅驱动了2.8寸大屏,还实现了多路舵机的精准控制,且不干扰原有的音频和网络功能。 未来可以做的改进: 增加更多传感器,如超声波避障、陀螺仪姿态稳定。 优化步态,实现更流畅的行走和转向。 添加触摸屏交互,直接点击屏幕触发动作。 通过WiFi远程控制,让机器人成为家庭监控小助手。 如果你也对让AI拥有“身体”感兴趣,不妨试试这个项目,让你的小智AI动起来!有任何问题欢迎在社区交流。 【附件】 完整代码已打包,可下载参考。 bread-compact-wifi-lcd.zip |
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed