(第一次发博客,记录自己的项目过程,如有参考,错误批评请指正)
我将用小白方式教程讲述如何用不到60块的成本制作一个可以简单语音识别的小车,语音算法自行编写,包括数据集搭建,模型训练,实时语音输入,串口通信。
硬件准备:
arduino开发板,L298N电机驱动模块,2wd小车模型,若干杜邦线(便宜可以多买点),小螺丝刀,橡胶绑带或者小焊枪(因我我不会用焊枪,线路多用胶带)
这里不介绍各个板块的功能了,如果想学习单片机,可以参考Arduino官网的资料
话不多说,直接看连接成果:
总共分为,电源,电机驱动,还有arduino三个部分
这里放连接图:
模块/接口 | 连接方式 | 说明 |
---|---|---|
电池正极 | → 驱动L298N模块的 VCC | 电机电源(如12V,建议了解好自己需要的电源,不然低了容易带不动小车,高了容易烧坏电机,造成不必要损失) |
电池负极 | → 驱动模块的 GND | 共地 |
电池负极 | → UNO的 GND | 共地(这里如果L298N还有GND接口,也可以直接将GND->UNO的GND) |
驱动模块的 5V | → UNO的5V | 驱动模块逻辑电源独立供电 |
驱动模块的 EN1~EN4 | → 驱动模块的 5V | 启用通道(保持高电平,若L298N的EN已经与5V通过跳线帽连接即不必连接) |
控制信号(IN1~IN4) | → UNO的 D2~D5 |
方向控制信号 |
引脚 | 引脚 | 功能 |
---|---|---|
OUT1-OUT4 | 两个电机四个引脚(OUT1\2->电机A、OUT3\4->电机B) | 驱动电机 |
然后就可以串口连接UNO板和电脑了,这里需要用到arduino ide,关于编程工具需要简单的学习,有关于arduino ide工具的细节可以参考官网这里不再赘述,也可以直接跟着下面图片来
// arduino_control.ino
// 电机引脚定义
#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 5
void setup() {
// 设置引脚为输出模式
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600); // 初始化串口通信
}
void loop() {
if (Serial.available() > 0) {
char cmd = Serial.read(); // 读取串口指令
switch (cmd) {
case 'F': // 前进
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 'B': // 后退
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
case 'L': // 左转
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 'R': // 右转
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
case 'S': // 停止
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
}
}
}
仅仅是个简单的试运行代码,可以试试小车能不能跑起来
选择接口
注意这里,将UNO板和电脑连接好之后,要选择自己开发板类型,我的是国产mega2560
选好端口后就可以上传验证了
右边的箭头表示—>上传,左边验证。如果没问题这个时候小车就转动了,如果没转说明可能有以下问题:
先排查问题:
比如是连接线有没有连接牢固,接口连接有无松动,电源供电是否不足,驱动是否损害。
(1)杜邦线连接松动
解决方法:确定内芯的铁锡丝连接牢固,胶带绑紧
(2)接口连接错误,驱动接口损坏
解决方法:可以更换一些冗余接口,如L298N的输出OUT1-4更改成其余OUT接口,其余的接口类似
(3)电机故障问题
可以换新,小电机一般价格不贵
(4)电源不足(主要问题)
小车即有可能吃电压不够,查清楚驱动的电压以及UNO的电压,我使用的下面两款
我需要的是12V的电源,不然小车落地后大,电机马力带不动小车,所以要看清楚板块电压要求,能用到12V(如9-12V)尽量用12V,也可以给UNO板单独供电(不建议,因为增加成本)。
如果都调试好之后,小车应该能转动,这时可以修改UNO板上的代码,重新用大模型跑一个代码即可,然后上传,验证,这时可以断开电脑与UNO板之间的线路,会发现小车可以转动。
部分问题:
小车代码上传不成功,可能是有些UNO板需要将与电机驱动的接口断开后重新烧录。
或者代码问题,部分大模型跑代码没有你先前的串口连接数据,需要输入数据深度思考一下。
这时没问题就可以美化一下小车了,至于语音识别,下面分为两种:
(一)自行购买闭源,高集成的语音识别板(如:ASR PRO)
也是通过与UNO板串口连接即可,但是注意别忘记连接供电
有关语音识别板不做过多介绍
(二)编写语音识别代码,通过串口连接传输到UNO板,再通过电机驱动小车转动
篇幅较多,参考下篇