教小朋友们制作一条会动的纸片鱼

本帖最后由 Jason_G 于 2016-1-6 10:21 编辑

小鱼动起来:

一.首先看一下纸片小鱼的庐山真面目!(整个制作过程遵循的原则是:即插即用,焊接最少,方便拆卸和更换组件,能不剪线就不剪!)

2.jpg (40.87 KB, 下载次数: 5)

下载附件

保存到相册

2015-12-4 10:01 上传

1.jpg (56.81 KB, 下载次数: 5)

下载附件

保存到相册

2015-12-4 10:01 上传

正面和背面(为什么背面没有做完整的外壳将所有的接线隐藏??? 首先,小鱼的名字叫做:纸片鱼 。然后,正面看一眼看去是一条鱼,背面看就能很清楚的知道小鱼的所有结构)

背面连接线说明:

小鱼组件 beetle扩展板接口
控制鱼头的舵机线 --------> D5
控制鱼尾的舵机线 --------> D4
传感器 --------> D3
LED小灯负极 --------> D2
电池正负极 --------> 接线柱
舵机和传感器正负极 --------> 相应信号脚的正负极

主要动作:当检测到有人从旁边经过的时候,小鱼就会高兴的亮起眼睛,并且随机做出摇头,摆尾,游动三个动作中一个(怎么玩就看个人脑洞了)

二:材料加工过程

2.1 首先准备必要的制作材料:

电池槽,新版bluno beetle扩展板,bluno beetle,四节电池,舵机,LED,人体红外热释电传感器模块。(排名不分先后哦)

一个硬纸盒,偏硬的最好!鱼的身体就靠它了,我这里用的大小25*15就够了,喜欢吃鱼的可以做大一点哦!

2.2 开工制作:
没有艺术细胞,偷懒直接在网上download一条鱼,打印出来! 等下按照这个模板裁剪纸盒就行了。(鱼不能太小,小了就藏不住舵机,电池和主控板了)


A4纸打印的一条鱼!


把小鱼从A4纸上面裁剪下来,然后拓到纸板上,接下来沿着画线的地方裁剪!


把裁剪下来的鱼分成三段:鱼头,鱼尾和鱼身,中间的鱼身后面主要用来安放舵机,电池和主控板。
纸片鱼是一个平面的,舵机怎样才能控制鱼头和鱼尾动作了???

这个时候还要做两个直角支撑,用来连接鱼头鱼尾和舵机,材料依旧是刚才没用完的纸盒,看下连接效果!


直角用纸盒的边角做,这样省事,为了直角足够牢固,另外裁剪两个1.5*1.5cm左右的矩形纸片,按照上面的照片用热熔胶固定即可,很牢固!

接下来考虑后面我们需要固定主板,舵机和传感器等,这些组件该怎么摆放呢???
这里的方案是:除了人体红外热释电传感器和LED小灯放在鱼头部位外,其他所有的的组件都放在中间鱼生身部位,这样做能使整个鱼的重心在中间位置,在后面做个支架摆放的时候会比较稳定。
先来看下组件的基本布局!


组件整体布局图!


在确定组件的布局后,会发现中间的鱼身部位会对舵机的舵盘摆动有阻碍,所以在纸片挡住舵机舵盘摆动的位置需要剪一个槽口(鱼身最上面的两个槽口),这样还不够,除了这两个位置,舵机安装固定螺丝用的“耳朵”也会对运动中的鱼头和鱼尾有阻碍,所以在鱼头,鱼尾和鱼身的相同位置剪一个槽口(鱼身下面的两个槽口),在前面的布局中,传感器放在鱼头部分,这是为了做一个类似鱼鳃的效果,这个传感器是立体的,所以在鱼头部位的下面还需要剪一个槽口。让传感器能够放平。当槽口都剪好后再在合适的鱼头和鱼尾合适的位置打几个固定孔就好了(用来固定直角支撑和传感器)

纸片部分的准备差不多OK了,虽然尽量避免剪线和焊接,但是还有个三个地方是必须要处理一下的!

