Pages

Subscribe:

Ads 468x60px

Labels

2013年8月9日 星期五

盒仔——基于Arduino的遥控机器人

LeoLite 2012-08-24 20:39
LeoLite 2012-08-24 20:39
/gkimage/zc/ev/ko/zcevko.png
DIYer:Leo
制作时间:1天
制作难度:★★☆☆☆
GEEK指数:★★★☆☆
盒仔第二版。
BOXZ,昵称盒仔。是一款开源的互动娱乐平台!我们将Arduino,亚克力板和纸模型创意的结合在一起,让大家可以快速搭建自己的遥控玩偶,开展互动体验,而它的组装就像搭乐高积木一样简单!而盒仔的外形和功能完全取决于您的创意。我们可以用它来搞足球比赛,角色扮演,赛车或对战,甚至拍MV!
我们希望通过盒仔,让大家把更多的精力放在创意和互动上,让每个喜欢DIY的人都能拥有自己的小机器人,最最重要的是可以拿出来与大家进行互动,分享快乐,而不是静静躺在实验室里。
大家可以在家里制作BOXZ,快速体验互动机器人的魅力。BOXZ对材料没有什么要求,可以是硬纸板,PVC塑料等任何2MM厚度的材质。我们推荐使用2MM厚的硬纸板,因为其价格便宜且加工容易,美术用品商店就有,大概10元一张。

1   材料和工具

1.1   工具清单

/gkimage/ft/xc/wx/ftxcwx.png
  • 壁纸刀(最好用如图小款窄刀片,宽刀片切槽费劲)
  • 钢板尺
  • 双面胶(5MM宽度最佳)
  • 螺丝刀(小号一字和十字各一个)
  • 电烙铁和焊锡丝(如无,就多缠几圈线然后绑胶带吧)
  • 斜嘴钳
  • 万用表(安全第一)
  • 铅笔(可无)
  • 纸胶带(备用,当购买的硬纸板厚度不足2MM时,可用此紧固)
  • 电钻(如无,就用壁纸刀吧)

1.2   材料清单

/gkimage/dw/4q/wt/dw4qwt.png
/gkimage/07/8o/5q/078o5q.png
/gkimage/px/7u/md/px7umd.png
/gkimage/6r/2q/hh/6r2qhh.png
  • Arduino 2009 328P 主控 x 1 (也可以是UNO)
  • Arduino 电机驱动板 x 1 (要求可堆叠,极力推荐ladyada.net设计的Arduino兼容全功能电机驱动板)
  • Arduino 蓝牙控制板 x 1 (要求可堆叠,当然也可以采用传感器扩展板+蓝牙板,或者Zigbee板,本文只介绍蓝牙)
  • TT减速齿轮箱 x 2
  • 130电机 5V x 2
  • 65MM 塑料车轮 x 2
  • 4节5号电池盒 x 1
  • 面包线 x 4
  • Arduino USB线缆一根(用于下载程序)
  • 五号电池 x 4(如为1.2V充电电池,需要五节)
  • 2MM厚白色硬纸板(但厚度尽量是2MM,虽然1.6MM也勉强可以,但是硬度不够,需要用纸胶带加固)
  • M1.0x30MM 螺丝+螺母 x 6
  • M3x10MM 六角铜柱 + M3螺母 x 3(长度可以是5-20MM范围内,推荐用10MM长的)

2   二. 方盒结构件制作部分

