本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

会说话的智能人形机器人—Mofiza

发布时间:2022-05-17
分享到:

会说话的智能人形机器人—Mofiza

发布时间:2022-05-17
分享到:

我准备做一个会说话、会看、会反应的智能机器人!并且这个机器人“Mofiza”可以对她的周围环境做出反应。

背景

自从我看到制作会说话的机器人以来,我就看到人们实际上使用其他开发板而不是 Arduino 来制作会说话的机器人。但是完全有可能用 Arduino 制造一个人形机器人,它可以说话并添加许多伺服器来使其移动。那么让我们开始吧:

构建

第 1 步:您需要的零件

  • Arduino Pro mini(5v 16 Mhz)[任何板都很好,但我用它来使它变小)
  • 用于连接 pcb 的母头针
  • 公头针
  • Vero Board 制作电路
  • SD卡TF模块(让它说话)
  • 微型 SD 卡(不超过 2GB)
  • 3x IR 接近传感器
  • 3x 伺服电机(我用的是微伺服 sg90)
  • 纸板做身体

第 2 步:连接红外传感器和机身

用任何你想要的东西做一个身体,我用纸板做的。这很简单。

我已经用带状电缆焊接了红外传感器,就像这样,一端有一个母头,然后在两只眼睛中添加了两个,在胸部添加了一个。

如果机器人在胸部传感器中检测到任何东西,它会发出欢迎信息,如果任何眼睛传感器很高,它会说“啊啊……不要碰我的眼睛”。并且其中的伺服将向上移动。

第 3 步:电路

电路看起来有点复杂,但也不是很简单,你可以用一节电池给它供电。将电路和所有其他组件焊接在 Vero 板上,并在头和手上添加其他伺服。

第 4 步:代码

编码前:

需要为这个机器人使用两个库:

  • TMRpcm.h - 用于从 SD 卡播放音频 - 谈话https://github.com/TMRh20/TMRpcm
  • ServoTimer2.h - 避免与 TMRpcm 冲突并使用 timer2 运行伺服电机,因为 TMRpcm 在 arduino 上使用 Timer1。https://create.arduino.cc/projecthub/ashraf_minhaj/how-to-use-servotimer2-library-simple-explain-servo-sweep-512fd9?ref=user&ref_id=507819&offset=1

这是表示欢迎的代码,您可以制作自己的环境和代码。在开始编写代码之前,您必须添加 ServoTimer2 库。机器人也不会跑。

代码:

#include "ServoTimer2.h"
#include#define SD_ChipSelectPin 10
#include"TMRpcm.h"
#includeTMRpcm tmrpcm;
ServoTimer2 matha;
ServoTimer2 lhand;
ServoTimer2 rhand;
int in1= 6;int in2= 7;int in3= 8;
void setup() 
{ matha.attach(2); 
lhand.attach(3); 
rhand.attach(4); 
tmrpcm.speakerPin=9; 
Serial.begin(9600); 
if(!SD.begin(SD_ChipSelectPin)) 
{  Serial.println("SD FAIL");  return;  
}
}
void loop() 
{  
if(!(digitalRead(in3)))  
{   tmrpcm.play("welcome.wav");   
 lhand.write(2500);    
delay(2000);    
lhand.write(1200);  //handshake position        
delay(9000);      
}     
else 
{    
lhand.write(300);  
rhand.write(1700);  
matha.write(1500); }
}

第 5 步:完成
现在只需启动它,你就完成这个项目了。到此,智能机器人制作完成。

欢迎功能代码:

#include "ServoTimer2.h"
#include#define SD_ChipSelectPin 10
#include"TMRpcm.h"
#includeTMRpcm tmrpcm;
ServoTimer2 matha; //matha means HEAD
ServoTimer2 lhand;
ServoTimer2 rhand;
int in1= 6;int in2= 7;int in3= 8;
void setup() 
{ matha.attach(2); 
lhand.attach(3); 
rhand.attach(4); 
tmrpcm.speakerPin=9; 
Serial.begin(9600); 
if(!SD.begin(SD_ChipSelectPin)) 
{  Serial.println("SD FAIL");  return;  
}
}
void loop() 
{  
if(!(digitalRead(in3)))  
{   tmrpcm.play("welcome.wav");   
 lhand.write(2500);    
delay(2000);    
lhand.write(1200);  //handshake position        
delay(9000);      
}     
else 
{    
lhand.write(300);  
rhand.write(1700);  
matha.write(1500); }
}

如果您对此项目有任何想法、意见或问题,请在下方留言。

以上内容翻译自网络,原作者:Ashraf Minhaj,如涉及侵权,可联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论