23.jpg (77.53 KB, 下载次数: 5)

下载附件

保存到相册

2015-12-4 09:34 上传

beetle和新版beetle扩展板的焊接(新版扩展板就快上线销售了哦,很方便哦,需要注意的是接线柱接的是5V电源,最好不要接超过6V以上的哦,切记,切记,切记!),焊接好后舵机,传感器和LED小灯的信号线和电源线就可以直接插在扩展板上了


电池槽的连线,电池是串联在一起的,需要将一个电池槽的正极和另一个电池槽的负极连接起来,可以焊接也可以用黑胶带缠绕。


猜猜这是干嘛的?小鱼的眼睛是一个LED小灯,在5V电压下工作不接电阻很快小鱼就瞎了,那就不好了,在这根线的中间串接一个1K左右的电阻,可以焊接也可能用胶带缠绕。最终这跟线一端连接在扩展板数字口D2的正5V端,一端连接LED的正极。

三.组装过程
前期准备工作到这个时候基本都做完了,东西很少,但是做起来要有耐性,接下来进入组装环节!

3.1 鱼头的组装

鱼头部位需要放LED和传感器模块,安装顺序是先按装LED,再用双面胶粘贴直角支撑,最后安装传感器模块。这样做直角支撑能压紧LED,传感器模块的固定又能压紧直角支撑,最终就会比较牢固。再将连接头部和舵机的舵盘用热熔胶水平固定在直角支撑上面,至此鱼头部安装OK!

3.2 鱼尾的组装

前面介绍怎么连接鱼头鱼尾的时候已经见过这条鱼尾巴了哈!鱼尾部没有传感器,固定好直角支撑就行了,先用双面胶固定,再用螺丝固定,再将连接尾部和舵机的舵盘用热熔胶水平固定在直角支撑上面,至此鱼尾部安装OK!

3.3 鱼身的组装

前面在介绍组件布局的时候也见过这张图片了,下面介绍一下怎么组装,中间鱼身的组装工作稍多,也很容易的:
首先,安装舵机,舵机背面贴上双面胶后粘在纸板上固定住,再在舵机底部的纸板上打两个固定孔,用来安装塑料支撑柱(2.6cm),一方面支撑舵机,防止舵机在运动中由于双面胶没有粘牢而下滑,另一方面后面需要在舵机上面放电池,支撑柱在小鱼立起来的时候起到支撑电池作用。舵机和支撑住安装好后,放上焊好beetle的扩展板,扩展板上面有四个固定孔,我们用最上面的两个孔将扩展板固定在合适的位置(合适的位置的原则是:不要露出来,不能阻碍舵机舵盘的转动)。

3.4 安装电池

四节7号电池放到两个电池槽里面,放在背面贴上双面胶,按照图片的位置摆放到舵机上面,但是这样摆放在小鱼立起来的时候电池很容易掉下来,怎么办呢???(看到固定柱的连个螺丝孔了吧,该他派上用场了)


剪一块和两个电池盒一样大小的硬纸板,在下面打两个孔,用螺丝固定在电池盒上面,这个时候电池就不会再小鱼立起来的时候掉下来了,只要硬纸板剪的和两个电池盒一样大,主板接口是不会被遮住的!至此鱼身组装OK!

3.5 鱼头鱼尾和鱼身的拼接


连接好舵机,传感器的信号线和电源线,感觉后面的线有点杂乱,可以用蛇形线包裹或者胶带粘在后面,还可以重新将线做短一点,那样会更好看。编写程序,将舵机调整到90度,然后将鱼头和鱼尾的舵盘固定在舵机上,尽量让鱼头,鱼身,鱼尾从一侧看处于同一个水平面就行了,如果安装好之后还有偏差可以在程序中调节舵机中值让小鱼的身体尽可能保持在同一平面。

四:底座的制作
纸片鱼已经制作完成,但是不能让它一直躺着啊,这里在制作一个底座,首先看一下底座长什么样!