在开始制作之前,我们先来了解一下盒仔的机械结构吧
/gkimage/ig/o3/ww/igo3ww.png
上图就是盒仔板块一览,盒仔是由大小不等的板块构成,板块和板块之间采用插入式连接,因此不需要任何螺丝等紧固件。但是盒仔和其他部件,例如电机之间的连接就只能通过螺丝螺母了。这里面最大的板子外围尺寸为128x128MM,也是我们盒仔的外壳尺寸。这样的板子一共有五块,包围了整个盒仔,我们称之为大板。其中还有些尺寸各异的支撑板,用来支撑盒仔内部的Arduino模块和电机。值得一提的是,在最新的Base图纸中,我们已经优化掉了P006,同时在即将发布的Pro中,P007也会消失,我们一直致力于让大家可以以一种最简单的方式快速构建盒仔,就像搭积木一样简单。
/gkimage/s3/ab/1w/s3ab1w.png
首先将下载好的BOXZ Base图纸和皮肤打印到A4纸上
先把皮肤放到一边,我们需要先把图纸进行裁剪到合适的大小,大概距离边线10MM左右即可
然后把图纸进行简单的排版,用双面胶把裁减好的图纸粘贴到硬纸板上,记得双面胶要粘贴在板块的线框以内,每个大板4个,其他2个即可,主要是固定作用。图纸在裁切完后是丢掉的,因此粘贴时间不能过长,太久了的话双面胶固化了,图纸撕下来可能会影响硬纸板的效果。
/gkimage/3w/8w/tv/3w8wtv.png
首先用裁纸刀将各个板块裁成一块,一块的。然后对需要开孔的用电转进行开孔,如果没有的话,就用壁纸刀吧,但是注意孔不能开大了,否则螺丝就固定不住了。开完孔后就可以对边角进行修正,开槽。等一个板块的所有边线都裁切完成之后,就可以揭去图纸了。呵呵,一块纯手工打造的盒仔板块就算完成啦!
/gkimage/c9/8w/jr/c98wjr.png
陆陆续续对其他所有的板块进行裁切,并完成所有的板块,整个过程大概会占用你4-5小时,如下图。

3   板块的组装

/gkimage/pz/e1/m8/pze1m8.png
列表中对每一个板块的编号和名称都有定义,如果你对于第一次组装盒仔感到困扰的话,我们有一个建议就是根据上面的我们定义过的P0xx的编号,用铅笔对每一块进行标注,我们下面的组装过程会按照编号跟大家讲解。下图为盒仔的结构示意图,从图中大家可以大致了解各个板块之间的连接关系。我们的板块采用了对称设计,因此你几乎可以忽略安装时上下左右的方向问题,它们之间不分正反,可以相互替换。即使第一眼你觉得很复杂也没关系,只要按照我们的教程一步一步操作即可。
/gkimage/s4/yk/qr/s4ykqr.png
好的,下面我们开始介绍盒仔的组装。为了让大家更熟悉正安装过程,我们配合Sketchup效果图给大家解释整个组装过程。首先用到的是P003,我们一共有2块电机支撑板,用于连接和固定TT减速箱电机(以下简称电机)。在开始安装电机之前,大家可以先把P003实验性的插入P001,从而定义好一个方向,我们的电机都是在支撑板内侧安装的。然后就可以用紧固件分别把电机固定在P003的内侧了。如图每块P003与TT减速箱通过两个M1.0x30MM的螺丝固定。
/gkimage/ck/lc/un/cklcun.png
/gkimage/ly/3s/ix/ly3six.png
将安装好电机的2块P003插入P001,然后把P002插入P001,此时整个盒仔的支撑结构已经完成。这里强调一点,一定要注意安装的先后顺序,这很重要!
/gkimage/8f/m6/us/8fm6us.png
把电池盒用紧固件固定在P001上,这样我们的电机便牢牢的固定在了支撑板上。你可能会发现,此时的支撑结构还不是很稳定,在外力作用下依然有晃动。不要担心,我们还很很多板块没有安装,等你把盒仔板块全部组装完成之后,你就好发现它是多么的坚固稳定了。
另外对于电池盒我们要额外说明一下的是,我们推荐大家使用4节5号普通电池,其电压为1.5V(新电池一般能达到1.7V),4节即6V构成了我们系统的最低电压。如果你使用的是1.2V的充电电池,那么就需要更换成5节5号电池盒。
/gkimage/v3/12/vn/v312vn.png
将车轮安装在盒仔P003的两侧,此时一个盒仔的最小系统已经出来了。你可以直接用面包线将电机连接到电池盒上,做成一个简易的小赛车,呵呵。
/gkimage/sf/c6/bx/sfc6bx.png
将两块P004分别插入P001的两侧,然后装入两块P005,它们负责连接P002,P003和P004。此时你的小车应该已经非常牢固了!如果你所购买的硬纸板厚度不足2MM或者比较软的时候,我们建议你用纸胶带,对P002,P004和P005进行一个整体的加固,这会让你在安装外围板块的时候更轻松。
/gkimage/ao/3i/dk/ao3idk.png
现在盒仔的底板已经全部完成。这里我们要用到编号为P008的主控平台板,从中可以看出一共有三个孔位对应着Arduino主控上的三个固定孔。通过3个紧固件将Arduino主控固定在P008上,这里大家需要注意一下方向,两个孔的冲向盒仔的正前方。P008还有一个人性化的功能,即使你要用Arduino做其他有趣的事情,只要将P008向上一推即可取出,然后作为平台板放置到桌子上,不但方便大家调试,更重要的是安全!因为桌子上的细小的铜丝或其它金属物可能导致Arduino短路,这是非常危险的!
好的,下面我们可以通过USB线缆对Arduino的程序进行下载了,下载方法请参看Arduino基础教程。
/gkimage/fh/ux/ct/fhuxct.png
将装好Arduino的P008插入我们的盒仔底盘,插入P002,这里我们需要使用P007作为支撑垫板先插入P001中
/gkimage/ty/co/6x/tyco6x.png
然后将电机驱动板叠加到Arduino主控之上,下面就是连接各个电路部分了,不要慌,我们只有6根线哦!第一步,首先将电池盒的红线连接到电机驱动板的M+,然后将黑线连接至GND,电源部分完成!第二步,将电机连接到电机驱动板上,连接方法如图:P1-M1.1,P2-M1.2,P4-M2.1,P5-M2.2。其中P3是悬空的。第三步,确认电机驱动板的跳帽为短接状态(在电源端子旁边,默认为短接状态,如果取下跳帽,则电机驱动板和Arduino将需要独立供电)。
/gkimage/le/nj/gx/lenjgx.png
最后将蓝牙控制板也叠加在电机板之上,我们的电路部分就基本搭建完成了!这里需要注意一点,我们教程中使用蓝牙板有切换软硬串口的跳线功能,而板子的默认位置需要大家确认一下,只要按照图中2个红色方块所示调整好跳帽即可。
/gkimage/x5/cw/iq/x5cwiq.png
最后将两块P040,P020和P030四块外围板依次安装,(这只是一张实际安装效果图,图中两根我们做Pro版本测试的舵机线,蓝牙跳帽的位置是错的,请大家注意)
/gkimage/sk/lm/rv/sklmrv.png
/gkimage/4a/2h/27/4a2h27.png
最让人激动的时刻马上就要到了!盖上P050顶板,插入电池,一个Base版的盒仔诞生了!
/gkimage/oj/uc/03/ojuc03.png
测试通过的话,我们就可以开始制作皮肤了。

