语音控制机器人
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
|
应用和在线服务
|
关于这个项目
机器人很酷。有一个可以四处走动的机器人听你的语音命令更酷。用Arduino制作这样一个语音或语音控制的机器人越来越酷了。因为 Arduino 便宜且易于调整。
开始制作吧,也可以看视频教程。
第 1 步:所需零件 图> 图>
机器人基于PCB。我设计用于不同机器人的 PCB。让我们看看我使用了哪些其他组件 -
电子:
- Arduino Nano - 1x
- L298n 电机驱动器模块 - 1x
- Hc05 蓝牙模块 - 1x
- 直流电机和兼容的车轮 - 2x
- 多功能机器人 PCB - 1x(链接)
- 一些男性和女性标题
制作身体:
- PVC 片材
- 热胶枪
软件:
- Arduino.ide
- 我制作的应用程序
就是这样,现在我们可以开始了。
第 2 步:原则:它将如何运作?
在开始真正搞砸事情之前,清楚地了解你要做什么总是好的。可能你不惹事,但我惹。
因此,Arduino 是一台微型计算机或微控制器。它没有足够的能力或能力来执行语音识别(截至目前)。但对我来说幸运的是,我的 PCB 板上有一个端口可以连接蓝牙模块。意思是,我可以将我们的 Arduino 无线连接到其他设备。我正在利用那件事。因此,我将不得不制作一个可以使用谷歌 API(需要互联网)执行“语音到文本”操作的 Android 应用程序,并且在收到文本后,它将通过蓝牙命令 Arduino。
所以,如果我说“前进”,机器人将得到“F”并向前移动。这就是概念。现在让我们实现它。
第 3 步:制作身体
我用 13 厘米/13.5 厘米的 PVC 板制作了这个机器人的底盘/机身。使用刀片/刀切割更容易,并且也适用于胶水。
正如您在视频中看到的那样,我切割了几块以在电路板区域内安装两个电机和轮子。然后把它们粘起来。
当你制作你的时,你不需要让它看起来完全像这样。你的机器人你的选择。
第 4 步:构建电路还是使用 PCB? 图> 图> 图>
在这里,我们再次指出它完全是您的选择。但是,要制作这样的电路需要大量布线,如果您使用面包板制作它,一个错误的连接就会妨碍整个项目。这就是我喜欢在我的项目中使用 PCB 的原因。
我使用 EasyEDA 设计了这个 PCB,并从 PCBWay.com 订购了它。 PCBWay 以更便宜的价格提供质量。您只需 5 美元即可获得 10 个多层 PCB。他们还赞助我觉得很棒的学生项目。
无论如何,我去了快速订购部分,我需要做的就是上传我的 PCB,系统会自动检测我的电路板的所有参数,我只选择了颜色。黑色是我最喜欢的,看起来它是多么闪亮和酷炫。更好,因为在他们的工程团队检查您的 PCB 之前,他们不会拿钱,很好!
从这里获取 PCB 板。
但是,如果您无法订购或使用此 PCB,则可以在面包板或 vero 板上进行。我已经为你上传了fritzing电路。从下面下载或从这里获取。
语音控制机器人原理图.fzz
第 5 步:连接电子设备 图> 图>
连接是直接的。如电路图中所示连接所有东西。我将从连接电机到电机驱动器开始 -
电机到电机驱动器,
- 电机 1 线连接到驱动器的一端,
- Motor2 转到另一端。
为了控制电机,
- L298n 电机驱动器上的电机 1 引脚连接到 Arduino 2 和 3 引脚(数字)。
- Motor2 在 4 和 5 上连接
蓝牙模块,
- Tx 到 Arduino Rx
- 接收到发送
- VCC 至 5V/VCC
- Gnd 到 GND(接地)
电池,
我为电机使用了 7.4V 电池,该电池连接到电机驱动器输入和 Arduino VIN 和接地引脚。需要公共接地连接。
然后我接上电池把所有东西都点亮了。意思是,我没看错。
第 6 步:编程 Arduino
这是一个简单的程序。程序检查字符,如果收到,则从左向右等。列表是 -
- 'F' - 转发
- 'B' - 向后
- 'L' - 左
- 'R' - 右
蓝牙模块连接在串口上,因此Arduino以9600 bps的速度通过串口进行通信。
我设置部分我定义了引脚和速率 -
void setup(){//initlize pinMode(lm1,OUTPUT);pinMode(lm2,OUTPUT);pinMode(rm1,OUTPUT);pinMode(rm2,OUTPUT);//设置pinMode(lm1,OUTPUT);pinMode(lm2,OUTPUT);pinMode(rm2,OUTPUT);//设置串行通信速率Serial.begin(9600);}
in mainloop 它检查通过串行接收的数据-
//检查arduino是否正在接收信号while(Serial.available() ==0);val =Serial.read(); //读取signalSerial.print(val);
然后是主代码,从这里下载。我在下面粘贴了整个代码 -
/**** Arduino Speech/voice Controlled Robot **** by Ashraf Minhaj* 发邮件至 [email protected]* 教程- ashrafminhajfb.blogspot.com*///声明 arduino pinint lm1 =4; //声明第一个电机引脚int lm2 =5;int rm1 =2; //右电机pinsint rm2 =3;char val;void setup(){//初始化pinMode(lm1,OUTPUT);pinMode(lm2,OUTPUT);pinMode(rm1,OUTPUT);pinMode(rm2,OUTPUT) );//设置串口通信速率Serial.begin(9600);}void loop(){//检查arduino是否正在接收信号while(Serial.available() ==0);val =Serial.read(); //读取信号//Serial.print(val);/*********For Forward motion*********/if (val =='F'){//Serial .println("FORWARD");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);} /*********Right************/else if(val =='R'){digitalWrite(lm1,HIGH);digitalWrite(rm2,HIGH);digitalWrite(lm2, LOW);digitalWrite(rm1,LOW);}/*********Left*********/else if(val =='L'){digitalWrite(lm2,HIGH); digitalWrite(rm1,HIGH);digitalWrite(lm1,LOW);digitalWrite(rm2,LOW);}/*********STOP*********/else{digitalWrite(lm1,LOW) );digitalWrite(rm1,LOW);digitalWrite(lm2,LOW);digitalWrite(rm2,LOW);}delay(10);}
上传代码,然后制作应用程序。
第 7 步:语音到文本的应用程序 图> 图> 图> 图> 图> 图> 图>
我使用麻省理工学院应用程序发明者制作了该应用程序。您可以根据需要编辑和自定义此应用程序。从这里获取 aia fie。
此应用程序使用蓝牙连接来控制机器人。为此,我需要将 HC05 蓝牙模块与我的手机配对。默认密码为 1234 或 0000。
此应用程序使用 google Speech to Text API 将我所说的内容转换为文本形式。然后它把句子变成小写,这样处理起来更容易。并使用 if else 语句进行匹配。如果用户说“转发”,请向 Arduono 发送“F”字母,它会继续前进。就是这样。
构建并保存为 APK 文件,或使用我的安装在您的手机上。
语音控制机器人原理图.fzz
第 8 步:启动机器人,运行应用程序并开始!
现在只需插入电池,即可使用 Android 应用与您的全新机器人玩耍!
感谢您的阅读。查看我最新的项目 -
代码
- 代码片段 #1
- 代码片段 #3
代码片段 #1纯文本
void setup(){ //初始化引脚的模式 pinMode(lm1,OUTPUT); pinMode(lm2,输出); pinMode(rm1,输出); pinMode(rm2,输出); //设置串口通信速率Serial.begin(9600);}
代码片段 #3纯文本
/**** Arduino Speech/voice Controlled Robot *** * by Ashraf Minhaj * 发邮件至 [email protected] * 教程- ashrafminhajfb.blogspot.com *///声明 arduino pinint lm1 =4; //声明第一个电机引脚int lm2 =5;int rm1 =2; //右电机pinsint rm2 =3;char val;void setup(){ //初始化pinMode(lm1,OUTPUT); pinMode(lm2,输出); pinMode(rm1,输出); pinMode(rm2,输出); //设置串口通信速率Serial.begin(9600);}void loop(){ //检查arduino是否正在接收信号 while(Serial.available() ==0); val =Serial.read(); //读取信号 //Serial.print(val); /*********对于前进运动*********/ if (val =='F') { //Serial.println("FORWARD");数字写入(lm1,高);数字写入(rm1,高);数字写入(lm2,低);数字写入(rm2,低); } /*********对于向后运动*********/ else if(val =='B') { digitalWrite(lm2,HIGH);数字写入(rm2,高);数字写入(lm1,低);数字写入(rm1,低); } /*********Right*********/ else if(val =='R') { digitalWrite(lm1,HIGH);数字写入(rm2,高);数字写入(lm2,低);数字写入(rm1,低); } /*********左*********/ else if(val =='L') { digitalWrite(lm2,HIGH);数字写入(rm1,高);数字写入(lm1,低);数字写入(rm2,低); } /*********停止*********/ else { digitalWrite(lm1,LOW);数字写入(rm1,低);数字写入(lm2,低);数字写入(rm2,低); } 延迟(10); }
Github
https://github.com/ashraf-minhaj/speech-controlled-robothttps://github.com/ashraf-minhaj/speech-controlled-robot示意图
语音控制机器人示意图_hUoWKpapKe.fzz制造工艺