hnyzcj 发表于 2015-8-7 06:36:23

基于语音识别的3D打印恐龙头骨

【项目介绍】      语音识别说通俗点就是与机器进行语音交流,让机器明白你说什么,这是人们长期以来梦寐以求的事情。我们可以形象得把语音识别比做为“机器的听觉系统”。语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高技术。语音识别技术主要包括特征提取技术、模式匹配准则及模型训练技术三个方面。语音识别技术车联网、手机上都有了广范的应用。你是不是也着急的想弄出点什么来呢?今天我们就带着大家一起使用DF的Voice Recognition 语音识别扩展板(Arduino兼容)制作一个可以语音控制的桌面恐龙头骨。具体功能如下:   1.语音控制恐龙头骨的眼睛亮起和关闭(左右分开控制);   2.语音控制恐龙头骨在云台上转动;   3.语音控制恐龙头骨发出叫喊声;   视频:http://www.tudou.com/programs/view/5KnQupYr4Jk/


【项目器材】
          1.75mm PLA(1公斤) 3D打印耗材   (橙色)
          DFRduino UNO R3                                                                                    1
          DFR0177 DFVoice Recognition 语音识别扩展板(Arduino兼容)               1
          DF15RSMG 360度舵机 19KG                                                                      1
          全方位蜂巢云台                                                                                          1
          LED(蓝色)                                                                                                2
          DFPlayer Mini 播放器模块                                                                            1

          小喇叭                                                                                                         1
【制作步骤】 第一部分恐龙头骨机械结构制作
A.3D打印模型      
         本次3D打印机器人共有4部分组成:头盖骨、下颚骨、支撑柱、底板。考虑到系统的稳定性,对打印的部件设置了不同的填充率,其设置为头盖部30%,下颚骨30%,支撑柱60%,底板60%,这样在转动过程中保持系统稳定。3D打印模型文件如下。另外由于头盖骨和下颚骨打印时间相对较长为了保证打印完成,我们对其设置supprot type :touching buildplate;此选项是给需要的地方加支撑。platform adhesion type:brim,此选项是给底边加裙边,防止打印过程中底面翘边。




打印完成后,将上述四部分组合成型。

第二部分云台部分组装            
      此次我们使用了DF的蜂巢云台,此云台外壳采用高强度ABS外壳,其六边外形不仅显得简洁美观,而且结合底盘的搭扣设计,可以云台相互衔接,组成蜂巢阵列。我们将打印的恐龙头骨安装在上面就可以实现展示平台的功能。
舵机安装

      将舵机摆放在云台外壳内侧相应位置,孔位对齐,使用 M4X10 圆头十字自攻螺丝将舵机固定住。 注意拧螺丝时,将螺丝拧进孔位后,不要直接拧紧,拧另一个螺丝,待四个螺丝都拧进孔位后,轮流旋入,并均匀拧紧,切勿上一个紧一个。


底板安装
      将舵机电线从外壳底部边缘槽位引出,电线槽位与其他槽位略有不同,你不会搞错的。将底板摆放在云台外壳底部相应位置,底板边缘凸起结构和外壳底部边缘凹槽匹配,卡入槽位。如槽位不匹配请转换一个槽位继续安装。使用 M3X10 沉头十字自攻螺钉将底板固定住,螺丝拧紧后应该陷入底板 0.5mm 左右。
舵盘安装

      将舵机塑料舵盘固定在舵机上,然后依次将滚针轴承放于上方。




总体安装
将云台转盘安装到舵盘上,注意对齐孔位,拧下螺丝。
第三部分电子部分
       1.将Voice Recognition 语音识别扩展板 对应插在UNO R3上。 注意在使用MP3模块时,请将通讯开关拨置到UART端。本模块      Arduino引脚占用:MP3模块 D0 D1 A4 A5;语音模块 D2 D4 D9 D10 D11 D12 D13                         
       2. 对LED进行延长,并将LED灯珠固定在恐龙头骨眼眶处。两颗蓝色LED分别接数字口3,8口。
       3.云台舵机的3根线(橙、红色、棕色)分别与数字口5、VCC、GND连接。          
       4.MP3MINI播放模块和小喇叭与语音识别拓展板连线如下,由于MP3模块占用了数字口0,1,所以在烧录完程序后再连线。否则可能会出现程序烧录失败的情况。
       (文件夹命名需要是mp3,放置在SD卡根目录下,而mp3文件命名需要是4位数字,例如"0001.mp3",放置在mp3文件夹下。
如需中英文命名,可以添加在数字后,例如"0001hello.mp3"或者"0001后来.mp3"。)


          5.将恐龙底板固定在云台上(视频中我没有固定在上面,转动过程中会脱离云台)


