当前位置:首页  <  创客利器  <  【创客学堂】3D万圣节礼物之Arduino骷髅精灵...
【创客学堂】3D万圣节礼物之Arduino骷髅精灵
编辑:Techie 2013-11-21 浏览次数:1401

骷髅精灵—3D+Arduino+创客的融合

    3D打印技术,目前正火的一个热门话题。Arduino,一种开源,易用的控制器。两者结合,再融入一点创客们的精神力量,可以让一个骷髅头变成具有灵性的骷髅精灵!在万圣节来临之际,给大家介绍一个用Makerbot 3D打印机打印的骷髅+Arduino UNO控制器+红外线传感器制作的一个玩具:座在一个盒子上的骷髅头,两个眼睛可以盯着你,并跟随你的方向。拿它当作万圣节礼物一定相当不错呢,哈哈,可不要害怕哟。

 

骷髅精灵正看着你呢

    图1 骷髅精灵正看着你呢

骷髅头-3D打印

    3D打印现在可以说是爆发式的进行着发展,某宝网上搜3D打印,有1.33万个结果,内容也相当之丰富,各种3D打印机,有几千元的、也有几万元的;各种打印形式,FDM、SLS、SLA;各种打印机品牌,Makerbot、reprap、Mix2。。。。。。下面的骷髅头就是用Makerbot打印机+PLA塑料,采用FDM(熔融沉积式 ,Fused deposition modeling)技术打印出来的。当然,骷髅精灵的眼睛、底座,传感器的小盒子也是3D打印机的杰作。

Makerbot网站上的骷髅头3D模型 实际打印出来的骷髅头   3D打印的传感器盒子 红外避障传感器盒(3D打印)

    图2  骷髅头3D模型    图3  打印出来的骷髅头         图4  3D打印的传感器盒子    图5 内装的红外避障传感器

眼睛动起来—Ardino 控制器       

    当然要想让骷髅精灵动起来,你一定得为它加上电控,这里我仍然选择Arduino UNO控制器,简单易用,方便可靠,控制器首选;对于两只眼睛,负载很小,我选用了舵机里面个头最小的9g舵机;用于检测物品的传感器,我选的是mini红外避障传感器,可以调节动作范围以及灵敏度,方便实际应用环境。

Arduino UNO控制器   Arduino 传感器扩展板 v5.0

       图6 Arduino UNO 控制器                               图7 Arduino 传感器扩展板

 

眼睛动起来—机械结构

    下面再来看下眼睛动作的机械结构。找个不用的按动式圆珠笔,发挥我们的优良传统:拆!这里用到了两根圆珠笔芯当骷髅精灵眼睛的转轴,金属头也可以方便的与眼睛相连;两根轴的同步横轴也是用的笔芯;连接销用的订书钉;然后注意,不要用舵机的舵盘直接与同步横轴相连,因为自由度不够,舵机动作时会卡。我的解决方法是把刚才拆到的弹簧拿来,套在同步横轴上,舵盘连接到弹簧,间接控制转轴,OK了。这样不但解决问题,还可以通过转动弹簧,来调节眼睛的转动范围,一举两得。

骷髅头眼睛的内部结构

图8  骷髅头眼睛的内部结构

软硬兼施

    硬件制作完成了,再来写程序吧。功能是:当人走进骷髅精灵的“视力范围”时,它的眼睛就会看向你,会随着你的移动而转动。因为功能简单,程序写起来不难,只要考虑好细节,比如有两个人或很多人围着骷髅精灵时,它该看谁呢?看美女吗?我是让它谁也不看,目视前方,哈哈。话不多话,上程序。

#include <Servo.h>
Servo skulleye;
int sensor1 = 2;
int sensor2 = 3;
int sensor3 = 4;
int sensor4 = 5;
int pos = 0;
int state1, state2,state3,state4,state5;

void setup()
{
  pinMode(sensor1, INPUT);
  pinMode(sensor2, INPUT);
  pinMode(sensor3, INPUT);
  pinMode(sensor4, INPUT);
  //Serial.begin(9600);
  skulleye.attach(9);
  state1=state2=state3=state4=1;
  delay(500);

}

void loop()
{
  state1 = 1-digitalRead(2);
  state2 = 1-digitalRead(3);
  state3 = 1-digitalRead(4);
  state4 = 1-digitalRead(5);
  state5=(state1+state2+state3+state4);

  if(state5==4)//all on
  {
    skulleye.write(90);
  }

  if(state5==0)//all close
  {
    skulleye.write(90);
  }

  if(state5==1) // 1 sensor on
  {
    if(state1==1)
    {
      skulleye.write(20);
      delay(100);
    }
    if(state2==1)
    {
      skulleye.write(67);
      delay(100);
    }
    if(state3==1)
    {
      skulleye.write(114);
      delay(100);
    }
    if(state4==1)
    {
      skulleye.write(160);
      delay(100);
    }
  }

  if(state5==2)  //two sensors on
  {
    if(state1==1&state2==1)
    {
      skulleye.write(47);
      delay(100);
    }
    if(state2==1&state3==1)
    {
      skulleye.write(90);
      delay(100);
    }
    if(state3==1&state4==4)
    {
      skulleye.write(134);
      delay(100);
    }
    else
    {
      skulleye.write(90);
      delay(100);
    }
  }

  if(state5==3) //three sensors on
  {
    if(state1==0)
    {
      skulleye.write(114);
      delay(100);
    }
    if(state2==0)
    {
      skulleye.write(114);
      delay(100);
    }
    if(state3==0)
    {
      skulleye.write(67);
      delay(100);
    }
    if(state4==0)
    {
      skulleye.write(67);
      delay(100);
    }
  }

 /* Serial.println(state5);
  delay(1000);*/

}

 

 

 

收尾

    刚开始时效果不太理想,眼睛不是盯着不动,而是一直在挺激动的抖啊抖的,根本停不下来,原因是红外传感器的灵敏度要调整。当然如果你应用的场合感应距离不同,也要适当调整下感应距离。

    眼睛转动范围调整完毕,线路摆好,就可以合盖,试玩啦。暂时不要把它装进万圣节礼物包中,先来让大家感受下被骷髅精灵盯着的新奇吧!

骷髅精灵整体展示

图9  骷髅精灵整体展示


相关链接
骷髅头3D模型下载地址:
http://www.thingiverse.com/thing:29114
Arduino UNO 控制器:
http://www.alsrobot.cn/goods-141.html
传感器扩展板V5.0:
http://www.alsrobot.cn/goods-147.html
Mini 避障传感器:
http://www.alsrobot.cn/goods-41.html
Makerbot 3D打印机:
http://www.alsrobot.cn/goods-396.html
3D打印服务:
http://www.alsrobot.cn/goods-434.html