查看: 4825|回复: 3

[项目] 现实版铁甲钢拳 2

[复制链接]
本帖最后由 nille 于 2014-8-26 17:50 编辑

   IMGP0130.JPG
        我们在上次的铁甲钢拳制作的基础上做了一些改进。在详细介绍改进过程之前,大家先来看段视频吧!


       OK,接下来我们介绍一下之后的完善过程。如果大家没有看过之前的内容也可以点击这里回顾一下。改进的地方首先看外观,如果大家留意会发现机器人多了图1中的几个部分——胸甲、背甲和手。手的小结构件可以替代之前用PVC材料制作的手,胸甲和背甲可以将控制板包裹起来,保护控制板的同时也让人形机器人更加的好看。
IMGP9935.JPG
图1 胸甲、背甲和手

  除了把机器人的外观做的更加好看之外,我们还想让它在动作的时候发出声音,就像游戏拳皇或者街霸一样。这就需要对之前的制作进行一些修改,上一篇完成后的机器人结构示意图如图2所示。
结构图.jpg
图2 控制示意图

  为了实现上面提到的功能,我们就不能让手柄的控制信号通过无线模块直接发给舵机控制板了,而是需要一个模块在收到手柄的信号之后,一方面可以发送指令给舵机控制板,另一方面可以实现语音播放。改造后的机器人端连接示意图如下。
添加处理板.jpg
图3 改造后的机器人端连接示意图

  因为机器人背甲和胸甲内的空间有限,所以我们选用了小巧的Flyduino来作为中间的信号处理板,如图4所示。Flyduino是一款基于Arduino的微型控制器,大小只有40mmX24mm,集成了12个数字口,8个模拟口,1个XBee无线数传接口可直接连接我们的无线模块。
1-500x500.jpg
图4 Flyduino

  另外,让机器人发声的语音模块我们选择的是DFRduino Player V2.0语音播放模块,如图5所示。该模块支持TTL电平串口,只需要将语音文件放置在SD卡中,就可以通过串口发送文件名信息播放相应的语音文件。同时模块还提供一个播放完毕提示端口,当播放完一首歌曲后,会输出一个高电平。
图片1.jpg
图5 DFRduino Player V2.0语音播放模块

  器件选定以后,就可以开始我们的改造工作了。
  第一步,安装语音播放模块。
  安装模块之前我们首先要将声音文件保存在存储卡中,根据机器人的动作我们找了以下几种动作的声音,并按照下表给各个文件命名。大家也可以根据自己的喜好选择拳皇、街霸之类游戏里的声音,但文件名一定要对上。
BIAO1.jpg

  声音文件拷贝完成后,我们将模块和扬声器都放在胸甲内(图1右上角),固定语音模块的螺丝刚好将扬声器卡住,然后用排线将模块的控制引脚和电源引出,如图6所示。这里要说明一点,本身套件中的胸甲是没有发声孔和模块安装孔的,这些需要用电钻自己钻。
IMGP0059.JPG

图6 安装语音模块

        连接语音模块的线缆需要从机器人的胸腔中穿过,以连接后面的Flyduino。

IMGP0085.JPG

图7 控制线缆穿过胸腔


  最后将胸甲固定在机器人身上,如图8所示
IMGP0090.JPG

图8 固定机器人的胸甲
  第二步,安装Flyduino。由于Flyduino没有安装孔,所以我们利用它背面的XBee无线数传接口将其固定在背甲上。我们先在背甲上开两个槽,其大小与无线数传接口一致。如图9所示。

IMGP0066.JPG

图9 背甲上的安装槽

        然后将Flyduino固定在背甲上,最后插上之前用到的无线模块。如图10、图11所示。


IMGP0073.JPG

图10 固定好Flyduino

IMGP0077.JPG

