基于arduino的语音识别小车的设计与实现

(第一次发博客,记录自己的项目过程,如有参考,错误批评请指正)

我将用小白方式教程讲述如何用不到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板,再通过电机驱动小车转动

篇幅较多,参考下篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值