4   Arduino程序和调试

关于程序,我们列出初始化部分和主程序,以便让大家对其有个了解。全部代码大家可以点此下载 。这里要强调一点的是我们使用了ladyada.net设计的电机驱动库AFMotor,大家需要把解压后的文件放到Arduino安装目录libraries的文件夹下。
程序片段如下:
ARDUINO 代码复制打印
/*
BOXZ is is an open source robot platform for interactive entertainment!
We connected Arduino,Plexiglass(PMMA) Origami and your idea together,
so we can easily and quickly build a remote robot by ourself!
We can use it to playing football game, racing, fighting or some other interesting things!

Author: Guangjun Zhu
Email: [email]zgj0729@163.com[/email]

Code license: Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)
*/

#include 
#include 

/*
 b_motor_stop(): stop motor
 b_motor_com():  for Manual Operator
 b_servo_ini();
 b_servo_com();
 b_skill();
 */

//-------------------define motor----------------------------------------------//
AF_DCMotor motorL(1,MOTOR12_8KHZ);  //connect to M1
AF_DCMotor motorR(2,MOTOR12_8KHZ);  //connect to M2
int motor_speed = 200; //[modifid]motor speed 150-200,---min:100;max:255
int motor_delay = 400; //[modifid]delay time in step

//-------------------define servo----------------------------------------------//
Servo hand_l_servo;  // create servo object to control a servo
Servo hand_r_servo;  // create servo object to control a servo
int hand_l_pos = 90; //
int hand_r_pos = 90; //
int hand_delay = 1;  //[modifid] speed of hand

//------------------main program-----------------------------------------------//

void setup()
{
  Serial.begin(9600);
  b_motor_stop();
  b_servo_ini();
  delay(2000);  //waiting time
  Serial.println("Hello! BOXZ!");
}