2.jpg (64.45 KB, 下载次数: 5)

下载附件

保存到相册

2015-12-4 09:43 上传

1.jpg (34.18 KB, 下载次数: 5)

下载附件

保存到相册

2015-12-4 09:43 上传


制作材料(我用了较硬的纸板做,也可以用制作小鱼剩下的纸盒来做)


剪三快纸片,16*9.6cm就行,为什么这个尺寸呢???
看到上面的四条竖线了吗,这四条竖线的位置基本上都在每张纸片的黄金分割比的位置,为了最终小鱼摆放在支架上看起来比较舒服,将上面两个纸片用热熔胶固定在下面纸片黄金分割比的位置,再在上面纸片黄金分割比的位置剪两个槽口,将纸片鱼插在上面就行了。
(为什么用上面的尺寸? 答:因为这样大小看起来和小鱼比较搭配和稳定,另外容易计算黄金分割比的位置)

最终效果图
程序:#include<Arduino.h>#include<Servo.h>#include<DFRfishaction.h> //编写了一个小鱼动作的类库DFRfishaction fishaction; //用小鱼类库创建一个类int irPin = 3; //人体红外热释电传感器信号脚int ledPin = 2; //led小灯信号脚static unsigned long fishActionTime= 0; //控制小鱼动作的时间变量uint8_t fishActionMode = 0; //小鱼是否动作的标志static uint8_t fishServo = 0; //判断这个值得范围确定小鱼的动作模式void actionMode() //中断处理函数{fishActionMode = 1; //中断触发,小鱼进入运动模式}void setup() { //初始化工作fishaction.setup();fishActionTime= 0;pinMode(irPin,INPUT);pinMode(ledPin,OUTPUT);digitalWrite(ledPin,HIGH);attachInterrupt(1, actionMode, RISING); //中断定义和使能//Serial.begin(9600);}void loop() { if(fishActionMode) //进入运动模式并且开始计时 { fishActionMode = 0; fishaction.servoAttach(); fishActionTime = millis(); fishServo = random(100); digitalWrite(ledPin,LOW); } if(millis() - fishActionTime < 5000) //小鱼运动5秒 { if(fishServo <= 25) fishaction.frontAction(2,6); //25%的可能性是摇头 else if(fishServo >= 75) fishaction.rearAction(2,6); //25%的可能性是摆尾 else fishaction.forwardAction(2,2,1);//50%的可能性是游动 } else { digitalWrite(ledPin,HIGH); fishaction.stopAction(); //小鱼停止运动后舵机摆正并且释放舵机引脚控制 delay(200); fishaction.servoDetach();}}复制代码http://www.dfrobot.com.cn/community/forum.php?mod=attachment&aid=MjE3NjJ8MTZiMjMyMTUwMGU3ZTA2OTQ3ZWYzYjhhNzkyZWM2YmZ8MTQ1OTIxMjQ4Mg%3D%3D&request=yes&_f=.ino

fishtest.ino

(1.72 KB, 下载次数: 37)

2015-12-4 10:19 上传
点击文件名下载附件
三个动作的控制程序

上面程序需要的一个库文件:
http://www.dfrobot.com.cn/community/forum.php?mod=attachment&aid=MjE3NjN8NzcxZTVlMzlhOTcxZTEyMDQ2ZmRmZDA4YWJkNWQ2NjR8MTQ1OTIxMjQ4Mg%3D%3D&request=yes&_f=.zip

DFRfishaction.zip

(2.21 KB, 下载次数: 48)

2015-12-4 10:23 上传
点击文件名下载附件

因为论坛有小伙伴对这个小鱼感兴趣,下面是制作小鱼所用到的主要组件的连接地址:(电池槽和Beetle扩展板暂未上线,上线后再提供连接地址
Bluno Beetle控制器

TowerPro SG90舵机

人体红外热释电运动传感器

5毫米LED(还可以用RGB,灯光效果更给力)

标签: Arduino教程