Arduino + BitVoicer Server 语音控制二轮机器人:从硬件到语音指令全流程
核心硬件清单
| 元件 | 数量 | 关键参数/备注 |
|---|---|---|
| Arduino UNO R3 | 1 | 亦可用 DUE 增加语音反馈 |
| Pololu Dual MC33926 电机驱动扩展板 | 1 | 5~28V, 3A 连续/峰值 5A,库函数 setSpeeds(左,右) 正反转对应正负值 |
| SparkFun XBee Shield | 1 | 配合 Microchip RN171VX WiFi 模块,串口透传,兼容 XBee 引脚排布 |
| Microchip RN171VX WiFi 模块 | 1 | 峰值电流 240 mA,需独立稳压 |
| SparkFun 电容麦克风模块(带前置放大) | 1 | 模拟输出,增益约 100×,供电 3.3V/5V 均可 |
| 2WD 智能车底盘(含 1:48 减速电机、编码器码盘、4×AA 电池盒) | 1 | |
| LM1117-3.3V 稳压器 + 10 μF 电解电容 | 各 1 | 为 ADC 提供纯净基准,解决 WiFi 发射干扰音频采集 |
| 状态指示 LED ×4(含 330 Ω 限流) | 4 | 分别指示:服务器连接/数据转发/识别引擎就绪/唤醒词激活 |
| 9V 电池+DC 插头、AA 电池×4、杜邦线、螺丝/扎带 | 若干 |
关键硬件坑点与对策
- WiFi 发射干扰 ADC:在 XBee Shield 原型区焊接 LM1117-3.3V + 10 μF 给麦克风和 ADC 参考脚供电,彻底消除空包时的基线抖动(原 BitVoicer 监视器静默电平高达 35/100)。
- 串口复用:Shield 上的 DLINE/UART 拨码开关,上传代码拨 DLINE,运行拨 UART,切记!
- 麦克风隔震:铁丝支架+海绵隔离+毡布包裹万向轮,降低行驶震动耦合。
运动学规划(无里程计/超声波的开环控制)
- 实测全速 62.5%(PWM 250/400)直线速度 ≈ 13.7 cm/s
- 1 米需 7299 ms,其他距离按比例换算
- 弧线/原地旋转:单轮驱动或差速反转,需三角函数估算各轮行程
- 复合动作(正方形/三角形/圆形)在 BitVoicer 语音模式中用延时串联基础指令实现
Arduino 固件要点
指令常量(40 条基础字节指令)
const byte CMD_MOVE_FORWARD_1M = 8;
const byte CMD_TURN_LEFT_45 = 28;
const byte CMD_DO_CIRCLE = 29;
const byte CMD_COME_BACK = 30; // 结合 lastFwdCmd 返航
const byte CMD_SET_SPEED_FAST = 37;
// ...
执行控制变量
motorSpeed:当前速度档位,默认 NORMAL (250)cmdDuration/cmdStartTime/cmdRunning:毫秒级定时停止lastFwdCmd:记录最后一次前进指令,供COME_BACK反向执行
WiFi 连接管理
Connect():串口发$$$进入命令模式 →open 192.168.0.11 4194→exit- 心跳超时自动
Disconnect()重连
音频流向
ADC (A3) → BVSMic 缓冲 (64 字节) → BVSP 协议帧 → TCP 流 → BitVoicer Server 识别 → 字节指令回传 → RunCommand() 解析驱动电机
BitVoicer Server 配置要点
- 创建 Mixed 设备
ArduinoUnoWiFi,TCP/IP 填模块静态 IP - Cues 页启用 Start/End of Activated Period,发送 Int16 (1/0) 点亮/熄灭激活 LED
- Voice Schema:80+ 句式映射 40 字节指令,复合动作用
Delay字段串联 - 建议:设置默认指令、善用复制粘贴减少重复劳动
解决方案对象文件:Device.sof、VoiceSchema.sof 可一键导入。
运行验证
- 上传代码前拨 DLINE,上传后拨 UART
- 上电等待:WiFi 模块 LED 变常亮 → 三盏状态灯亮起 → 识别引擎就绪
- 说出唤醒词 → 第 4 灯亮 → 说指令 → 机器人动作
不足与改进方向
- 开环控制精度有限,底盘自带编码器码盘可加装光电编码器闭环
- 可增加超声波避障
- 换用 Arduino DUE 可实现本地 TTS 语音反馈
制造工艺
- 蓝牙控制树莓派机器人:语音反馈功能构建指南
- Arduino与树莓派构建互联网控制视频流机器人完整指南
- 基于 Arduino 与 Python 的可靠 RFID 考勤系统
- 互动陀螺仪 LED 显示:NeoPixel Ring + Arduino Pro Mini
- Android 手势遥控车:Raspberry Pi + Arduino 101 + 电机扩展板,I2T 协同控制
- 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
- Arduino + Android 蓝牙控制 Roomba Create 2 扫地机器人完整指南
- Arduino Mega 驱动 Wii Nunchuk 控制 6 自由度机械臂
- Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
- 语音控制家电:Google Assistant + 蓝牙 + Arduino UNO
- 在 Arduino Due 上实现语音识别与语音合成 - BitVoicer Server 方案
- PiBot:Arduino驱动的88键钢琴机器人,精准演奏MIDI乐曲