第四部分代码编写:
       本例中使用了库文件 voiceRecognition和DFPlayer-Mini-mp3,要将这两个文件夹拷贝到Arduino\libraries文件夹下,否则在程序编译过程中会报错。
#include <avr/wdt.h>
#include <Servo.h>
#include <VoiceRecognition.h>
VoiceRecognition Voice;
#define leftLed 8                        //定义Led引脚为8
#define rightLed 3    //定义Led引脚为3
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
Servo myservo;
int pos = 0;
void setup()
{   
mp3_set_serial (Serial);      //set Serial for DFPlayer-mini mp3 module
mp3_set_volume (30);
myservo.attach(5);
    Serial.begin(9600);
    pinMode(leftLed,OUTPUT);            //初始化LED引脚为输出模式
    pinMode(rightLed,OUTPUT);            //初始化LED引脚为输出模式
    digitalWrite(leftLed,LOW);            //LEFTLED引脚低电平
    digitalWrite(rightLed,LOW);            //RIGHTLED引脚低电平
    //mp3_set_serial (Serial);            //设置MP3模块通讯方式
    //mp3_set_volume (15);            //音量调节
    Voice.init();//初始化VoiceRecognition模块   
    Voice.addCommand("zhuo deng",0);   //添加指令,参数1:指令内容,参数2:指令标签(可重复)                                 
    Voice.addCommand("you deng",1); //添加指令,参数(指令内容,指令标签(可重复))
    Voice.addCommand("guan deng",2);   //添加指令,参数1:指令内容,参数2:指令标签(可重复)
    Voice.addCommand("前转",3);   
    Voice.addCommand("t后转",4);   
    Voice.addCommand("bo fang",5);//添加指令,参数1:指令内容,参数2:指令标签(可重复)                              
    Voice.addCommand("ting zhi",6); //添加指令,参数(指令内容,指令标签(可重复))
    Voice.start();//开始识别
    wdt_enable(WDTO_1S);//打开看门狗(防止死机)            

}
void loop()
{switch(Voice.read())               //判断识别内容,在有识别结果的情况下Voice.Read()会返回该指令标签,否则返回-1
{
    case 0://若是指令“zhuo deng”
      digitalWrite(leftLed,HIGH);   //点亮LEFTLED
      Serial.println("received'zhuo deng',command flag'0'");      //串口发送received"zhuo deng",command flag"0"
    break;
    case 1://若是指令“you deng”
      digitalWrite(rightLed,HIGH);   //熄灭LED
      Serial.println("received'you deng',command flag'1'");       //串口发送received"<span style="font-size: 14px; line-height: 1.5;">you deng</span><span style="font-size: 14px; line-height: 1.5;">",command flag"1"</span>【作品测试】         当完成以上步骤后,大家可以测试下作品的效果,分别对语音识别模块说出“左灯”、“右灯”、“关灯”、“前转”、“后转”、“播放”、“停止”语音指令看看恐龙头骨的左右眼和云台、MP3是否正常运作。


hnyzcj 发表于 2015-8-17 18:28:47

myluckyy 发表于 2015-8-17 17:53
真棒! 看着真是令人激动 。曾经复杂的技术能够这样公开化,平民化,接下来就要创意大爆炸了!   ...

是呀,这得好好感谢DF我们的国民良心企业,要不我们到现在还没得玩?

吹口琴的钢铁侠 发表于 2015-8-7 14:22:47

语音识别模块看起来效果很不错嘛

hnyzcj 发表于 2015-8-7 15:36:16

吹口琴的钢铁侠 发表于 2015-8-7 14:22
语音识别模块看起来效果很不错嘛

还行的,很好玩,上手也快。

大连林海 发表于 2015-8-7 20:35:51

真会玩

hnyzcj 发表于 2015-8-7 21:37:28

大连林海 发表于 2015-8-7 20:35
真会玩

哈哈,后面还有更好玩的东西呢?

swanglei 发表于 2015-8-11 20:39:29

合金弹头老师的帖子好详细啊。。。

可以把线藏在那个杆子里面啊。。。。下次自己设计一个吧~

hnyzcj 发表于 2015-8-11 21:08:39

swanglei 发表于 2015-8-11 20:39
合金弹头老师的帖子好详细啊。。。

可以把线藏在那个杆子里面啊。。。。下次自己设计一个吧~ ...

好呀好呀

myluckyy 发表于 2015-8-17 17:53:30

真棒! 看着真是令人激动 。曾经复杂的技术能够这样公开化,平民化,接下来就要创意大爆炸了! :D

20060606 发表于 2020-8-22 19:33:14

吹口琴的钢铁侠 发表于 2015-8-7 14:22
语音识别模块看起来效果很不错嘛

确实看起来不错
页: [1]
查看完整版本: 基于语音识别的3D打印恐龙头骨