Arduino Nano 语音控制机器人:蓝牙 + 手机 APP 实现
元器件清单
| 元器件 | 数量 | 备注 |
|---|---|---|
| Arduino Nano R3 | 1 | 体积小,适合小车 |
| L298N 电机驱动模块 | 1 | 驱动两路直流电机 |
| HC-05 蓝牙模块 | 1 | 串口透传,波特率 9600 |
| 直流减速电机 + 轮子 | 2 | 差速转向 |
| 多功能机器人 PCB (可选) | 1 | 作者自制,也可用面包板/万用板 |
| 公母排针 | 若干 |
所需工具
- 热熔胶枪 (制作车身)
所需软件
- Arduino IDE
- MIT App Inventor (制作安卓语音控制 APP)
项目原理
Arduino 本身算力不足以做语音识别,但可通过蓝牙与手机通信。手机 APP 利用 Google 语音识别 API (需联网) 将语音转文本,解析关键词后通过蓝牙发送单字符指令给 Arduino:
| 语音指令 | 发送字符 | 动作 |
|---|---|---|
| 前进 / forward | F | 两电机正转 |
| 后退 / backward | B | 两电机反转 |
| 左转 / left | L | 左轮反转、右轮正转 |
| 右转 / right | R | 左轮正转、右轮反转 |
| 其他/停止 | 其他 | 停止 |
车身制作
作者使用 13cm×13.5cm PVC 板材,刀具切割后热熔胶粘接。电机安装在板内侧,结构紧凑。PVC 板易切割、粘接,适合 DIY 车身。
电路接线
电机驱动 L298N
| L298N 引脚 | Arduino 引脚 |
|---|---|
| IN1 (左电机) | 4 |
| IN2 (左电机) | 5 |
| IN3 (右电机) | 2 |
| IN4 (右电机) | 3 |
| ENA/ENB | 接 5V 或 PWM 引脚 (本项目接 5V 全速) |
蓝牙模块 HC-05
| HC-05 引脚 | Arduino 引脚 |
|---|---|
| TXD | RX (D0) |
| RXD | TX (D1) — 注意电平转换 |
| VCC | 5V |
| GND | GND |
注意:HC-05 RXD 接 Arduino TX 需分压 (Arduino 5V → HC-05 3.3V),或使用 3.3V 供电的 HC-05 模块。
供电
- 电机供电:7.4V 锂电池接 L298N 电机电源输入
- Arduino 供电:同一电池接 VIN 和 GND (板载稳压)
- 务必共地!
Arduino 代码
/**** Arduino 语音/声控机器人 ****
* 作者:Ashraf Minhaj
* 邮箱:ashraf_minhaj@yahoo.com
*/
int lm1 = 4; // 左电机 IN1
int lm2 = 5; // 左电机 IN2
int rm1 = 2; // 右电机 IN3
int rm2 = 3; // 右电机 IN4
char val;
void setup() {
pinMode(lm1, OUTPUT);
pinMode(lm2, OUTPUT);
pinMode(rm1, OUTPUT);
pinMode(rm2, OUTPUT);
Serial.begin(9600); // 蓝牙通信波特率
}
void loop() {
// 等待串口数据
while (Serial.available() == 0);
val = Serial.read(); // 读取指令字符
// Serial.print(val); // 调试用
// 前进
if (val == 'F') {
digitalWrite(lm1, HIGH);
digitalWrite(rm1, HIGH);
digitalWrite(lm2, LOW);
digitalWrite(rm2, LOW);
}
// 后退
else if (val == 'B') {
digitalWrite(lm2, HIGH);
digitalWrite(rm2, HIGH);
digitalWrite(lm1, LOW);
digitalWrite(rm1, LOW);
}
// 右转
else if (val == 'R') {
digitalWrite(lm1, HIGH);
digitalWrite(rm2, HIGH);
digitalWrite(lm2, LOW);
digitalWrite(rm1, LOW);
}
// 左转
else if (val == 'L') {
digitalWrite(lm2, HIGH);
digitalWrite(rm1, HIGH);
digitalWrite(lm1, LOW);
digitalWrite(rm2, LOW);
}
// 停止
else {
digitalWrite(lm1, LOW);
digitalWrite(rm1, LOW);
digitalWrite(lm2, LOW);
digitalWrite(rm2, LOW);
}
delay(10);
}
手机 APP 制作 (MIT App Inventor)
- 打开 MIT App Inventor,导入作者提供的
.aia源文件 - 核心组件:
- SpeechRecognizer:调用 Google 语音转文本
- BluetoothClient:连接 HC-05
- 按钮:触发语音识别、连接蓝牙
- 逻辑:语音识别后 → 转小写 → 关键词匹配 → 发送对应字符 (F/B/L/R)
- 生成 APK 安装到手机
APP 关键逻辑伪代码
当 语音识别完成:
文本 = 转小写(识别结果)
如果 文本 包含 "forward" 或 "前进": 发送 "F"
否则如果 文本 包含 "backward" 或 "后退": 发送 "B"
否则如果 文本 包含 "left" 或 "左转": 发送 "L"
否则如果 文本 包含 "right" 或 "右转": 发送 "R"
否则: 发送 "S" (停止)
使用步骤
- 给小车供电,HC-05 进入配对模式 (指示灯快闪)
- 手机蓝牙设置中配对 HC-05 (默认密码 1234 或 0000)
- 打开 APP,点击"连接"选择 HC-05
- 按住语音按钮说指令,松开发送
- 享受语音控制乐趣!
项目源码链接
- GitHub: https://github.com/ashraf-minhaj/speech-controlled-robot
- Fritzing 原理图文件随项目附带
制造工艺
- 蓝牙控制树莓派机器人:语音反馈功能构建指南
- Arduino与树莓派构建互联网控制视频流机器人完整指南
- 在树莓派 2 上用 Windows 10 IoT Core 构建语音控制机器人
- 用 Python 构建 Wi-Fi 控制的树莓派机器人:分步指南
- 废旧遥控车改装:Arduino + USB Host Shield 实现 Xbox 手柄无线控制
- Arduino UNO 自制循迹小车:从零构建自主巡线机器人
- Arduino Mega 驱动 Wii Nunchuk 控制 6 自由度机械臂
- 以太网远程控制机械臂 — 基于 Arduino 101 与 WIZ750SR
- MobBob:3D 打印智能机器人,Android 手机无缝控制,语音视觉一体
- PiBot:Arduino驱动的88键钢琴机器人,精准演奏MIDI乐曲
- 自主家庭助理机器人 O'nine - ROS + Alexa 语音控制 + 机械臂 + 麦克纳姆轮全向移动
- 蓝牙遥控避障机器人:打造智能远程操控小车