图11 插上无线模块


  第三步,将Flyduino、语音播放模块和舵机控制板3部分连接起来。


       由于模块之间都是通过TTL串口通信,而Flyduino只有一个硬件的TTL串口,且用在了与无线模块的通信上,所以需要用软件在Flyduino端模拟两个串口。在Arduino的库中有一个SoftwareSerial库,定义了一个SoftwareSerial 的类,可以实现模拟串口,我们在代码中定义两个SoftwareSerial 的对象mySerial1和mySerial2,mySerial1占用引脚2、3,用来给语音播放模块发送指令;mySerial2占用引脚4、5,用来给舵机控制板发送指令。定义对象的代码如下。
  1. SoftwareSerial mySerial1(2, 3);        //模拟串口1,用来发送音频指令
  2. SoftwareSerial mySerial2(4, 5);        //模拟串口2,用来发送动作指令
复制代码
  对照上一期中的动作表以及这次的声音表,我们能够得到一张声音动作对照表。
BIAO2.jpg
  根据这张表能够很方便的完成Flyduino中的程序,源代码如下:
  1.   #define MusicEnd 6                //用引脚6来检测声音文件是否播放完毕
  2.   
  3.   SoftwareSerial mySerial1(2, 3);        //模拟串口1,用来发送音频指令
  4.   SoftwareSerial mySerial2(4, 5);        //模拟串口2,用来发送动作指令
  5.   
  6.   char w;                                                //接收字符
  7.   int flag=1;                                        //音频结束标志,初始为1
  8.   
  9.   void setup()  
  10.   {
  11.     Serial.begin(57600);                        //串口波特率,57600
  12.     mySerial1.begin(19200);                //模拟串口1波特率19200
  13.     mySerial2.begin(9600);                //模拟串口2波特率9600
  14.     pinMode(MusicEnd, INPUT);        //第6脚接收音频结束标志
  15.   }
  16.   
  17.   void loop()
  18.   {
  19.     if(Serial.available()>0)                        //判断串口是否收到数据
  20.     {
  21.       w = Serial.read();                        //读取串口数据
  22.       if(flag==1)                                //当音频结束标志位为1的时候,播放音频
  23.       {
  24.               if(w==1||w==2||w==7||w==8||w==12||w==13||w==14||w==15)
  25.   {
  26.                         //播放“yidong”这个音频文件,\r\n表示换行回车
  27.   mySerial1.print("\\yidong\r\n");        
  28.   }
  29.               else if(w==3||w==4)
  30.                 mySerial1.print("\\bai\r\n");                //摆臂
  31.               else if(w==5||w==6)
  32.                 mySerial1.print("\\quan\r\n");        //出拳
  33.           else if(w==9||w==16)
  34.                 mySerial1.print("\\dao\r\n");                //跌倒起身
  35.       }
  36.       if(w!=0)
  37.       {
  38.                     mySerial2.write(w);                        //动作指令通过TTL电平串口直接发给机器人
  39.               flag=0;                                        //音频结束标志置0
  40.             }  
  41.             if(digitalRead(MusicEnd) == LOW)
  42.   flag=1;                                                //检测到语音播放完毕后将标志位至1
  43.   }
复制代码
IMGP0099.JPG

图12 连接各个部分


  代码完成并下载到Flyduino中以后,按照图12完成这几部分的连接,Flyduino和语音播放模块的电源均取自舵机控制板,语音播放模块的排线连接到Flyduino的引脚2、3、6,舵机控制板的TTL串口连接到Flyduino的4、5。    最后一步,将背甲安装在机器人身上,换上套件中手的小结构件。如图13所示。
IMGP0112.JPG

图13 安装上背甲

  至此,我们的格斗机器人就算完成了。开始战斗吧!!
IMGP0121.JPG         

       To be continued...


        
   相关链接:FlyduinoPlayer module





Jane  高级技匠

发表于 2014-8-14 10:02:06

楼主视频看不了~
回复

使用道具 举报

nille  高级技师
 楼主|

发表于 2014-8-22 12:47:50

回复

使用道具 举报

nille  高级技师
 楼主|

发表于 2014-8-22 12:52:44

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2021 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail