乐高EV3接入小智AI:语音控制小车

2026-10-22 10:04:35 2阅读

家里或学校的柜子里大概率躺着一台乐高MINDSTORMS EV3,随着micro:bit、Arduino等开源硬件平台崛起,EV3渐渐被束之高阁。这篇文章用ESP32-S3 AI智能摄像头运行小智AI固件作为语音入口,通过MCP桥接远程控制EV3电机,让吃灰多年的EV3用"说话"来驱动。

系统架构

ESP32-S3 AI智能摄像头(小智AI固件)
 | MCP over WebSocket
 v
电脑端(MCP桥接器) --SSH(USB网络共享)--> 乐高EV3(ev3dev+Python)

EV3上ev3dev的Python版本较旧(3.5.3),无法直接运行小智MCP库,所以用电脑做桥接,EV3只负责执行电机控制。

硬件清单

硬件数量说明
乐高EV3主机1任意版本均可
大型电机2分别接在B口和C口
ESP32-S3 AI智能摄像头1运行小智AI固件
microSD卡1至少8GB,烧录ev3dev
USB数据线1连接EV3和电脑

关键步骤

1. 安装ev3dev:从ev3dev官网下载镜像烧录到SD卡,插入EV3开机即从SD卡启动。

2. 配置USB网络共享:在Windows网络连接中启用共享,EV3通过USB线联网。

3. 配置SSH免密登录:生成密钥对,将公钥复制到EV3。

4. 创建电机控制脚本:

#!/usr/bin/env python3
from ev3dev2.motor import MoveTank, OUTPUT_B, OUTPUT_C, SpeedPercent
import sys
action = sys.argv[1] if len(sys.argv) > 1 else "stop"
tank = MoveTank(OUTPUT_B, OUTPUT_C)
if action == "forward":
    tank.on_for_seconds(SpeedPercent(50), SpeedPercent(50), seconds=2)
elif action == "backward":
    tank.on_for_seconds(SpeedPercent(-50), SpeedPercent(-50), seconds=2)
elif action == "turn_left":
    tank.on_for_seconds(SpeedPercent(0), SpeedPercent(50), seconds=2)
elif action == "turn_right":
    tank.on_for_seconds(SpeedPercent(50), SpeedPercent(0), seconds=2)
else:
    tank.off()

5. 部署MCP桥接器:pip install mcp2xiaozhi mcp,创建服务器暴露control_ev3_motor工具,通过SSH让EV3后台执行。

关键:用nohup后台执行,SSH不等电机转完就返回,避免MCP调用阻塞。

6. 配置小智AI:在xiaozhi.me控制台创建智能体,获取MCP接入点。启动桥接器后即可语音控制。

踩坑记录

电机阻塞导致语音反馈超时:加nohup后台执行解决。Windows网络共享偶尔失效:重新勾选共享即可。SSH免密失效:重新复制公钥。

扩展思路

接入传感器让EV3自主决策;多台EV3编队行驶;部署到树莓派实现7x24运行;结合视觉识别自主行动。


作者:云天
链接:https://www.aiddithome.com/p/1441382fbfbb7a.html
本作遵循 [CC BY 4.0 署名] 许可,版权归作者所有。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
触底反弹的Tony
1楼 · 1小时前

电脑桥接+EV3执行的架构设计合理,各司其职

阿强焊点总飞
2楼 · 1小时前

踩坑记录太有价值了

阿伟不emo
3楼 · 1小时前

EV3+MCP+小智AI这个组合很有创意,老设备焕发新生

入门没多久的新手
4楼 · 1小时前

用nohup后台执行避免阻塞这个技巧实用