void loop()
{
  int  key;
  if(Serial.available() > 0) {
    key = Serial.read();
    if(key >= 30 && key
从中我们可以看出,盒仔的主程序很少,调用了不同的功能子程序来实现其功能。盒仔是通过Arduino的串口将数据发送给蓝牙控制板,由笔记本电脑或者手机接收蓝牙串口数据,大家可以使用任何串口终端控制我们的盒仔。目前我们用windows7笔记本,MacBook和Iphone三种终端测试通过了蓝牙和Zigbee两种通讯模块,将来也会推出Wifi通讯。,由于软件还有很多功能需要添加,目前就暂不公布了,不过大家可以用串口助手实现操作,就像我们发布视频中的一样,操作也很方便。
盒仔Base的程序是通过接收来自于键盘按键来进行动作判断的,只支持单个的字符。而在盒仔 Pro的版本中我们将采用更强大的字符串通讯方式,让大家拥有更棒的互动体验!
盒仔的操作就像打电脑游戏一样,操作方式按键定义如下:
方向控制按键定义:‘w’-前进;‘a’-左转;‘s’-后退;‘d’-右转;‘ ’(空格)-急刹车 (如果你按下键盘的Shift键,将会激活点动模式,配合相应的方向键,例如W为向前一小步,A为向左转90°)
当然在我们提供的代码里面还包括舵机部分的控制,你可以用舵机控制左右手臂的摆动,点动等多种动作,具体定义大家可以看程序的注释,本教程以介绍盒仔 Base的安装为主,就不过多描述。

5   番外篇-皮肤制作

盒仔方盒整体尺寸:128x128x128MM
盒仔皮肤的基本尺寸:130x130x130MM
/gkimage/tv/9a/0e/tv9a0e.png
首先打印我们的皮肤,图纸大家可以从Github上免费下载,链接在本文最后提供。这里我们选择了Creeper,一共需要3张A4纸。
/gkimage/jx/gs/z0/jxgsz0.png
沿线裁剪皮肤,如图。
/gkimage/hx/5z/lo/hx5zlo.png
由于纸张较薄,所以裁剪后有些微翘。建议大家使用厚一点的A4纸张打印,即可避免此问题。
/gkimage/ni/ge/e6/nigee6.png
用双面胶粘贴在白色连接区域中,然后将每块皮肤粘贴在一起,这里建议大家使用5MM宽的双面胶。
/gkimage/pd/hl/hc/pdhlhc.png
由于纸张较薄的关系,这里用纸胶带进行了加固处理。
/gkimage/oc/6m/ue/oc6mue.png
皮肤制作完成,来看一下整体效果吧。
/gkimage/6v/r8/y9/6vr8y9.png
最后再来一张配合马里奥的合影,呵呵。

6   更多盒仔的故事

/gkimage/52/k2/bg/52k2bg.png
一个好的开始。
盒仔2号原型机的作者是我们团队的视频后期高手,他的儿子很喜欢愤怒的小鸟。于是他爹就给他做了个红色小鸟的盒仔皮肤,套在盒仔上面和儿子一起玩互动。想象一下您和家人在一起,控制一只愤怒的小鸟冲向一堆贴有钢盔猪的饮料瓶或者积木时的开心景象吧!
细心的大家可能会发现我们的文章里的照片实际使用的是P041板块,而不是BOXZ Base标配的P040。P041是在其基础上增加了舵机扩展槽,可以让大家安装9G舵机。P041将会出现在BOXZ Pro版本中,由于目前我们还需要验证其开槽位置是否恰当,所以暂时没有发布。
我们的盒仔已经在 点名时间 发布了,上面有更多关于盒仔的故事。如果大家喜欢,可以来支持我一票!
大家可以免费下载我们的 设计图纸
本教程中Arduino主控,电机驱动板和蓝牙控制板的图片来自互联网,归各自厂家所有,详细资料请登录网站查询。
幕后花絮和更多介绍
更多内容请见本文58L~62L

7   DIYer签到处

果壳DIY站QQ群:132647923, 2群:179240860,3群:155086317(加入时请报上你在果壳的个人主页地址,以防广告ID)
果壳DIY站微博: http://t.sina.com.cn/guokrdiy

沒有留言:

張貼留言